dream_653
作者dream_653·2019-09-19 10:16
系统应用运维·*****

openstack安装部署

字数 49281阅读 1453评论 0赞 3

openstack安装部署

本文介绍的是安装rock版本的openstack,最小化安装用到的组件
keystone(认证)
glance(镜像)
neutron(网络)
nova(计算)
dashboard(也叫horizon提供web ui服务)

系统版本:CentOS7.4
控制节点地址
eht0(10.167.130.208) eth1(192.168.122.8)
计算节点地址
eth0(10.167.130.209) eth1(192.168.122.9)

密码名称描述
数据库密码(未使用变量)数据库的root密码
ADMIN_PASS用户密码 admin
CINDER_DBPASS块存储服务的数据库密码
CINDER_PASSBlock Storage服务用户的密码 cinder
DASH_DBPASS仪表板的数据库密码
DEMO_PASS用户密码 demo
GLANCE_DBPASS图像服务的数据库密码
GLANCE_PASS图像服务用户的密码 glance
KEYSTONE_DBPASS身份服务的数据库密码
METADATA_SECRET元数据代理的秘密
NEUTRON_DBPASS网络服务的数据库密码
NEUTRON_PASS网络服务用户的密码 neutron
NOVA_DBPASS计算服务的数据库密码
NOVA_PASS计算服务用户的密码 nova
PLACEMENT_PASS展示位置服务用户的密码 placement
RABBIT_PASSRabbitMQ用户的密码 openstack

部署过程中密码请自行设置为适合的密码

基础环境构建
1.1 配置hosts
1.2 配置时间同步
1.3 配置源安装源
1.4 安装数据库
1.5 安装配置rabbitmq
1.6 安装配置memcached
1.7 安装配置etcd

安装openstack
2.1 安装keystone
2.2 创建域,项目,用户和角色
2.3 安装glance
2.4 安装nova
配置控制节点
配置计算节点
2.5 安装neutron
配置控制节点
配置计算节点
2.6 安装dashboard

配置hosts

1.修改主机名

systemctl set-hostname controller #208主机  
systemctl set-hostname compute #209主机  

3.编辑hosts文件加入所有节点

vi /etc/hosts   
10.167.130.208 controller  
10.167.130.209 compute  

配置时间同步

可自建ntp也可以和网络上的ntp同步我们从网络上同步
1.安装软件包

     yum install ntp ntpdata -y  

2.我们同步阿里云的时间服务器

ntpdata ntp1.aliyun.com  

配置源安装源

下载163源比较喜欢用163

cd /etc/yum.repo.d/  
mkdir bak  
mv * bak  
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo  
yum clean all  
yum list 

安装openstack的源
安装Rocky版本时,运行:

   yum install centos-release-openstack-rocky  

升级所有节点软件包

 yum upgrade  

安装openstack客户端

yum install python-openstackclient  

安装selinux支持

 yum install openstack-selinux  

安装数据库

安装数据库

yum install mariadb mariadb-server python2-PyMySQL  

编辑mysql配置文件
/etc/my.cnf.d/openstack.cnf文件(/etc/my.cnf.d/如果需要,备份现有配置文件)并完成以下操作:
创建一个[mysqld]部分,并将bind-address 密钥设置为控制器节点的管理IP地址,以允许其他节点通过管理网络进行访问。设置其他键以启用有用选项和UTF-8字符集:

[mysqld]  
bind-address = 10.167.130.208  
default-storage-engine = innodb  
innodb_file_per_table = on  
max_connections = 4096  
collation-server = utf8_general_ci  
character-set-server = utf8

启动服务并设置开机自启

systemctl enable mariadb.service  
systemctl start mariadb.service  

通过运行mysql_secure_installation 脚本来保护数据库服务。特别是,为数据库root帐户选择合适的密码 :

mysql_secure_installation  

安装rabbitmq

安装软件包
yum install rabbitmq-server
启动服务并设置开机启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
为openstack添加一个用户

rabbitmqctl add_user openstack RABBIT_PASS  
#Creating user "openstack" ...

替换RABBIT_PASS为合适的密码。
允许用户进行配置,写入和读取访问 openstack:

rabbitmqctl set_permissions openstack ".*" ".*" ".*"  
#Setting permissions for user "openstack" in vhost "/" ...  

安装memcached

安装软件包

yum install memcached python-memcached  

编辑/etc/sysconfig/memcached文件并完成以下操作:
配置服务以使用控制器节点的管理IP地址。这是为了通过管理网络启用其他节点的访问:

OPTIONS="-l 127.0.0.1,::1,controller"  

启动服务并设置开机启动
systemctl enable memcached.service
systemctl start memcached.service

安装etcd

安装软件包
yum install etcd
编辑/etc/etcd/etcd.conf文件并设置ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS,ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS控制器节点,以使经由管理网络通过其他节点的访问的管理IP地址:

#[Member]  
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  
ETCD_LISTEN_PEER_URLS="http://10.167.130.208:2380"  
ETCD_LISTEN_CLIENT_URLS="http://10.167.130.208:2379"  
ETCD_NAME="controller"  
#[Clustering]  
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.167.130.208:2380"  
ETCD_ADVERTISE_CLIENT_URLS="http://10.167.130.208:2379"  
ETCD_INITIAL_CLUSTER="controller=http://10.167.130.208:2380"  
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"  
ETCD_INITIAL_CLUSTER_STATE="new" 

启动服务并设置开机启动
systemctl enable etcd
systemctl start etcd

安装keystone

1.创建keystone数据库以及用户密码

mysql -u root -p  
CREATE DATABASE keystone;  
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \\  
IDENTIFIED BY 'KEYSTONE_DBPASS';  
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \\  
IDENTIFIED BY 'KEYSTONE_DBPASS';

替换KEYSTONE_DBPASS为合适的密码。
2.安装和配置
安装所需软件包
yum install openstack-keystone httpd mod_wsgi
3.编辑/etc/keystone/keystone.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:

[database]  
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone  

替换KEYSTONE_DBPASS为您为数据库选择的密码。
4.在该[token]部分中,配置Fernet令牌提供程序:

[token]  
provider = fernet  

5.填充Identity服务数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
6.初始化Fernet密钥存储库:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
7.引导身份服务:

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \\  
--bootstrap-admin-url http://controller:5000/v3/ \\  
--bootstrap-internal-url http://controller:5000/v3/ \\  
--bootstrap-public-url http://controller:5000/v3/ \\  
--bootstrap-region-id RegionOne  

替换 ADMIN_PASS为管理用户的合适密码。
配置Apache HTTP服务器

1.编辑/etc/httpd/conf/httpd.conf文件并配置ServerName引用控制器节点的 选项:

ServerName controller

创建/usr/share/keystone/wsgi-keystone.conf文件的链接:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
完成安装
启动Apache HTTP服务并将其配置为在系统引导时启动:
systemctl enable httpd.service
systemctl start httpd.service
配置管理帐户
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
替换ADMIN_PASS为keystone-manage bootstrap引导身份认证中命令中使用的密码。

创建域,项目,用户和角色

虽然本指南中的keystone-manage bootstrap步骤中已存在“Default”域,但创建新域的正式方法是:
openstack domain create --description "An Example Domain" example
1.本指南使用的服务项目包含您添加到环境中的每项服务的唯一用户。创建service 项目:

openstack project create --domain default \
--description "Service Project" service

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain | False |
| name | service |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+

2.常规(非管理员)任务应使用非特权项目和用户。例如,本指南创建myproject项目和myuser 用户。
创建myproject项目:
openstack project create --domain default \
--description "Demo Project" myproject

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain | False |
| name | myproject |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+

注: 在为此项目创建其他用户时,请勿重复此步骤。

创建myuser用户:

$ openstack user create --domain default \
--password-prompt myuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | aeda23aa78f44e859900e22c24817832 |
| name | myuser |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
创建myrole角色:
$ openstack role create myrole
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 997ce8d05fc143ac97d83fdfb5998552 |
| name | myrole |
+-----------+----------------------------------+
将myrole角色添加到myproject项目和myuser用户:
$ openstack role add --project myproject --user myuser myrole
注意: 此命令不提供输出。
验证操作
在控制器节点上执行这些命令。
取消设置临时 变量OS_AUTH_URL和OS_PASSWORD环境变量:
$ unset OS_AUTH_URL OS_PASSWORD
作为admin用户,请求身份验证令牌:
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue

Password:
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:14:07.056119Z |
| id | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
| | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
| | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+

注意: 此命令使用admin用户的密码。
作为myuser上一节中创建的用户,请求身份验证令牌:
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name myproject --os-username myuser token issue

Password:
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:15:39.014479Z |
| id | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
| | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
| | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U |
| project_id | ed0b60bf607743088218b0a533d5943f |
| user_id | 58126687cbcc4888bfa9ab73a2256f27 |
+------------+-----------------------------------------------------------------+
创建OpenStack客户端环境脚本
1.创建和编辑admin-openrc文件并添加以下内容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换ADMIN_PASS为您admin在Identity服务中为用户选择的密码。
2.创建和编辑demo-openrc文件并添加以下内容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=MYUSER_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换DEMO_PASS为您demo在Identity服务中为用户选择的密码。
使用脚本
加载admin-openrc文件以使用Identity服务的位置以及admin项目和用户凭据填充环境变量:
$ . admin-openrc
请求身份验证令牌:
$ openstack token issue
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:44:35.659723Z |
| id | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
| | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
| | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+

安装glance

本节介绍如何在控制器节点上安装和配置代号为glance的Image服务。为简单起见,此配置将图像存储在本地文件系统上。
在安装和配置映像服务之前,必须创建数据库,服务凭据和API端点。
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root用户身份连接到数据库服务器:
$ mysql -u root -p
1.创建glance数据库:
MariaDB [(none)]> CREATE DATABASE glance;
2.授予对glance数据库的适当访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
替换GLANCE_DBPASS为合适的密码。
退出数据库访问客户端。
来源admin凭据来访问仅管理员CLI命令:
$ . admin-openrc
3.要创建服务凭据,请完成以下步骤:
创建glance用户:
$ openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 3f4e777c4062483ab8d9edd7dff829df |
| name | glance |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
将admin角色添加到glance用户和 service项目:
$ openstack role add --project service --user glance admin
注意: 此命令不提供输出。
创建glance服务实体:
$ openstack service create --name glance \
--description "OpenStack Image" image

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Image |
| enabled | True |
| id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| name | glance |
| type | image |
+-------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
image public http://controller:9292

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 340be3625e9b4239a6415d034e98aace |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
image internal http://controller:9292

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | a6e4b153c2ae4c919eccfdbb7dceb5d2 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
image admin http://controller:9292

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 0c37ed58103f4300a84ff125a539032d |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
安装和配置组件
1.安装软件包
yum install openstack-glance
2.编辑/etc/glance/glance-api.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]

# ...  
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance  

替换GLANCE_DBPASS为您为Image服务数据库选择的密码。

在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:

[keystone_authtoken]  
# ...  
www_authenticate_uri = http://controller:5000  
auth_url = http://controller:5000  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = Default  
user_domain_name = Default  
project_name = service  
username = glance  
password = GLANCE_PASS  
  
[paste_deploy]  
# ...  
flavor = keystone  

替换GLANCE_PASS为您glance在Identity服务中为用户选择的密码 。
注意
注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。
在该[glance_store]部分中,配置本地文件系统存储和映像文件的位置:

[glance_store]  
# ...  
stores = file,http  
default_store = file  
filesystem_store_datadir = /var/lib/glance/images/  

3.编辑/etc/glance/glance-registry.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:

[database]  
# ...  
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance  

替换GLANCE_DBPASS为您为Image服务数据库选择的密码。

在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:

  
[keystone_authtoken]  
# ...  
www_authenticate_uri = http://controller:5000  
auth_url = http://controller:5000  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = Default  
user_domain_name = Default  
project_name = service  
username = glance  
password = GLANCE_PASS  
  
[paste_deploy]  
# ...  
flavor = keystone 

替换GLANCE_PASS为您glance在Identity服务中为用户选择的密码 。

注意: 注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

4.填充Image服务数据库:

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

注意: 忽略此输出中的任何弃用消息。
完成安装

启动Image服务并将其配置为在系统引导时启动:

systemctl enable openstack-glance-api.service \
openstack-glance-registry.service

systemctl start openstack-glance-api.service \
openstack-glance-registry.service
验证操作

使用CirrOS验证Image服务的操作, CirrOS是一个小型Linux映像,可帮助您测试OpenStack部署。

在控制器节点上执行这些命令。

1.来源admin凭据来访问仅管理员CLI命令:
$ . admin-openrc
2.下载源图像:
$ wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
注意: wget如果您的发行版不包含它,请安装.
3.使用QCOW2磁盘格式,裸 容器格式和公共可见性将图像上载到Image服务 ,以便所有项目都可以访问它:
$ openstack image create "cirros" \
--file cirros-0.4.0-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public

+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | 133eae9fb1c98f45894a4e60d8736619 |
| container_format | bare |
| created_at | 2015-03-26T16:52:10Z |
| disk_format | qcow2 |
| file | /v2/images/cc5c6982-4910-471e-b864-1098015901b5/file |
| id | cc5c6982-4910-471e-b864-1098015901b5 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | ae7a98326b9c455588edd2656d723b9d |
| protected | False |
| schema | /v2/schemas/image |
| size | 13200896 |
| status | active |
| tags | |
| updated_at | 2015-03-26T16:52:10Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+

4.确认上传图像并验证属性:
$ openstack image list

+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | active |
+--------------------------------------+--------+--------+

安装nova

1.要创建数据库,请完成以下步骤:
使用数据库访问客户端以root用户身份连接到数据库服务器:
$ mysql -u root -p

创建nova_api,nova,nova_cell0,和placement数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
MariaDB [(none)]> CREATE DATABASE placement;

授予对数据库的适当访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
IDENTIFIED BY 'PLACEMENT_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
IDENTIFIED BY 'PLACEMENT_DBPASS';

替换NOVA_DBPASS并PLACEMENT_DBPASS使用合适的密码。
退出数据库访问客户端。

2.来源admin凭据来访问仅管理员CLI命令:
$ . admin-openrc

3.创建Compute服务凭据:
创建nova用户:
$ openstack user create --domain default --password-prompt nova

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 8a7dbf5279404537b1c7b86c033620fe |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+

将admin角色添加到nova用户:
$ openstack role add --project service --user nova admin
注意: 此命令不提供输出。

创建nova服务实体:
$ openstack service create --name nova \
--description "OpenStack Compute" compute

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 060d59eac51b4594815603d75a00aba2 |
| name | nova |
| type | compute |
+-------------+----------------------------------+

4.创建Compute API服务端点:

$ openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 3c1caa473bfe4390a11e7177894bcc7b |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+

$ openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | e3c918de680746a586eac1f2d9bc10ab |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+

$ openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 38f7af91666a47cfb97b4dc790b94424 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+

5.使用您选择的创建Placement服务用户PLACEMENT_PASS:

$ openstack user create --domain default --password-prompt placement

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | fa742015a6494a949f67629884fc7ec8 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+

6.使用admin角色将Placement用户添加到服务项目:
$ openstack role add --project service --user placement admin

注意: 此命令不提供输出。

7.在服务目录中创建Placement API条目:

$ openstack service create --name placement \
--description "Placement API" placement

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 2d1a27022e6e4185b86adac4444c495f |
| name | placement |
| type | placement |
+-------------+----------------------------------+

8.创建Placement API服务端点:

$ openstack endpoint create --region RegionOne \
placement public http://controller:8778

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2b1b2637908b4137a9c2e0470487cbc0 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
placement internal http://controller:8778

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 02bcda9a150a4bd7993ff4879df971ab |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
placement admin http://controller:8778

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 3d71177b9e0f406f98cbff198d74b182 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+

安装和配置组件计算节点

1.安装软件包
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api

2.编辑/etc/nova/nova.conf文件并完成以下操作:
在该[DEFAULT]部分中,仅启用计算和元数据API:

[DEFAULT]  
# ...  
enabled_apis = osapi_compute,metadata  
  
在[api_database],[database]和[placement_database] 部分,配置数据库访问:  
  
[api_database]  
# ...  
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api  
  
[database]  
# ...  
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova  
  
[placement_database]  
# ...  
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement  

替换NOVA_DBPASS为您为Compute数据库和PLACEMENT_DBPASSPlacement数据库选择的密码。

在该[DEFAULT]部分中,配置RabbitMQ消息队列访问:

[DEFAULT]  
# ...  
transport_url = rabbit://openstack:RABBIT_PASS@controller  

替换RABBIT_PASS为您为openstack 帐户选择的密码RabbitMQ。

在[api]和[keystone_authtoken]部分中,配置身份服务访问:

  
[api]  
# ...  
auth_strategy = keystone  
  
[keystone_authtoken]  
# ...  
auth_url = http://controller:5000/v3  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = nova  
password = NOVA_PASS  

替换NOVA_PASS为您nova在Identity服务中为用户选择的密码。

注意:注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。

在该[DEFAULT]部分中,配置my_ip选项以使用控制器节点的管理接口IP地址:

[DEFAULT]  
# ...  
my_ip = 10.0.0.11  

在该[DEFAULT]部分中,启用对网络服务的支持:

[DEFAULT]  
# ...  
use_neutron = true  
firewall_driver = nova.virt.firewall.NoopFirewallDriver  

注意: 默认情况下,Compute使用内部防火墙驱动程序。由于Networking服务包含防火墙驱动程序,因此必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序禁用Compute防火墙驱动 程序。

配置/etc/nova/nova.conf的[neutron]部分。有关更多详细信息,请参阅网络服务安装指南。

在该[vnc]部分中,配置VNC代理以使用控制器节点的管理接口IP地址:

[vnc]  
enabled = true  
# ...  
server_listen = $my_ip  
server_proxyclient_address = $my_ip  

在该[glance]部分中,配置Image服务API的位置:

[glance]

...

api_servers = http://controller:9292

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]

...

lock_path = /var/lib/nova/tmp

在该[placement]部分中,配置Placement API:

[placement]

...

region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

替换PLACEMENT_PASS为您placement在Identity服务中为用户选择的密码 。 注释掉该[placement]部分中的任何其他选项。

由于打包错误,您必须通过将以下配置添加到以下内容来启用对Placement API的访问 /etc/httpd/conf.d/00-nova-placement-api.conf:

<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion>
</Directory>

重启httpd服务:
systemctl restart httpd

3.填充nova-api和placement数据库:

su -s /bin/sh -c "nova-manage api_db sync" nova
注意: 忽略此输出中的任何弃用消息。
4.注册cell0数据库:
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
5.创建cell1单元格:
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
109e1d4b-536a-40d0-83c6-5f121b82b650
6.填充nova据库:
su -s /bin/sh -c "nova-manage db sync" nova
7.验证nova cell0和cell1是否正确注册:
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+
完成安装

8.启动Compute服务并将其配置为在系统引导时启动:
systemctl enable openstack-nova-api.service \
openstack-nova-scheduler.service openstack-nova-conductor.service \
openstack-nova-novncproxy.service

systemctl start openstack-nova-api.service \
openstack-nova-scheduler.service openstack-nova-conductor.service \
openstack-nova-novncproxy.service
安装和配置组件计算节点

1.安装包:
yum install openstack-nova-compute
2.编辑/etc/nova/nova.conf文件并完成以下操作:
在该[DEFAULT]部分中,仅启用计算和元数据API:

[DEFAULT]  
# ...  
enabled_apis = osapi_compute,metadata

在该[DEFAULT]部分中,配置RabbitMQ消息队列访问:

[DEFAULT]  
# ...  
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您为openstack 帐户选择的密码RabbitMQ。

在[api]和[keystone_authtoken]部分中,配置身份服务访问:

[api]  
# ...  
auth_strategy = keystone  
  
[keystone_authtoken]  
# ...  
auth_url = http://controller:5000/v3  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = nova  
password = NOVA_PASS  

替换NOVA_PASS为您nova在Identity服务中为用户选择的密码。

注意: 注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。

在该[DEFAULT]部分中,配置my_ip选项:

[DEFAULT]  
# ...  
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS  

替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点上管理网络接口的IP地址,对于示例体系结构中的第一个节点 。

在该[DEFAULT]部分中,启用对网络服务的支持:

[DEFAULT]  
# ...  
use_neutron = true  
firewall_driver = nova.virt.firewall.NoopFirewallDriver  

注意: 默认情况下,Compute使用内部防火墙服务。由于Networking包含防火墙服务,因此必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序禁用Compute防火墙服务。

配置/etc/nova/nova.conf的[neutron]部分。 有关更多详细信息,请参阅网络服务安装指南。

在该[vnc]部分中,启用并配置远程控制台访问:

[vnc]  
# ...  
enabled = true  
server_listen = 0.0.0.0  
server_proxyclient_address = $my_ip  
novncproxy_base_url = http://controller:6080/vnc_auto.html  

服务器组件侦听所有IP地址,并且代理组件仅侦听计算节点的管理接口IP地址。基本URL指示您可以使用Web浏览器访问此计算节点上的实例的远程控制台的位置。

注意: 如果要访问远程控制台的Web浏览器驻留在无法解析controller主机名的主机上,则必须controller使用控制器节点的管理接口IP地址替换 。

在该[glance]部分中,配置Image服务API的位置:

[glance]  
# ...  
api_servers = http://controller:9292  

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]  
# ...  
lock_path = /var/lib/nova/tmp  

在该[placement]部分中,配置Placement API:

[placement]  
# ...  
region_name = RegionOne  
project_domain_name = Default  
project_name = service  
auth_type = password  
user_domain_name = Default  
auth_url = http://controller:5000/v3  
username = placement  
password = PLACEMENT_PASS  

替换PLACEMENT_PASS为您placement在Identity服务中为用户选择的密码 。注释掉该[placement]部分中的任何其他选项。
完成安装

1.确定您的计算节点是否支持虚拟机的硬件加速:

$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果此命令返回值非0 则计算节点支持硬件加速,通常不需要其他配置

如果此命令返回值=0,则您的计算节点不支持硬件加速,您必须配置libvirt为使用QEMU而不是KVM。

编辑文件中的[libvirt]部分,/etc/nova/nova.conf如下所示:

[libvirt]  
# ...  
virt_type = qemu  

2.启动Compute服务(包括其依赖项)并将其配置为在系统引导时自动启动:

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
将计算节点添加到单元数据库
重要: 在控制器节点上运行以下命令。

1.获取管理员凭据以启用仅管理CLI命令,然后确认数据库中有计算主机:

$ . admin-openrc

$ openstack compute service list --service nova-compute
+----+-------+--------------+------+-------+---------+----------------------------+
| ID | Host | Binary | Zone | State | Status | Updated At |
+----+-------+--------------+------+-------+---------+----------------------------+
| 1 | node1 | nova-compute | nova | up | enabled | 2017-04-14T15:30:44.000000 |
+----+-------+--------------+------+-------+---------+----------------------------+

发现计算主机:

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3

注意: 添加新计算节点时,必须在控制器节点上运行以注册这些新计算节点。或者,您可以在以下位置设置适当的间隔 :nova-manage cell_v2 discover_hosts/etc/nova/nova.conf

[scheduler]  
discover_hosts_in_cells_interval = 300  

验证操作

验证Compute服务的运行。
注意:在控制器节点上执行这些命令。

1.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

1

列出服务组件以验证每个进程的成功启动和注册:

$ openstack compute service list

+----+--------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary | Host | Zone | Status | State | Updated At |
+----+--------------------+------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | controller | internal | enabled | up | 2016-02-09T23:11:15.000000 |
| 2 | nova-scheduler | controller | internal | enabled | up | 2016-02-09T23:11:15.000000 |
| 3 | nova-conductor | controller | internal | enabled | up | 2016-02-09T23:11:16.000000 |
| 4 | nova-compute | compute1 | nova | enabled | up | 2016-02-09T23:11:20.000000 |
+----+--------------------+------------+----------+---------+-------+----------------------------+

注意: 此输出应指示控制器节点上启用的三个服务组件以及计算节点上启用的一个服务组件。

列出Identity服务中的API端点以验证与Identity服务的连接:

注意: 端点列表可能会有所不同,具体取决于OpenStack组件的安装。

$ openstack catalog list

+-----------+-----------+-----------------------------------------+
| Name | Type | Endpoints |
+-----------+-----------+-----------------------------------------+
| keystone | identity | RegionOne |
| | | public: http://controller:5000/v3/ |
| | | RegionOne |
| | | internal: http://controller:5000/v3/ |
| | | RegionOne |
| | | admin: http://controller:5000/v3/ |
| | | |
| glance | image | RegionOne |
| | | admin: http://controller:9292 |
| | | RegionOne |
| | | public: http://controller:9292 |
| | | RegionOne |
| | | internal: http://controller:9292 |
| | | |
| nova | compute | RegionOne |
| | | admin: http://controller:8774/v2.1 |
| | | RegionOne |
| | | internal: http://controller:8774/v2.1 |
| | | RegionOne |
| | | public: http://controller:8774/v2.1 |
| | | |
| placement | placement | RegionOne |
| | | public: http://controller:8778 |
| | | RegionOne |
| | | admin: http://controller:8778 |
| | | RegionOne |
| | | internal: http://controller:8778 |
| | | |
+-----------+-----------+-----------------------------------------+

注意: 忽略此输出中的任何警告。

列出Image服务中的图像以验证与Image服务的连接:

$ openstack image list

+--------------------------------------+-------------+-------------+
| ID | Name | Status |
+--------------------------------------+-------------+-------------+
| 9a76d9f9-9620-4f2e-8c69-6c5691fae163 | cirros | active |
+--------------------------------------+-------------+-------------+

检查单元格和放置API是否成功运行:

nova-status upgrade check

+---------------------------+
| Upgrade Check Results |
+---------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+---------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+---------------------------+
| Check: Resource Providers |
| Result: Success |
| Details: None |
+---------------------------+

安装neutron

1.要创建数据库,请完成以下步骤:

使用数据库访问客户端以root用户身份连接到数据库服务器:

mysql -u root -p

1

创建neutron数据库:

MariaDB [(none)] CREATE DATABASE neutron;

1

授予对neutron数据库的适当访问权限,替换 NEUTRON_DBPASS为合适的密码:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'NEUTRON_DBPASS';

退出数据库访问客户端。
2.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

3.要创建服务凭据,请完成以下步骤:

创建neutron用户:

$ openstack user create --domain default --password-prompt neutron

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | fdb0f541e28141719b6a43c8944bf1fb |
| name | neutron |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+

将admin角色添加到neutron用户:

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

1

注意: 此命令不提供输出。

创建neutron服务实体:

$ openstack service create --name neutron \
--description "OpenStack Networking" network

+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Networking |
| enabled | True |
| id | f71529314dab4a4d8eca427e701d209e |
| name | neutron |
| type | network |
+-------------+----------------------------------+

4.创建网络服务API端点:

$ openstack endpoint create --region RegionOne \
network public http://controller:9696

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 85d80a6d02fc4b7683f611d7fc1493a3 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
network internal http://controller:9696

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 09753b537ac74422a68d2d791cf3714f |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
network admin http://controller:9696

+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 1ee14289c9374dffb5db92a5c112fc4e |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+

配置Self-service networks

这里有两种网络类型可以选择具体请参考官方文档
重要:在控制器节点上安装和配置以下网络组件。
安装组件

yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables

配置服务器组件

编辑/etc/neutron/neutron.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:

[database]  
# ...  
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron  

替换NEUTRON_DBPASS为您为数据库选择的密码。

注意: 注释掉或删除connection该[database]部分中的任何其他选项 。

在该[DEFAULT]部分中,启用模块化第2层(ML2)插件,路由器服务和重叠的IP地址:

[DEFAULT]  
# ...  
core_plugin = ml2  
service_plugins = router  
allow_overlapping_ips = true  

在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问:

[DEFAULT]  
# ...  
transport_url = rabbit://openstack:RABBIT_PASS@controller  

替换RABBIT_PASS为您openstack在RabbitMQ中为帐户选择的密码 。

在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问:

[DEFAULT]  
# ...  
auth_strategy = keystone  
  
[keystone_authtoken]  
# ...  
www_authenticate_uri = http://controller:5000  
auth_url = http://controller:5000  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = neutron  
password = NEUTRON_PASS  

替换NEUTRON_PASS为您neutron 在Identity服务中为用户选择的密码。

注意: 注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

在[DEFAULT]和[nova]部分中,配置网络以通知Compute网络拓扑更改:

[DEFAULT]  
# ...  
notify_nova_on_port_status_changes = true  
notify_nova_on_port_data_changes = true  
  
[nova]  
# ...  
auth_url = http://controller:5000  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
region_name = RegionOne  
project_name = service  
username = nova  
password = NOVA_PASS  

替换NOVA_PASS为您nova 在Identity服务中为用户选择的密码。

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]  
# ...  
lock_path = /var/lib/neutron/tmp  

配置模块化第2层(ML2)插件

ML2插件使用Linux桥接机制为实例构建第2层(桥接和交换)虚拟网络基础架构。

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作:
在该[ml2]部分中,启用flat,VLAN和VXLAN网络:

[ml2]  
# ...  
type_drivers = flat,vlan,vxlan  

在该[ml2]部分中,启用VXLAN自助服务网络:

[ml2]  
# ...  
tenant_network_types = vxlan  

在该[ml2]部分中,启用Linux桥和第2层填充机制:

[ml2]  
# ...  
mechanism_drivers = linuxbridge,l2population  

警告:配置ML2插件后,删除type_drivers选项中的值 可能会导致数据库不一致。

注意:Linux网桥代理仅支持VXLAN重叠网络。

在该[ml2]部分中,启用端口安全性扩展驱动程序:

[ml2]  
# ...  
extension_drivers = port_security  

在该[ml2_type_flat]部分中,将提供商虚拟网络配置为扁平网络:

[ml2_type_flat]  
# ...  
flat_networks = provider  

在该[ml2_type_vxlan]部分中,为自助服务网络配置VXLAN网络标识符范围:

[ml2_type_vxlan]  
# ...  
vni_ranges = 1:1000  

在该[securitygroup]部分中,启用ipset以提高安全组规则的效率:

[securitygroup]  
# ...  
enable_ipset = true  

配置Linux桥代理

Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础架构并处理安全组。

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成以下操作:
在该[linux_bridge]部分中,将提供者虚拟网络映射到提供者物理网络接口:

[linux_bridge]  
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME  

替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。

在该[vxlan]部分中,启用VXLAN重叠网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:

[vxlan]  
enable_vxlan = true  
local_ip = OVERLAY_INTERFACE_IP_ADDRESS  
l2_population = true  

替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的基础物理网络接口的IP地址。示例体系结构使用管理接口将流量隧道传输到其他节点。因此,请替换OVERLAY_INTERFACE_IP_ADDRESS为控制器节点的管理IP地址。

在该[securitygroup]部分中,启用安全组并配置Linux桥接iptables防火墙驱动程序:

[securitygroup]  
# ...  
enable_security_group = true  
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver  

通过验证以下所有sysctl值设置为1:确保您的Linux操作系统内核支持网桥过滤器:

net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

要启用网络桥接支持,通常br_netfilter需要加载内核模块。
配置第3层代理

第3层(L3)代理为自助虚拟网络提供路由和NAT服务。

编辑/etc/neutron/l3_agent.ini文件并完成以下操作:
在本[DEFAULT]节中,配置Linux桥接接口驱动程序和外部网桥:

[DEFAULT]  
# ...  
interface_driver = linuxbridge  

配置DHCP代理

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

编辑/etc/neutron/dhcp_agent.ini文件并完成以下操作:
在本[DEFAULT]节中,配置Linux桥接接口驱动程序,Dnsmasq DHCP驱动程序,并启用隔离的元数据,以便提供商网络上的实例可以通过网络访问元数据:

[DEFAULT]  
# ...  
interface_driver = linuxbridge  
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  
enable_isolated_metadata = true  

安装和配置计算节点

重要: 以下操作需在计算节点上操作
安装组件

yum install openstack-neutron-linuxbridge ebtables ipset

配置公共组件

Networking公共组件配置包括身份验证机制,消息队列和插件。
编辑/etc/neutron/neutron.conf文件并完成以下操作:

在该[database]部分中,注释掉任何connection选项,因为计算节点不直接访问数据库。
在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问:

[DEFAULT]  
# ...  
transport_url = rabbit://openstack:RABBIT_PASS@controller  

替换RABBIT_PASS为您openstack 在RabbitMQ中为帐户选择的密码。

在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问:

[DEFAULT]  
# ...  
auth_strategy = keystone  
  
[keystone_authtoken]  
# ...  
www_authenticate_uri = http://controller:5000  
auth_url = http://controller:5000  
memcached_servers = controller:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = neutron  
password = NEUTRON_PASS  

替换NEUTRON_PASS为您neutron 在Identity服务中为用户选择的密码。

注意: 注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]  
# ...  
lock_path = /var/lib/neutron/tmp  

配置计算节点Self-service networks

重要:在计算节点上配置网络组件。
配置Linux桥代理

Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础架构并处理安全组。

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成以下操作:
在该[linux_bridge]部分中,将提供者虚拟网络映射到提供者物理网络接口:

[linux_bridge]  
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME  

替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。有关 更多信息,请参阅主机网络

在该[vxlan]部分中,启用VXLAN重叠网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:

[vxlan]  
enable_vxlan = true  
local_ip = OVERLAY_INTERFACE_IP_ADDRESS  
l2_population = true  

替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的基础物理网络接口的IP地址。示例体系结构使用管理接口将流量隧道传输到其他节点。因此,请替换OVERLAY_INTERFACE_IP_ADDRESS为计算节点的管理IP地址。

在该[securitygroup]部分中,启用安全组并配置Linux桥接iptables防火墙驱动程序:

[securitygroup]  
# ...  
enable_security_group = true  
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver  

通过验证以下所有sysctl值设置为1:确保您的Linux操作系统内核支持网桥过滤器:

net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

要启用网络桥接支持,通常br_netfilter需要加载内核模块。

配置Compute服务以使用Networking服务

编辑/etc/nova/nova.conf文件并完成以下操作:
在该[neutron]部分中,配置访问参数:

[neutron]  
# ...  
url = http://controller:9696  
auth_url = http://controller:5000  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
region_name = RegionOne  
project_name = service  
username = neutron  
password = NEUTRON_PASS  

替换NEUTRON_PASS为您neutron 在Identity服务中为用户选择的密码。
完成安装

重启Compute服务:

systemctl restart openstack-nova-compute.service

启动Linux网桥代理并将其配置为在系统引导时启动:

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
验证操作
注意: 在控制器节点上执行这些命令。

来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

列出已加载的扩展以验证是否成功启动了该 neutron-server进程:

$ openstack extension list --network

+---------------------------+---------------------------+----------------------------+
| Name | Alias | Description |
+---------------------------+---------------------------+----------------------------+
| Default Subnetpools | default-subnetpools | Provides ability to mark |
| | | and use a subnetpool as |
| | | the default |
| Availability Zone | availability_zone | The availability zone |
| | | extension. |
| Network Availability Zone | network_availability_zone | Availability zone support |
| | | for network. |
| 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 |
| DHCP Agent Scheduler | dhcp_agent_scheduler | Schedule networks among |
| | | dhcp agents |
| Neutron external network | external-net | Adds external network |
| | | attribute to network |
| | | resource. |
| Neutron Service Flavors | flavors | Flavor specification for |
| | | Neutron advanced services |
| Network MTU | net-mtu | Provides MTU attribute for |
| | | a network resource. |
| Network IP Availability | network-ip-availability | Provides IP availability |
| | | data for each network and |
| | | subnet. |
| Quota management support | quotas | Expose functions for |
| | | quotas management per |
| | | tenant |
| 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. |
| Subnet service types | subnet-service-types | Provides ability to set |
| | | the subnet service_types |
| | | field |
| Resource timestamps | standard-attr-timestamp | Adds created_at and |
| | | updated_at fields to all |
| | | Neutron resources that |
| | | have Neutron standard |
| | | attributes. |
| Neutron Service Type | service-type | API for retrieving service |
| Management | | providers for Neutron |
| | | advanced services |
| resources: subnet, | | more L2 and L3 resources. |
| subnetpool, port, router | | |
| Neutron Extra DHCP opts | extra_dhcp_opt | Extra options |
| | | 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 numbers | standard-attr-revisions | This extension will |
| | | 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. |
| RBAC Policies | rbac-policies | Allows creation and |
| | | modification of policies |
| | | that control tenant access |
| | | to resources. |
| standard-attr-description | standard-attr-description | Extension to add |
| | | descriptions to standard |
| | | attributes |
| Port Security | port-security | Provides port security |
| Allowed Address Pairs | allowed-address-pairs | Provides allowed address |
| | | pairs |
| project_id field enabled | project-id | Extension that indicates |
| | | that project_id field is |
| | | enabled. |
+---------------------------+---------------------------+----------------------------+

注意: 实际输出可能与此示例略有不同。

您可以使用neutron-sanity-check命令行客户端对网络进行进一步测试 。

使用验证部分选择要部署的网络选项。

网络选项1:提供商网络
网络选项2:自助服务网络

安装和配置组件

1.安装软件包

yum install openstack-dashboard

2.编辑 /etc/openstack-dashboard/local_settings 文件并完成以下操作:

配置仪表板以在controller节点上使用OpenStack服务 :

OPENSTACK_HOST = "controller"

允许您的主机访问仪表板:

ALLOWED_HOSTS = ['one.example.com', 'two.example.com']

注意: ALLOWED_HOSTS也可以[’*’]接受所有主机。这可能对开发工作有用,但可能不安全,不应在生产中使用。有关 详细信息,请参阅 https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts

配置memcached会话存储服务:

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  
  
CACHES = {  
'default': {  
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',  
'LOCATION': 'controller:11211',  
}  
}  

注意:注释掉任何其他会话存储配置。
启用Identity API版本3:

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

启用对域的支持:

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

配置API版本:

OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}

配置Default为通过仪表板创建的用户的默认域:

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

配置user为您通过仪表板创建的用户的默认角色:

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

如果选择网络选项1,请禁用对第3层网络服务的支持:
我们选择的网络2所以这个可以忽略

OPENSTACK_NEUTRON_NETWORK = {  
...  
'enable_router': False,  
'enable_quotas': False,  
'enable_distributed_router': False,  
'enable_ha_router': False,  
'enable_lb': False,  
'enable_firewall': False,  
'enable_vpn': False,  
'enable_fip_topology_check': False,  
}

(可选)配置时区:

TIME_ZONE = "TIME_ZONE"

替换TIME_ZONE为适当的时区标识符
3./etc/httpd/conf.d/openstack-dashboard.conf如果未包含,请添加以下行 。

WSGIApplicationGroup %{GLOBAL}

完成安装

重新启动Web服务器和会话存储服务:

systemctl restart httpd.service memcached.service

验证操作
验证仪表板的操作.
使用Web浏览器访问仪表板 http://controller/dashboard
使用admin或demo用户和default域凭据进行身份验证。
到此处配最小化置完成可以进行使用,其他扩展请参考官方文档

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关资料

X社区推广