千家信息网

Ubuntu-16.04 部署 OpenStack Ocata<上>

发表于:2024-10-09 作者:千家信息网编辑
千家信息网最后更新 2024年10月09日,注:本文参照openstack官方文档部署,地址https://docs.openstack.org/。明明才10万字符,硬说超过20万,没办法,分篇。建议:配置时仔细核对,经多次实验,很多错误都是配
千家信息网最后更新 2024年10月09日Ubuntu-16.04 部署 OpenStack Ocata<上>

注:本文参照openstack官方文档部署,地址https://docs.openstack.org/。明明才10万字符,硬说超过20万,没办法,分篇。

建议:配置时仔细核对,经多次实验,很多错误都是配置失误造成的。


一、搭建基础环境

192.168.30.145 controller【2vCPU、4G内存、40G存储、双网卡】

192.168.30.146 compute【2vCPU、4G内存、40G存储、双网卡】


1.安装ssh并配置root密码

$ sudo apt install ssh$ sudo passwd rootEnter new UNIX password: Retype new UNIX password: passwd: password updated successfully


2.获取临时认证令牌

# openssl rand -hex 10bdb5cad50653d4e85b7d


3.添加阿里云镜像

# cp /etc/apt/sources.list /etc/apt/sources.list.bak# vim /etc/apt/sources.listdeb-src http://archive.ubuntu.com/ubuntu xenial main restricted deb http://mirrors.aliyun.com/ubuntu/ xenial main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe deb http://mirrors.aliyun.com/ubuntu/ xenial universedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates universedeb http://mirrors.aliyun.com/ubuntu/ xenial multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb http://archive.canonical.com/ubuntu xenial partnerdeb-src http://archive.canonical.com/ubuntu xenial partnerdeb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security universedeb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse


4.配置网络接口IP

# ip addr  # vim /etc/network/interfacesauto ens33iface ens33 inet staticaddress 192.168.30.145netmask 255.255.255.0gateway 192.168.30.2dns-nameserver 114.114.114.114# The provider network interface(配置第二个接口为提供者接口)auto ens34iface ens34 inet manualup ip link set dev $IFACE updown ip link set dev $IFACE down


5.配置host

# vim /etc/hosts192.168.30.145   controller192.168.30.146   compute


6.配置NTP时间协议

# dpkg-reconfigure tzdata                ##修改时区Current default time zone: 'Asia/Chongqing'Local time is now:      Tue Mar 28 20:54:33 CST 2017.Universal Time is now:  Tue Mar 28 12:54:33 UTC 2017.# apt -y install chrony               ##安装chrony时间同步软件


Controller Node

# vim /etc/chrony/chrony.confallow 192.168.30.0/24              ##设置允许该网段与自己同步时间# service chrony restart


Compute Node

# vim /etc/chrony/chrony.conf# pool 2.debian.pool.ntp.org offline iburstserver 192.168.30.145 iburst       ##设置时间同步服务器地址# service chrony restart# chronyc sources210 Number of sources = 1MS Name/IP address         Stratum Poll Reach LastRx Last sample===============================================================================^* controller                    3   6   377    33   -375us[ -422us] +/-   66ms


7.在所有节点启用openstack库、安装openstack客户端

# apt -y install software-properties-common# add-apt-repository cloud-archive:ocata# apt -y update && apt -y dist-upgrade# apt -y install python-openstackclient


8.安装并配置数据库服务(Controller Node)

# apt -y install mariadb-server python-pymysql# vim /etc/mysql/mariadb.conf.d/99-openstack.cnf[mysqld]bind-address = 192.168.30.145default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8# service mysql restart# mysql_secure_installation##运行该脚本来保证数据库安全,为root账户设置一个合适的密码


9.安装并配置Rabbitmq消息队列服务(Controller Node)

# apt -y install rabbitmq-server# rabbitmqctl add_user openstack openstack        ##添加OpenStack用户并配置密码Creating user "openstack" ...##允许openstack用户的配置、写、读权限# rabbitmqctl set_permissions openstack ".*" ".*" ".*"Setting permissions for user "openstack" in vhost "/" ...# rabbitmqctl list_users           ##列出用户Listing users ...guest[administrator]openstack[]# rabbitmqctl list_user_permissions openstack     ##列出该用户权限Listing permissions for user "openstack" .../.*.*.*# rabbitmqctl status         ##查看RabbitMQ相关信息# rabbitmq-plugins list      ##查看RabbitMQ相关插件 Configured: E = explicitly enabled; e = implicitly enabled | Status:   * = running on rabbit@openstack1 |/ ......# rabbitmq-plugins enable rabbitmq_management   ##启用该插件The following plugins have been enabled:  mochiweb  webmachine  rabbitmq_web_dispatch  amqp_client  rabbitmq_management_agent  rabbitmq_managementApplying plugin configuration to rabbit@openstack1... started 6 plugins.

浏览器输入http://localhost:15672,默认用户名密码都是guest。


10.安装并配置Memcached缓存服务【对认证服务进行缓存】(Controller Node)

# apt -y install memcached python-memcache# vim /etc/memcached.conf#-l 127.0.0.1-l 192.168.30.145# service memcached restart


二、配置 Keystone 认证服务(Controller Node)

1.创建 keystone 数据库

# mysqlMariaDB [(none)]> CREATE DATABASE keystone;       ##创建 keystone 数据库##对 keystone 数据库授权[用户名@控制节点...BY 密码]MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'192.168.30.145' \     IDENTIFIED BY 'keystone';MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \     IDENTIFIED BY 'keystone';MariaDB [(none)]> flush privileges;


2.安装并配置 Keystone

# apt -y install keystone# vim /etc/keystone/keystone.conf[database]---配置数据库访问[用户名:密码@控制节点]connection = mysql+pymysql://keystone:keystone@192.168.30.145/keystone[token]---配置Fernet UUID令牌的提供者provider = fernet# grep ^[a-z] /etc/keystone/keystone.confconnection = mysql+pymysql://keystone:keystone@192.168.30.145/keystoneprovider = fernet


3.初始化身份认证服务数据库

# su -s /bin/sh -c "keystone-manage db_sync" keystone


4.初始化Fernet keys

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone


5.配置引导标识服务

# keystone-manage bootstrap --bootstrap-password qaz123 \  --bootstrap-admin-url http://192.168.30.145:35357/v3/ \  --bootstrap-internal-url http://192.168.30.145:5000/v3/ \  --bootstrap-public-url http://192.168.30.145:5000/v3/ \  --bootstrap-region-id RegionOne


6.配置 HTTP 服务器

# vim /etc/apache2/apache2.confServerName controller# service apache2 restart                 ##重启Apache服务# service apache2 status# rm -f /var/lib/keystone/keystone.db         ##删除默认的SQLite数据库


7.配置管理账户

# export OS_USERNAME=admin# export OS_PASSWORD=qaz123# export OS_PROJECT_NAME=admin# export OS_USER_DOMAIN_NAME=Default# export OS_PROJECT_DOMAIN_NAME=Default# export OS_AUTH_URL=http://192.168.30.145:35357/v3# export OS_IDENTITY_API_VERSION=3


8.创建 service 项目

# openstack project create --domain default \  --description "Service Project" service+-------------+----------------------------------+| Field       | Value                            |+-------------+----------------------------------+| description | Service Project                  || domain_id   | default                          || enabled     | True                             || id          | 945e37831e74484f8911fb742c925926 || is_domain   | False                            || name        | service                          || parent_id   | default                          |+-------------+----------------------------------+


9.配置普通(非管理)任务项目和用户权限


a.创建 demo 项目

# openstack project create --domain default \  --description "Demo Project" demo+-------------+----------------------------------+| Field       | Value                            |+-------------+----------------------------------+| description | Demo Project                     || domain_id   | default                          || enabled     | True                             || id          | 2ef20ce389eb499696f2d7497c6009b0 || is_domain   | False                            || name        | demo                             || parent_id   | default                          |+-------------+----------------------------------+


b.创建 demo 用户

# openstack user create --domain default \  --password-prompt demoUser Password:Repeat User Password:+---------------------+----------------------------------+| Field               | Value                            |+---------------------+----------------------------------+| domain_id           | default                          || enabled             | True                             || id                  | 7cfc508fd5d44b468aac218bd4029bae || name                | demo                             || options             | {}                               || password_expires_at | None                             |+---------------------+----------------------------------+


c.创建 user 角色

# openstack role create user+-----------+----------------------------------+| Field     | Value                            |+-----------+----------------------------------+| domain_id | None                             || id        | 83b6ab2af4414ad387b2fc9daf575b3a || name      | user                             |+-----------+----------------------------------+


d.添加 user 角色到 demo 项目和用户

# openstack role add --project demo --user demo user


10.禁用临时身份验证令牌机制

# vim /etc/keystone/keystone-paste.ini[pipeline:public_api]# pipeline = admin_token_auth[pipeline:admin_api]# pipeline = admin_token_auth[pipeline:api_v3]# pipeline = admin_token_auth


11.重置 OS_AUTH_URL 和 OS_PASSWORD 环境变量

# unset OS_AUTH_URL OS_PASSWORD


12.使用 admin 用户,请求认证令牌(密码为admin用户密码)

# openstack --os-auth-url http://192.168.30.145:35357/v3 \  --os-project-domain-name default --os-user-domain-name default \  --os-project-name admin --os-username admin token issuePassword: +------------+-----------------------------------------------------------+| Field      | Value                                                     |+------------+-----------------------------------------------------------+| expires    | 2017-03-28T15:11:50+0000                                  || id         | gAAAAABY2m8mE9pMATPuFW9YpgoBMTg9mCI6GcmFeQAudwbhGiVblXZP  ||            | kmSmHc5aFwTZSIdjLzPJaMd1k16UZghj59v45Gvzdh6CLhSFGWPsT8rL  ||            | fRJD4eE1D_eRz2Jjjk5rDmwAHm5mmffuszJLSe4B2KJyBXkdmmznXL-A  || project_id | 2461396f6a344c21a2360a612d4f6abe                          || user_id    | 63ca263543fb4b02bb34410e3dc8a801                          |+------------+-----------------------------------------------------------+


13.使用 demo 用户,请求认证令牌(密码为demo用户密码)

# openstack --os-auth-url http://192.168.30.145:5000/v3 \  --os-project-domain-name default --os-user-domain-name default \  --os-project-name demo --os-username demo token issuePassword: +------------+-----------------------------------------------------------+| Field      | Value                                                     |+------------+-----------------------------------------------------------+| expires    | 2017-03-28T15:13:50+0000                                  || id         | gAAAAABY2m-eSIWmQg1SyZFaiGcP2kjHf742ktr8YcVH3Q4aHKTflDJ   ||            | RLAfgmeoDW2z1sbdHQmKQNSb--F-1Pn_hTFHYqgyMlIxYpEQxGhJ-rg   ||            | b0EuxUT9opwl0m5onaA5Cv_MBX6awxeity8Gh2dc50NUeYela5Yl4uSG  || project_id | 2ef20ce389eb499696f2d7497c6009b0                          || user_id    | 7cfc508fd5d44b468aac218bd4029bae                          |+------------+-----------------------------------------------------------+


14.创建脚本


a.创建并编辑文件 admin-openrc 并添加如下内容:

# vim admin-openrcexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=qaz123export OS_AUTH_URL=http://192.168.30.145:35357/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2


b.创建并编辑文件 demo-openrc 并添加如下内容:

# vim demo-openrcexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=demoexport OS_AUTH_URL=http://192.168.30.145:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

15.使用脚本


a.加载脚本

# . admin-openrc


b.请求身份认证令牌

# openstack token issue  +------------+----------------------------------------------------------+| Field      | Value                                                    |+------------+----------------------------------------------------------+| expires    | 2017-03-28T15:22:55+0000                                 || id         | gAAAAABY2nG_diuPBMl66vJye3mV3S7CWZKesIiSnbicq5XddujfHhc3x||            | PHni3iHWPcTQAjHoIEMTvSH6yKOQ6Z74QL6hVbshqP1dJrRJ6xEa9WvIk||            | F7H5j7lPmM7ncfVvr9k96gLJ6Uhz38R5qRnHBWkxrlNsgw1jdnAjxf5e || project_id | 2461396f6a344c21a2360a612d4f6abe                         || user_id    | 63ca263543fb4b02bb34410e3dc8a801                         |+------------+----------------------------------------------------------+


三、配置 Glance 镜像服务(Controller Node)


1.创建 glance 数据库

# mysqlMariaDB [(none)]> CREATE DATABASE glance;              ##创建 glance 数据库##对 glance 数据库授权[用户名@控制节点...BY 密码]MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'192.168.30.145' \      IDENTIFIED BY 'glance';MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \      IDENTIFIED BY 'glance';MariaDB [(none)]> flush privileges;


2.获取管理员访问权限

# . admin-openrc


3.创建服务证书


a.创建glance用户:

# openstack user create --domain default --password-prompt glanceUser Password:Repeat User Password:+---------------------+----------------------------------+| Field               | Value                            |+---------------------+----------------------------------+| domain_id           | default                          || enabled             | True                             || id                  | 3edeaaae87e14811ac2c6767ab657d6b || name                | glance                           || options             | {}                               || password_expires_at | None                             |+---------------------+----------------------------------+


b.添加 admin 角色到 glance 用户和 service 项目上:

# openstack role add --project service --user glance admin


c.创建"glance"服务实体:

# openstack service create --name glance \  --description "OpenStack Image" p_w_picpath+-------------+----------------------------------+| Field       | Value                            |+-------------+----------------------------------+| description | OpenStack Image                  || enabled     | True                             || id          | 22a0875ba92c4512989666f116ae1585 || name        | glance                           || type        | p_w_picpath                            |+-------------+----------------------------------+


d.创建镜像服务的 API 端点:

# openstack endpoint create --region RegionOne \  p_w_picpath public http://192.168.30.145:9292+--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | ff6d9ed365cf4e7f8cc53d47e57cd46b || interface    | public                           || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 22a0875ba92c4512989666f116ae1585 || service_name | glance                           || service_type | p_w_picpath                            || url          | http://192.168.30.145:9292       |+--------------+----------------------------------+# openstack endpoint create --region RegionOne \  p_w_picpath internal http://192.168.30.145:9292+--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | 7408dd72bc1745758cdf23e136ef7392 || interface    | internal                         || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 22a0875ba92c4512989666f116ae1585 || service_name | glance                           || service_type | p_w_picpath                            || url          | http://192.168.30.145:9292       |+--------------+----------------------------------+# openstack endpoint create --region RegionOne \  p_w_picpath admin http://192.168.30.145:9292--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | 8ed4e7e1a5834177b4ce1896c21e6cb9 || interface    | admin                            || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 22a0875ba92c4512989666f116ae1585 || service_name | glance                           || service_type | p_w_picpath                            || url          | http://192.168.30.145:9292       |+--------------+----------------------------------+

4.安装并配置 Glance 组件


a.配置镜像API

# apt -y install glance# vim /etc/glance/glance-api.conf[database]---配置数据库访问[用户名:密码@控制节点]connection = mysql+pymysql://glance:glance@192.168.30.145/glance[keystone_authtoken]---配置身份服务访问auth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]flavor = keystone[glance_store]---配置本地文件系统存储和图像文件位置stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/p_w_picpaths/# grep ^[a-z] /etc/glance/glance-api.confsqlite_db = /var/lib/glance/glance.sqlitebackend = sqlalchemyconnection = mysql+pymysql://glance:glance@192.168.30.145/glancestores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/p_w_picpathsdisk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop.root-tarauth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glanceflavor = keystone


b.配置镜像注册服务

# vim /etc/glance/glance-registry.conf[database]---配置数据库访问[用户名:密码@控制节点]connection = mysql+pymysql://glance:glance@192.168.30.145/glance[keystone_authtoken]---配置身份服务访问auth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]flavor = keystone# grep ^[a-z] /etc/glance/glance-registry.confsqlite_db = /var/lib/glance/glance.sqlitebackend = sqlalchemyconnection = mysql+pymysql://glance:glance@192.168.30.145/glanceauth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glanceflavor = keystone


5.同步镜像服务数据库

# su -s /bin/sh -c "glance-manage db_sync" glance


6.重启服务

# service glance-registry restart# service glance-api restart# service glance-registry status# service glance-api status


7.验证操作

使用 CirrOS 对镜像服务进行验证

CirrOS是一个小型的Linux镜像,可以用来进行 OpenStack部署测试。


a.获取管理员权限

# . admin-openrc


b.下载源镜像

# wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img


c.使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见

# openstack p_w_picpath create "cirros"\  --file cirros-0.3.5-x86_64-disk.img \  --disk-format qcow2 --container-format bare \  --public+------------------+------------------------------------------------------+| Field            | Value                                                |+------------------+------------------------------------------------------+| checksum         | f8ab98ff5e73ebab884d80c9dc9c7290                     || container_format | bare                                                 || created_at       | 2017-03-29T05:57:56Z                                 || disk_format      | qcow2                                                || file             | /v2/p_w_picpaths/4b6ebd57-80ab-4b79-8ecc-53a026f3e898/file || id               | 4b6ebd57-80ab-4b79-8ecc-53a026f3e898                 || min_disk         | 0                                                    || min_ram          | 0                                                    || name             | cirros                                               || owner            | 2461396f6a344c21a2360a612d4f6abe                     || protected        | False                                                || schema           | /v2/schemas/p_w_picpath                                    || size             | 13267968                                             || status           | active                                               || tags             |                                                      || updated_at       | 2017-03-29T05:57:56Z                                 || virtual_size     | None                                                 || visibility       | public                                               |+------------------+------------------------------------------------------+


d.确认镜像的上传并验证属性

# openstack p_w_picpath list+--------------------------------------+--------+--------+| ID                                   | Name   | Status |+--------------------------------------+--------+--------+| 4b6ebd57-80ab-4b79-8ecc-53a026f3e898 | cirros | active |+--------------------------------------+--------+--------+


五、配置 Neutron 网络服务【各节点皆要配置】


1.创建 neutron 数据库

# mysqlMariaDB [(none)] CREATE DATABASE neutron;             ##创建 neutron 数据库##对 neutron 数据库授权[用户名@控制节点...BY 密码]MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'192.168.30.145' \\  IDENTIFIED BY 'neutron';MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \\  IDENTIFIED BY 'neutron';MariaDB [(none)]> flush privileges;


2.获取管理员访问权限

# . admin-openrc


3.创建服务证书


a.创建 neutron 用户

# openstack user create --domain default --password-prompt neutronUser Password:Repeat User Password:+---------------------+----------------------------------+| Field               | Value                            |+---------------------+----------------------------------+| domain_id           | default                          || enabled             | True                             || id                  | 54cd9e72295c411090ea9f641cb02135 || name                | neutron                          || options             | {}                               || password_expires_at | None                             |+---------------------+----------------------------------+


b.添加 admin 角色到 neutron 用户

# openstack role add --project service --user neutron admin


c.创建 neutron 服务实体

# openstack service create --name neutron \\  --description "OpenStack Networking" network+-------------+----------------------------------+| Field       | Value                            |+-------------+----------------------------------+| description | OpenStack Networking             || enabled     | True                             || id          | 720687745d354718862255a56d7aea46 || name        | neutron                          || type        | network                          |+-------------+----------------------------------+


d.创建 neutron 服务API端点

# openstack endpoint create --region RegionOne \\  network public http://192.168.30.145:9696+--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | a9b1b5b8fbb842a8b14a9cecca7a58a8 || interface    | public                           || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 720687745d354718862255a56d7aea46 || service_name | neutron                          || service_type | network                          || url          | http://192.168.30.145:9696       |+--------------+----------------------------------+  # openstack endpoint create --region RegionOne \\  network internal http://192.168.30.145:9696  +--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | 61e2c14b0c8f4003a7099012e9a6331f || interface    | internal                         || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 720687745d354718862255a56d7aea46 || service_name | neutron                          || service_type | network                          || url          | http://192.168.30.145:9696       |+--------------+----------------------------------+# openstack endpoint create --region RegionOne \\  network admin http://192.168.30.145:9696+--------------+----------------------------------+| Field        | Value                            |+--------------+----------------------------------+| enabled      | True                             || id           | 6719539759c34487bd519c0dffb5509d || interface    | admin                            || region       | RegionOne                        || region_id    | RegionOne                        || service_id   | 720687745d354718862255a56d7aea46 || service_name | neutron                          || service_type | network                          || url          | http://192.168.30.145:9696       |+--------------+----------------------------------+


4.配置网络类型2:私有网络


a.安装组件

# apt -y install neutron-server neutron-plugin-ml2 \\  neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \\  neutron-metadata-agent


b.配置 Neutron 组件

# vim /etc/neutron/neutron.conf[database]----配置数据库访问[用户名:密码@控制节点]#connection = sqlite:////var/lib/neutron/neutron.sqliteconnection = mysql+pymysql://neutron:neutron@192.168.30.145/neutron[DEFAULT]----启用ML2插件、路由器服务和overlapping IP addressescore_plugin = ml2service_plugins = routerallow_overlapping_ips = true  [DEFAULT]----配置 RabbitMQ 消息队列访问[用户名:密码@控制节点]transport_url = rabbit://openstack:openstack@192.168.30.145[DEFAULT]----配置认证服务访问auth_strategy = keystone[keystone_authtoken]----配置认证服务访问auth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron  [DEFAULT]----配置网络服务来通知计算节点的网络拓扑变化notify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true[nova]----配置网络服务来通知计算节点的网络拓扑变化auth_url = http://192.168.30.145:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = nova# grep ^[a-z] /etc/neutron/neutron.conf auth_strategy = keystonecore_plugin = ml2service_plugins = routerallow_overlapping_ips = truenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = truetransport_url = rabbit://openstack:openstack@192.168.30.145root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.confconnection = mysql+pymysql://neutron:neutron@192.168.30.145/neutronauth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutronregion_name = RegionOneauth_url = http://192.168.30.145:35357auth_type = passwordpassword = novaproject_domain_name = defaultproject_name = serviceuser_domain_name = defaultusername = nova



c.配置 Modular Layer 2 (ML2) 插件

ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施

# vim /etc/neutron/plugins/ml2/ml2_conf.ini[ml2]----启用flat,VLAN以及VXLAN网络type_drivers = flat,vlan,vxlan[ml2]----启用VXLAN私有网络tenant_network_types = vxlan[ml2]----启用Linuxbridge和layer-2机制mechanism_drivers = linuxbridge,l2population[ml2]----启用端口安全扩展驱动extension_drivers = port_security  [ml2_type_flat]----配置公共虚拟网络为flat网络flat_networks = provider[ml2_type_vxlan]----为私有网络配置VXLAN网络识别的网络范围vni_ranges = 1:1000[securitygroup]----启用 ipset 增加安全组规则的高效性enable_ipset = true # grep ^[a-z] /etc/neutron/plugins/ml2/ml2_conf.initype_drivers = flat,vlan,vxlantenant_network_types = vxlanmechanism_drivers = linuxbridge,l2populationextension_drivers = port_securityflat_networks = providervni_ranges = 1:1000enable_ipset = true

注:Linuxbridge代理只支持VXLAN覆盖网络


d.配置Linuxbridge代理

Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则

# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge]----对应公共虚拟网络和公共物理网络接口physical_interface_mappings = provider:ens33[vxlan]----启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,并启用layer-2 populationenable_vxlan = truelocal_ip = 192.168.30.145l2_population = true[securitygroup]----启用安全组并配置防火墙服务enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver# grep ^[a-z] /etc/neutron/plugins/ml2/linuxbridge_agent.iniphysical_interface_mappings = provider:ens33firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = trueenable_vxlan = truelocal_ip = 192.168.30.145l2_population = true


e.配置layer-3代理

Layer-3代理为私有虚拟网络提供路由和NAT服务

# vim /etc/neutron/l3_agent.ini[DEFAULT]----配置Linuxbridge接口驱动和外部网络网桥interface_driver = linuxbridge# grep ^[a-z] /etc/neutron/l3_agent.iniinterface_driver = linuxbridge


f.配置DHCP代理

DHCP代理为虚拟网络提供DHCP服务

# vim /etc/neutron/dhcp_agent.ini [DEFAULT]----配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true# grep ^[a-z] /etc/neutron/dhcp_agent.ini interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true


g.配置元数据代理----负责提供配置信息

# vim /etc/neutron/metadata_agent.ini[DEFAULT]----配置元数据主机以及共享密码nova_metadata_ip = 192.168.30.145metadata_proxy_shared_secret = qaz123# grep ^[a-z] /etc/neutron/metadata_agent.ini nova_metadata_ip = 192.168.30.145metadata_proxy_shared_secret = qaz123


5.在控制节点上为计算节点配置网络服务

# vim /etc/nova/nova.conf[neutron]----配置访问参数,启用元数据代理并设置密码url = http://192.168.30.145:9696auth_url = http://192.168.30.145:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutronservice_metadata_proxy = truemetadata_proxy_shared_secret = qaz123# grep ^[a-z] /etc/nova/nova.conf


6.完成安装


a.同步数据库

# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \\  --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron......OK

注:数据库的同步发生在 Networking 之后,因为脚本需要完成服务器和插件的配置文件


b.重启计算 API 服务

# service nova-api restart


c.重启 Networking 服务

对于两种网络类型:

# service neutron-server restart# service neutron-linuxbridge-agent restart# service neutron-dhcp-agent restart# service neutron-metadata-agent restart


对于网络类型 2 ,还需重启 L3 服务:

# service neutron-l3-agent restart


d.确认启动与否

# service nova-api status# service neutron-server status# service neutron-linuxbridge-agent status# service neutron-dhcp-agent status# service neutron-metadata-agent status# service neutron-l3-agent status


7.配置 Compute Node 的 Neutron 网络服务

# apt -y install neutron-linuxbridge-agent# vim /etc/neutron/neutron.conf[database]----计算节点不直接访问数据库#connection = sqlite:////var/lib/neutron/neutron.sqlite[DEFAULT]----配置 RabbitMQ 消息队列访问[用户名:密码@控制节点]transport_url = rabbit://openstack:openstack@192.168.30.145[DEFAULT]----配置认证服务访问auth_strategy = keystone[keystone_authtoken]----配置认证服务访问auth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron# grep ^[a-z] /etc/neutron/neutron.conf auth_strategy = keystonecore_plugin = ml2transport_url = rabbit://openstack:openstack@192.168.30.145root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.confauth_uri = http://192.168.30.145:5000auth_url = http://192.168.30.145:35357memcached_servers = 192.168.30.145:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron


8.为计算节点配置网络服务

# vim /etc/nova/nova.conf[neutron]----配置访问参数url = http://192.168.30.145:9696auth_url = http://192.168.30.145:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron# grep ^[a-z] /etc/nova/nova.conf


9.完成安装


a.重启计算服务:

# service nova-compute restart# service nova-compute status


b.重启Linuxbridge代理:

# service neutron-linuxbridge-agent restart# service neutron-linuxbridge-agent status


10.在计算节点上配置网络类型2

配置Linuxbridge代理----为实例建立layer-2虚拟网络并且处理安全组规则

# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge]----对应公共虚拟网络和公共物理网络接口physical_interface_mappings = provider:ens33[vxlan]----启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 populationenable_vxlan = truelocal_ip = 192.168.30.146l2_population = true[securitygroup]----启用安全组并配置firewall_driverenable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver# grep ^[a-z] /etc/neutron/plugins/ml2/linuxbridge_agent.ini physical_interface_mappings = provider:ens33firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = trueenable_vxlan = truelocal_ip = 192.168.30.146l2_population = true


11.在控制节点上验证操作


a.获取管理员权限

# . admin-openrc


b.列出加载的扩展来验证 neutron-server 进程是否正常启动

# openstack extension list --network+----------------------+----------------------+--------------------------+| Name                 | Alias                | Description              |+----------------------+----------------------+--------------------------+| Default Subnetpools  | default-subnetpools  | Provides ability to mark ||                      |                      | and use a subnetpool as  ||                      |                      | the default              || Network IP           | network-ip-          | Provides IP availability || Availability         | availability         | data for each network    ||                      |                      | and subnet.              || Network Availability |network_availability_z| Availability zone        || Zone                 | one                  | support for network.     || Auto Allocated       | auto-allocated-      | Auto Allocated Topology  || Topology Services    | topology             | Services.                || Neutron L3           | ext-gw-mode          | Extension of the router  || Configurable external|                      | abstraction for          || gateway mode         |                      | specifying whether SNAT  ||                      |                      | should occur on the      ||                      |                      | external gateway         || Port Binding         | binding              | Expose port bindings of  ||                      |                      | a virtual port to        ||                      |                      | external application     || agent                | agent                | The agent management     ||                      |                      | extension.               || Subnet Allocation    | subnet_allocation    | Enables allocation of    ||                      |                      | subnets from a subnet    ||                      |                      | pool                     || L3 Agent Scheduler   | l3_agent_scheduler   | Schedule routers among   ||                      |                      | l3 agents                || Tag support          | tag                  | Enables to set tag on    ||                      |                      | resources.               || Neutron external     | external-net         | Adds external network    || network              |                      | attribute to network     ||                      |                      | resource.                || Neutron Service      | flavors              | Flavor specification for || Flavors              |                      | Neutron advanced         ||                      |                      | services                 || Network MTU          | net-mtu              | Provides MTU attribute   ||                      |                      | for a network resource.  || Availability Zone    | availability_zone    | The availability zone    ||                      |                      | extension.               || Quota management     | quotas               | Expose functions for     || support              |                      | quotas management per    ||                      |                      | tenant                   || HA Router extension  | l3-ha                | Add HA capability to     ||                      |                      | routers.                 || Provider Network     | provider             | Expose mapping of        ||                      |                      | virtual networks to      ||                      |                      | physical networks        ||Multi Provider Network| multi-provider       | Expose mapping of        ||                      |                      | virtual networks to      ||                      |                      | multiple physical        ||                      |                      | networks                 || Address scope        | address-scope        | Address scopes           ||                      |                      | extension.               || Neutron Extra Route  | extraroute           | Extra routes             ||                      |                      | configuration for L3     ||                      |                      | router                   || Subnet service types | subnet-service-types | Provides ability to set  ||                      |                      | the subnet service_types ||                      |                      | field                    || Resource timestamps  | standard-attr-       | Adds created_at and      ||                      | timestamp            | updated_at fields to all ||                      |                      | Neutron resources that   ||                      |                      | have Neutron standard    ||                      |                      | attributes.              || Neutron Service Type | service-type         | API for retrieving       || Management           |                      | service providers for    ||                      |                      | Neutron advanced         ||                      |                      | services                 || Router Flavor        | l3-flavors           | Flavor support for       || Extension            |                      | routers.                 || Port Security        | port-security        | Provides port security   || Neutron Extra DHCP   | extra_dhcp_opt       | Extra options            || opts                 |                      | configuration for DHCP.  ||                      |                      | For example PXE boot     ||                      |                      | options to DHCP clients  ||                      |                      | can be specified (e.g.   ||                      |                      | tftp-server, server-ip-  ||                      |                      | address, bootfile-name)  || Resource revision    | standard-attr-       | This extension will      || numbers              | revisions            | display the revision     ||                      |                      | number of neutron        ||                      |                      | resources.               || Pagination support   | pagination           | Extension that indicates ||                      |                      | that pagination is       ||                      |                      | enabled.                 || Sorting support      | sorting              | Extension that indicates ||                      |                      | that sorting is enabled. || security-group       | security-group       | The security groups      ||                      |                      | extension.               || DHCP Agent Scheduler | dhcp_agent_scheduler | Schedule networks among  ||                      |                      | dhcp agents              || Router Availability  |router_availability_zo| Availability zone        || Zone                 | ne                   | support for router.      || RBAC Policies        | rbac-policies        | Allows creation and      ||                      |                      | modification of policies ||                      |                      | that control tenant      ||                      |                      | access to resources.     || Tag support for      | tag-ext              | Extends tag support to   || resources: subnet,   |                      | more L2 and L3           || subnetpool, port,    |                      | resources.               || router               |                      |                          || standard-attr-       | standard-attr-       | Extension to add         || description          | description          | descriptions to standard ||                      |                      | attributes               || Neutron L3 Router    | router               | Router abstraction for   ||                      |                      | basic L3 forwarding      ||                      |                      | between L2 Neutron       ||                      |                      | networks and access to   ||                      |                      | external networks via a  ||                      |                      | NAT gateway.             || Allowed Address Pairs| allowed-address-pairs| Provides allowed address ||                      |                      | pairs                    || project_id field     | project-id           | Extension that indicates || enabled              |                      | that project_id field is ||                      |                      | enabled.                 || Distributed Virtual  | dvr                  | Enables configuration of || Router               |                      | Distributed Virtual      ||                      |                      | Routers.                 |+----------------------+----------------------+--------------------------+


c.启动 neutron 代理验证是否成功

# neutron agent-list+--------------------------------------+--------------------+------------+| id                                   | agent_type         | host       | +--------------------------------------+--------------------+------------+| 23601054-312a-497c-b728-4b791ce76e64 | L3 agent           | controller | | 9a7546d9-73ec-47e0-ab23-ca2a5366660f | Linux bridge agent | controller | | acd42d89-1af4-413f-be77-3172d38a805d | Metadata agent     | controller | | b438ae93-aaf3-41f0-a7b7-d1502a1986c9 | DHCP agent         | controller | | e1d32b6b-07c6-468b-965d-ce9dfd09b338 | Linux bridge agent | compute    | +--------------------------------------+--------------------+------------++-------------------+-------+----------------+---------------------------+| availability_zone | alive | admin_state_up | binary                    |+-------------------+-------+----------------+---------------------------+| nova              | :-)   | True           | neutron-l3-agent          ||                   | :-)   | True           | neutron-linuxbridge-agent ||                   | :-)   | True           | neutron-metadata-agent    || nova              | :-)   | True           | neutron-dhcp-agent        ||                   | :-)   | True           | neutron-linuxbridge-agent |+-------------------+-------+----------------+---------------------------+


0