当前位置:   article > 正文

Ubuntu20.04 搭建W版本OpenStack平台_ubuntu openstack

ubuntu openstack

目录

一、基础环境配置

1.controller、compute配置网卡地址

2.配置域名解析

3.NTP时间同步

二、添加OpenStack-wallaby软件包及基本环境

1、OpenStack 服务的所有节点上添加软件包

2、Mysql数据库

3、Rabbitmq消息队列

4、Memcached

5、etcd环境部署

三、keystone服务

四、glance镜像服务

五、Placement环境搭建

六、Nova计算服务

七、Neutron网络服务

八、Dashboard搭建

九、访问Dashboard并实例发放


主机名ens33ens34
conttroller192.168.100.10192.168.200.10
compute192.168.100.20192.168.200.10

一、基础环境配置

1.controller、compute配置网卡地址

2.配置域名解析

将节点的主机名设置为controller、compute.

controller、compute编辑/etc/hosts文件以包含以下内容:

  1. 192.168.100.10 controller
  2. 192.168.100.20 compute

3.NTP时间同步

controller节点

  1. #安装chrony软件包
  2. $sudo apt install -y chrony
  3. #编辑/etc/chrony/chrony.conf文件:
  4. server 192.168.100.10 iburst
  5. allow 192.168.100.0/24
  6. #重启NTP服务:
  7. $ sudo systemctl start chronyd

compute节点

  1. #安装软件包。
  2. $sudo apt install chrony
  3. #配置/etc/chrony/chrony.conf文件:
  4. server controller iburst
  5. #pool 2.debian.pool.ntp.org offline iburst
  6. #重启NTP服务。
  7. $ sudo systemctl start chronyd

二、添加OpenStack-wallaby软件包及基本环境

1、OpenStack 服务的所有节点上添加软件包

  1. $ sudo add-apt-repository cloud-archive:wallaby
  2. $ sudo apt install python3-openstackclient

2、Mysql数据库

  1. 安装mariadb以及对应的依赖包
  2. $sudo apt install mariadb-server python3-pymysql
  3. 创建和编辑/etc/mysql/mariadb.conf.d/99-openstack.cnf文件:
  4. 添加[mysqld]section字段
  5. [mysqld]
  6. bind-address = 192.168.100.10
  7. default-storage-engine = innodb
  8. innodb_file_per_table = on
  9. max_connections = 4096
  10. collation-server = utf8_general_ci
  11. character-set-server = utf8
  12. 重启数据库服务:
  13. $ sudo systemctl restart mysql
  14. 通过运行mysql_secure_installation 脚本来保护数据库服务。并进行为数据库root帐户初始化密码 :(设置数据库密码为000000)
  15. $ sudo mysql_secure_installation

3、Rabbitmq消息队列

controller节点配置rabbitmq消息队列

  1. $sudo apt install rabbitmq-server
  2. 添加openstack用户:
  3. $sudo rabbitmqctl add_user openstack 000000
  4. Creating user "openstack" ...
  5. 允许用户的配置、写入和读取访问权限 openstack:
  6. $sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  7. Setting permissions for user "openstack" in vhost "/" ...

4、Memcached

  1. sudo apt install memcached python3-memcache
  2. 编辑/etc/memcached.conf文件进行访问修改:
  3. -l 192.168.100.10
  4. 重启 Memcached 服务:
  5. $ sudo systemctl status memcached

5、etcd环境部署

  1. $sudo apt install etcd
  2. 编辑该/etc/default/etcd文件:
  3. 将ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS, ETCD_ADVERTISE_CLIENT_URLS, 设置为ETCD_LISTEN_CLIENT_URLS控制器节点的管理 IP 地址,以允许其他节点通过管理网络访问:
  4. ETCD_NAME="controller"
  5. ETCD_DATA_DIR="/var/lib/etcd"
  6. ETCD_INITIAL_CLUSTER_STATE="new"
  7. ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
  8. ETCD_INITIAL_CLUSTER="controller=http://192.168.100.10:2380"
  9. ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.10:2380"
  10. ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.10:2379"
  11. ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
  12. ETCD_LISTEN_CLIENT_URLS="http://192.168.100.10:2379"
  13. 启用并重启 etcd 服务:
  14. $sudo systemctl enable etcd
  15. $sudo systemctl restart etcd

三、keystone服务

  1. $sudo mysql –uroot –p000000
  2. 创建keystone数据库:
  3. MariaDB [(none)]> CREATE DATABASE keystone;
  4. 授予对keystone数据库访问权限:(设置keystone用户密码为000000)
  5. MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  6. IDENTIFIED BY '000000';
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  8. IDENTIFIED BY '000000';
  9. 安装软件包:
  10. $sudo apt install keystone
  11. 编辑/etc/keystone/keystone.conf文件:
  12. 在该[database]字段部分中进行配置,配置数据库访问:
  13. [database]
  14. # ...
  15. connection = mysql+pymysql://keystone:000000@controller/keystone
  16. 在[token]字段部分中,配置 Fernet 令牌提供程序:
  17. [token]
  18. # ...
  19. provider = fernet
  20. 填充身份服务数据库:
  21. $sudo su -s /bin/sh -c "keystone-manage db_sync" keystone
  22. 初始化 Fernet 密钥库:
  23. $sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
  24. $sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  25. 引导身份服务:
  26. $sudo keystone-manage bootstrap --bootstrap-password 000000 \
  27. --bootstrap-admin-url http://controller:5000/v3/ \
  28. --bootstrap-internal-url http://controller:5000/v3/ \
  29. --bootstrap-public-url http://controller:5000/v3/ \
  30. --bootstrap-region-id RegionOne
  31. 配置 Apache HTTP 服务器
  32. 编辑/etc/apache2/apache2.conf文件并配置
  33. 修改ServerName字段以引用控制器节点:
  34. ServerName controller
  35. (如果该ServerName条目尚不存在,则需要添加该条目)
  36. 重启Apache服务:
  37. $sudo systemctl restart apache2
  38. 通过设置适当的环境变量来配置管理帐户:
  39. $ export OS_USERNAME=admin
  40. $ export OS_PASSWORD=000000
  41. $ export OS_PROJECT_NAME=admin
  42. $ export OS_USER_DOMAIN_NAME=Default
  43. $ export OS_PROJECT_DOMAIN_NAME=Default
  44. $ export OS_AUTH_URL=http://controller:5000/v3
  45. $ export OS_IDENTITY_API_VERSION=3
  46. 创建域、项目、用户和角色
  47. Identity 服务为每个 OpenStack 服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合。
  48. $ openstack domain create --description "An Example Domain" example
  49. +-------------+----------------------------------+
  50. | Field | Value |
  51. +-------------+----------------------------------+
  52. | description | An Example Domain |
  53. | enabled | True |
  54. | id | 2f4f80574fd84fe6ba9067228ae0a50c |
  55. | name | example |
  56. | tags | [] |
  57. +-------------+----------------------------------+
  58. 本指南使用一个服务项目,该项目包含您添加到环境中的每个服务的唯一用户。创建service 项目:
  59. $ openstack project create --domain default --description "Service Project" service
  60. +-------------+----------------------------------+
  61. | Field | Value |
  62. +-------------+----------------------------------+
  63. | description | Service Project |
  64. | domain_id | default |
  65. | enabled | True |
  66. | id | 24ac7f19cd944f4cba1d77469b2a73ed |
  67. | is_domain | False |
  68. | name | service |
  69. | parent_id | default |
  70. | tags | [] |
  71. +-------------+----------------------------------+
  72. 创建myproject项目:
  73. $ openstack project create --domain default \
  74. --description "Demo Project" myproject
  75. +-------------+----------------------------------+
  76. | Field | Value |
  77. +-------------+----------------------------------+
  78. | description | Demo Project |
  79. | domain_id | default |
  80. | enabled | True |
  81. | id | 231ad6e7ebba47d6a1e57e1cc07ae446 |
  82. | is_domain | False |
  83. | name | myproject |
  84. | parent_id | default |
  85. | tags | [] |
  86. +-------------+----------------------------------+
  87. 创建myuser用户:(用户密码设置为000000)
  88. $ openstack user create --domain default --password-prompt myuser
  89. User Password:
  90. Repeat User Password:
  91. +---------------------+----------------------------------+
  92. | Field | Value |
  93. +---------------------+----------------------------------+
  94. | domain_id | default |
  95. | enabled | True |
  96. | id | aeda23aa78f44e859900e22c24817832 |
  97. | name | myuser |
  98. | options | {} |
  99. | password_expires_at | None |
  100. +---------------------+----------------------------------+
  101. 创建myrole角色:
  102. $ openstack role create myrole
  103. +-----------+----------------------------------+
  104. | Field | Value |
  105. +-----------+----------------------------------+
  106. | domain_id | None |
  107. | id | 997ce8d05fc143ac97d83fdfb5998552 |
  108. | name | myrole |
  109. +-----------+----------------------------------+
  110. 将myrole角色添加到myproject项目和myuser用户:
  111. $ openstack role add --project myproject --user myuser myrole
  112. 此命令不提供任何输出。
  113. $unset OS_AUTH_URL OS_PASSWORD
  114. $openstack --os-auth-url http://controller:5000/v3 \
  115. --os-project-domain-name Default --os-user-domain-name Default \
  116. --os-project-name admin --os-username admin token issue
  117. Password:
  118. +------------+-----------------------------------------------------------------+
  119. | Field | Value |
  120. +------------+-----------------------------------------------------------------+
  121. | expires | 2016-02-12T20:14:07.056119Z |
  122. | id | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
  123. | | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
  124. | | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws |
  125. | project_id | 343d245e850143a096806dfaefa9afdc |
  126. | user_id | ac3377633149401296f6c0d92d79dc16 |
  127. +------------+-----------------------------------------------------------------+
  128. $openstack --os-auth-url http://controller:5000/v3 \
  129. --os-project-domain-name Default --os-user-domain-name Default \
  130. --os-project-name myproject --os-username myuser token issue
  131. Password:
  132. +------------+-----------------------------------------------------------------+
  133. | Field | Value |
  134. +------------+-----------------------------------------------------------------+
  135. | expires | 2016-02-12T20:15:39.014479Z |
  136. | id | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
  137. | | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
  138. | | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U |
  139. | project_id | ed0b60bf607743088218b0a533d5943f |
  140. | user_id | 58126687cbcc4888bfa9ab73a2256f27 |
  141. +------------+-----------------------------------------------------------------+
  142. 2、创建 OpenStack 客户端环境脚本
  143. 创建并编辑admin-openrc文件并添加以下内容:
  144. export OS_PROJECT_DOMAIN_NAME=Default
  145. export OS_USER_DOMAIN_NAME=Default
  146. export OS_PROJECT_NAME=admin
  147. export OS_USERNAME=admin
  148. export OS_PASSWORD=000000
  149. export OS_AUTH_URL=http://controller:5000/v3
  150. export OS_IDENTITY_API_VERSION=3
  151. export OS_IMAGE_API_VERSION=2
  152. 创建并编辑demo-openrc文件并添加以下内容:
  153. export OS_PROJECT_DOMAIN_NAME=Default
  154. export OS_USER_DOMAIN_NAME=Default
  155. export OS_PROJECT_NAME=myproject
  156. export OS_USERNAME=myuser
  157. export OS_PASSWORD=000000
  158. export OS_AUTH_URL=http://controller:5000/v3
  159. export OS_IDENTITY_API_VERSION=3
  160. export OS_IMAGE_API_VERSION=2
  161. 使用脚本
  162. 加载admin-openrc文件以使用身份服务的位置以及admin项目和用户凭据填充环境变量:
  163. $ . admin-openrc
  164. 请求身份验证令牌:
  165. $ openstack token issue
  166. +------------+-----------------------------------------------------------------+
  167. | Field | Value |
  168. +------------+-----------------------------------------------------------------+
  169. | expires | 2016-02-12T20:44:35.659723Z |
  170. | id | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
  171. | | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
  172. | | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E |
  173. | project_id | 343d245e850143a096806dfaefa9afdc |
  174. | user_id | ac3377633149401296f6c0d92d79dc16 |
  175. +------------+-----------------------------------------------------------------+

四、glance镜像服务

  1. $sudo mysql –uroot –p000000
  2. 创建glance数据库:
  3. MariaDB [(none)]> CREATE DATABASE glance;
  4. 授予对glance数据库访问权限:
  5. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  6. IDENTIFIED BY '000000';
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  8. IDENTIFIED BY '000000';
  9. $ . admin-openrc
  10. 创建glance服务凭证
  11. 创建glance用户:
  12. $ openstack user create --domain default --password-prompt glance
  13. User Password:
  14. Repeat User Password:
  15. +---------------------+----------------------------------+
  16. | Field | Value |
  17. +---------------------+----------------------------------+
  18. | domain_id | default |
  19. | enabled | True |
  20. | id | 3f4e777c4062483ab8d9edd7dff829df |
  21. | name | glance |
  22. | options | {} |
  23. | password_expires_at | None |
  24. +---------------------+----------------------------------+
  25. 将admin角色添加到glance用户和 service项目:
  26. $ openstack role add --project service --user glance admin
  27. 创建glance服务实体:
  28. $ openstack service create --name glance --description "OpenStack Image" image
  29. +-------------+----------------------------------+
  30. | Field | Value |
  31. +-------------+----------------------------------+
  32. | description | OpenStack Image |
  33. | enabled | True |
  34. | id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
  35. | name | glance |
  36. | type | image |
  37. +-------------+----------------------------------+
  38. 创建镜像服务 API 端点:
  39. $ openstack endpoint create --region RegionOne image public http://controller:9292
  40. +--------------+----------------------------------+
  41. | Field | Value |
  42. +--------------+----------------------------------+
  43. | enabled | True |
  44. | id | 340be3625e9b4239a6415d034e98aace |
  45. | interface | public |
  46. | region | RegionOne |
  47. | region_id | RegionOne |
  48. | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
  49. | service_name | glance |
  50. | service_type | image |
  51. | url | http://controller:9292 |
  52. +--------------+----------------------------------+
  53. $ openstack endpoint create --region RegionOne image internal http://controller:9292
  54. +--------------+----------------------------------+
  55. | Field | Value |
  56. +--------------+----------------------------------+
  57. | enabled | True |
  58. | id | a6e4b153c2ae4c919eccfdbb7dceb5d2 |
  59. | interface | internal |
  60. | region | RegionOne |
  61. | region_id | RegionOne |
  62. | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
  63. | service_name | glance |
  64. | service_type | image |
  65. | url | http://controller:9292 |
  66. +--------------+----------------------------------+
  67. $ openstack endpoint create --region RegionOne image admin http://controller:9292
  68. +--------------+----------------------------------+
  69. | Field | Value |
  70. +--------------+----------------------------------+
  71. | enabled | True |
  72. | id | 0c37ed58103f4300a84ff125a539032d |
  73. | interface | admin |
  74. | region | RegionOne |
  75. | region_id | RegionOne |
  76. | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
  77. | service_name | glance |
  78. | service_type | image |
  79. | url | http://controller:9292 |
  80. +--------------+----------------------------------+
  81. 安装软件包:
  82. $sudo apt install glance
  83. 编辑/etc/glance/glance-api.conf文件:
  84. [database]字段部分中,配置数据库访问:
  85. [database]
  86. # ...
  87. connection = mysql+pymysql://glance:000000@controller/glance
  88. 在[keystone_authtoken]和[paste_deploy]部分,配置身份服务访问:
  89. [keystone_authtoken]
  90. # ...
  91. www_authenticate_uri = http://controller:5000
  92. auth_url = http://controller:5000
  93. memcached_servers = controller:11211
  94. auth_type = password
  95. project_domain_name = Default
  96. user_domain_name = Default
  97. project_name = service
  98. username = glance
  99. password = 000000
  100. [paste_deploy]
  101. # ...
  102. flavor = keystone
  103. 在该[glance_store]部分中,配置本地文件系统存储和镜像文件的位置:
  104. [glance_store]
  105. # ...
  106. stores = file,http
  107. default_store = file
  108. filesystem_store_datadir = /var/lib/glance/images/
  109. 填充镜像服务数据库:
  110. $sudo su -s /bin/sh -c "glance-manage db_sync" glance
  111. 重新启动镜像服务:
  112. $ sudo systemctl restart glance-api
  113. 使用QCOW2磁盘格式、裸容器格式和公开可见性将镜像上传到 glance Image 服务 ,以便所有项目都可以访问它:
  114. 上传cirros-0.4.0-x86_64-disk.img
  115. $ glance image-create --name "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility=public
  116. +------------------+------------------------------------------------------+
  117. | Field | Value |
  118. +------------------+------------------------------------------------------+
  119. | checksum | 133eae9fb1c98f45894a4e60d8736619 |
  120. | container_format | bare |
  121. | created_at | 2015-03-26T16:52:10Z |
  122. | disk_format | qcow2 |
  123. | file | /v2/images/cc5c6982-4910-471e-b864-1098015901b5/file |
  124. | id | cc5c6982-4910-471e-b864-1098015901b5 |
  125. | min_disk | 0 |
  126. | min_ram | 0 |
  127. | name | cirros |
  128. | owner | ae7a98326b9c455588edd2656d723b9d |
  129. | protected | False |
  130. | schema | /v2/schemas/image |
  131. | size | 13200896 |
  132. | status | active |
  133. | tags | |
  134. | updated_at | 2015-03-26T16:52:10Z |
  135. | virtual_size | None |
  136. | visibility | public |
  137. +------------------+------------------------------------------------------+
  138. $ glance image-list
  139. +--------------------------------------+--------+--------+
  140. | ID | Name | Status |
  141. +--------------------------------------+--------+--------+
  142. | 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | active |
  143. +--------------------------------------+--------+--------+

五、Placement环境搭建

  1. $sudo mysql –uroot –p000000
  2. 创建placement数据库:
  3. MariaDB [(none)]> CREATE DATABASE placement;
  4. 授予对数据库的适当访问权限:
  5. MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
  6. IDENTIFIED BY '000000';
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
  8. IDENTIFIED BY '000000';
  9. 配置用户和端点
  10. $ . admin-openrc
  11. $ openstack user create --domain default --password-prompt placement
  12. User Password:
  13. Repeat User Password:
  14. +---------------------+----------------------------------+
  15. | Field | Value |
  16. +---------------------+----------------------------------+
  17. | domain_id | default |
  18. | enabled | True |
  19. | id | fa742015a6494a949f67629884fc7ec8 |
  20. | name | placement |
  21. | options | {} |
  22. | password_expires_at | None |
  23. +---------------------+----------------------------------+
  24. 将 Placement 用户添加到具有 admin 角色的服务项目:
  25. $ openstack role add --project service --user placement admin
  26. 在服务目录中创建 Placement API 条目:
  27. $ openstack service create --name placement --description "Placement API" placement
  28. +-------------+----------------------------------+
  29. | Field | Value |
  30. +-------------+----------------------------------+
  31. | description | Placement API |
  32. | enabled | True |
  33. | id | 2d1a27022e6e4185b86adac4444c495f |
  34. | name | placement |
  35. | type | placement |
  36. +-------------+----------------------------------+
  37. 创建 Placement API 服务端点:
  38. $ openstack endpoint create --region RegionOne placement public http://controller:8778
  39. +--------------+----------------------------------+
  40. | Field | Value |
  41. +--------------+----------------------------------+
  42. | enabled | True |
  43. | id | 2b1b2637908b4137a9c2e0470487cbc0 |
  44. | interface | public |
  45. | region | RegionOne |
  46. | region_id | RegionOne |
  47. | service_id | 2d1a27022e6e4185b86adac4444c495f |
  48. | service_name | placement |
  49. | service_type | placement |
  50. | url | http://controller:8778 |
  51. +--------------+----------------------------------+
  52. $ openstack endpoint create --region RegionOne placement internal http://controller:8778
  53. +--------------+----------------------------------+
  54. | Field | Value |
  55. +--------------+----------------------------------+
  56. | enabled | True |
  57. | id | 02bcda9a150a4bd7993ff4879df971ab |
  58. | interface | internal |
  59. | region | RegionOne |
  60. | region_id | RegionOne |
  61. | service_id | 2d1a27022e6e4185b86adac4444c495f |
  62. | service_name | placement |
  63. | service_type | placement |
  64. | url | http://controller:8778 |
  65. +--------------+----------------------------------+
  66. $ openstack endpoint create --region RegionOne placement admin http://controller:8778
  67. +--------------+----------------------------------+
  68. | Field | Value |
  69. +--------------+----------------------------------+
  70. | enabled | True |
  71. | id | 3d71177b9e0f406f98cbff198d74b182 |
  72. | interface | admin |
  73. | region | RegionOne |
  74. | region_id | RegionOne |
  75. | service_id | 2d1a27022e6e4185b86adac4444c495f |
  76. | service_name | placement |
  77. | service_type | placement |
  78. | url | http://controller:8778 |
  79. +--------------+----------------------------------+
  80. 安装软件包:
  81. $sudo apt install placement-api
  82. 编辑/etc/placement/placement.conf文件:
  83. 在该[placement_database]部分中,配置数据库访问:
  84. [placement_database]
  85. # ...
  86. connection = mysql+pymysql://placement:000000@controller/placement
  87. 在[api]和[keystone_authtoken]部分,配置身份服务访问:
  88. [api]
  89. # ...
  90. auth_strategy = keystone
  91. [keystone_authtoken]
  92. # ...
  93. auth_url = http://controller:5000/v3
  94. memcached_servers = controller:11211
  95. auth_type = password
  96. project_domain_name = Default
  97. user_domain_name = Default
  98. project_name = service
  99. username = placement
  100. password = 000000
  101. 填充placement数据库:
  102. $sudo su -s /bin/sh -c "placement-manage db sync" placement
  103. 重启apache web服务。
  104. $ sudo systemctl restart apache2
  105. $ . admin-openrc
  106. 执行placement状态检查:
  107. $sudo placement-status upgrade check
  108. +----------------------------------+
  109. | Upgrade Check Results |
  110. +----------------------------------+
  111. | Check: Missing Root Provider IDs |
  112. | Result: Success |
  113. | Details: None |
  114. +----------------------------------+
  115. | Check: Incomplete Consumers |
  116. | Result: Success |
  117. | Details: None |
  118. +----------------------------------+

六、Nova计算服务

controller完成Nova服务搭建

  1. $sudo mysql –uroot –p000000
  2. 创建nova_api,nova和nova_cell0数据库:
  3. MariaDB [(none)]> CREATE DATABASE nova_api;
  4. MariaDB [(none)]> CREATE DATABASE nova;
  5. MariaDB [(none)]> CREATE DATABASE nova_cell0;
  6. 授予对数据库的访问权限:
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  8. IDENTIFIED BY '000000';
  9. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  10. IDENTIFIED BY '000000';
  11. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  12. IDENTIFIED BY '000000';
  13. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  14. IDENTIFIED BY '000000';
  15. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  16. IDENTIFIED BY '000000';
  17. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  18. IDENTIFIED BY '000000';
  19. $ . admin-openrc
  20. 创建计算服务凭证:
  21. $ openstack user create --domain default --password-prompt nova
  22. User Password:
  23. Repeat User Password:
  24. +---------------------+----------------------------------+
  25. | Field | Value |
  26. +---------------------+----------------------------------+
  27. | domain_id | default |
  28. | enabled | True |
  29. | id | 8a7dbf5279404537b1c7b86c033620fe |
  30. | name | nova |
  31. | options | {} |
  32. | password_expires_at | None |
  33. +---------------------+----------------------------------+
  34. admin为nova用户添加角色:
  35. $ openstack role add --project service --user nova admin
  36. 创建nova服务实体:
  37. $ openstack service create --name nova --description "OpenStack Compute" compute
  38. +-------------+----------------------------------+
  39. | Field | Value |
  40. +-------------+----------------------------------+
  41. | description | OpenStack Compute |
  42. | enabled | True |
  43. | id | 060d59eac51b4594815603d75a00aba2 |
  44. | name | nova |
  45. | type | compute |
  46. +-------------+----------------------------------+
  47. 创建 Compute API 服务端点:
  48. $ openstack endpoint create --region RegionOne \
  49. compute public http://controller:8774/v2.1
  50. +--------------+-------------------------------------------+
  51. | Field | Value |
  52. +--------------+-------------------------------------------+
  53. | enabled | True |
  54. | id | 3c1caa473bfe4390a11e7177894bcc7b |
  55. | interface | public |
  56. | region | RegionOne |
  57. | region_id | RegionOne |
  58. | service_id | 060d59eac51b4594815603d75a00aba2 |
  59. | service_name | nova |
  60. | service_type | compute |
  61. | url | http://controller:8774/v2.1 |
  62. +--------------+-------------------------------------------+
  63. $ openstack endpoint create --region RegionOne \
  64. compute internal http://controller:8774/v2.1
  65. +--------------+-------------------------------------------+
  66. | Field | Value |
  67. +--------------+-------------------------------------------+
  68. | enabled | True |
  69. | id | e3c918de680746a586eac1f2d9bc10ab |
  70. | interface | internal |
  71. | region | RegionOne |
  72. | region_id | RegionOne |
  73. | service_id | 060d59eac51b4594815603d75a00aba2 |
  74. | service_name | nova |
  75. | service_type | compute |
  76. | url | http://controller:8774/v2.1 |
  77. +--------------+-------------------------------------------+
  78. $ openstack endpoint create --region RegionOne \
  79. compute admin http://controller:8774/v2.1
  80. +--------------+-------------------------------------------+
  81. | Field | Value |
  82. +--------------+-------------------------------------------+
  83. | enabled | True |
  84. | id | 38f7af91666a47cfb97b4dc790b94424 |
  85. | interface | admin |
  86. | region | RegionOne |
  87. | region_id | RegionOne |
  88. | service_id | 060d59eac51b4594815603d75a00aba2 |
  89. | service_name | nova |
  90. | service_type | compute |
  91. | url | http://controller:8774/v2.1 |
  92. +--------------+-------------------------------------------+
  93. 安装 Placement 服务并配置用户和端点:
  94. 安装软件包:
  95. $sudo apt install nova-api nova-conductor nova-novncproxy nova-scheduler
  96. 编辑/etc/nova/nova.conf文件:
  97. 在[api_database]和[database]部分,配置数据库访问:
  98. [api_database]
  99. # ...
  100. connection = mysql+pymysql://nova:000000@controller/nova_api
  101. [database]
  102. # ...
  103. connection = mysql+pymysql://nova:000000@controller/nova
  104. [DEFAULT]部分,配置RabbitMQ消息队列访问:
  105. [DEFAULT]
  106. # ...
  107. transport_url = rabbit://openstack:000000@controller:5672/
  108. 在[api]和[keystone_authtoken]部分,配置身份服务访问:
  109. [api]
  110. # ...
  111. auth_strategy = keystone
  112. [keystone_authtoken]
  113. # ...
  114. www_authenticate_uri = http://controller:5000/
  115. auth_url = http://controller:5000/
  116. memcached_servers = controller:11211
  117. auth_type = password
  118. project_domain_name = Default
  119. user_domain_name = Default
  120. project_name = service
  121. username = nova
  122. password = 000000
  123. [DEFAULT]部字段中,配置my_ip选项以使用控制器节点的管理接口 IP 地址:
  124. [DEFAULT]
  125. # ...
  126. my_ip = 192.168.100.10
  127. 配置/etc/nova/nova.conf的
  128. [vnc]部分中,将 VNC 代理配置为使用控制器节点的管理接口 IP 地址:
  129. [vnc]
  130. enabled = true
  131. # ...
  132. server_listen = $my_ip
  133. server_proxyclient_address = $my_ip
  134. 在该[glance]部分中,配置 Image 服务 API 的位置:
  135. [glance]
  136. # ...
  137. api_servers = http://controller:9292
  138. 在该[oslo_concurrency]部分中,配置锁定路径:
  139. [oslo_concurrency]
  140. # ...
  141. lock_path = /var/lib/nova/tmp
  142. 由于打包错误,请log_dir从该[DEFAULT]部分中删除该选项 。
  143. 在[placement]部分中,配置对 Placement 服务的访问:
  144. [placement]
  145. # ...
  146. region_name = RegionOne
  147. project_domain_name = Default
  148. project_name = service
  149. auth_type = password
  150. user_domain_name = Default
  151. auth_url = http://controller:5000/v3
  152. username = placement
  153. password = 000000
  154. 填充nova-api数据库:
  155. $sudo su -s /bin/sh -c "nova-manage api_db sync" nova
  156. 注册cell0数据库:
  157. $sudo su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
  158. 创建cell1单元格:
  159. $sudo su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
  160. 填充 nova 数据库:
  161. $sudo su -s /bin/sh -c "nova-manage db sync" nova
  162. 验证 nova cell0 和 cell1 是否正确注册:
  163. $sudo su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
  164. +-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
  165. | Name | UUID | Transport URL | Database Connection | Disabled |
  166. +-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
  167. | cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@controller/nova_cell0?charset=utf8 | False |
  168. | cell1 | f690f4fd-2bc5-4f15-8145-db561a7b9d3d | rabbit://openstack:****@controller:5672/nova_cell1 | mysql+pymysql://nova:****@controller/nova_cell1?charset=utf8 | False |
  169. +-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
  170. 重新启动计算服务:
  171. $ service nova-api restart
  172. $ service nova-scheduler restart
  173. $ service nova-conductor restart
  174. $ service nova-novncproxy restart

compute节点完成Nova服务搭建

  1. $sudo apt install nova-compute
  2. 编辑/etc/nova/nova.conf文件并完成以下操作:
  3. 在该[DEFAULT]部分,配置RabbitMQ消息队列访问:
  4. [DEFAULT]
  5. # ...
  6. transport_url = rabbit://openstack:000000@controller
  7. 在[api]和[keystone_authtoken]部分,配置身份服务访问:
  8. [api]
  9. # ...
  10. auth_strategy = keystone
  11. [keystone_authtoken]
  12. # ...
  13. www_authenticate_uri = http://controller:5000/
  14. auth_url = http://controller:5000/
  15. memcached_servers = controller:11211
  16. auth_type = password
  17. project_domain_name = Default
  18. user_domain_name = Default
  19. project_name = service
  20. username = nova
  21. password = 000000
  22. 在该[DEFAULT]部分中,配置my_ip选项:
  23. [DEFAULT]
  24. # ...
  25. my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS(192.168.100.20)
  26. 配置/etc/nova/nova.conf的[neutron]部分。
  27. 在[vnc]部分中,启用和配置远程控制台访问:
  28. [vnc]
  29. # ...
  30. enabled = true
  31. server_listen = 0.0.0.0
  32. server_proxyclient_address = $my_ip
  33. novncproxy_base_url = http://controller:6080/vnc_auto.html
  34. 在该[glance]部分中,配置 Image 服务 API 的位置:
  35. [glance]
  36. # ...
  37. api_servers = http://controller:9292
  38. 在该[oslo_concurrency]部分中,配置锁定路径:
  39. [oslo_concurrency]
  40. # ...
  41. lock_path = /var/lib/nova/tmp
  42. 在[placement]部分中,配置 Placement API:
  43. [placement]
  44. # ...
  45. region_name = RegionOne
  46. project_domain_name = Default
  47. project_name = service
  48. auth_type = password
  49. user_domain_name = Default
  50. auth_url = http://controller:5000/v3
  51. username = placement
  52. password = 000000
  53. 确定计算节点是否支持虚拟机的硬件加速:
  54. $ egrep -c '(vmx|svm)' /proc/cpuinfo
  55. 如果此命令返回值,则您的计算节点支持硬件加速,这通常不需要额外配置。one or greater
  56. 如果此命令返回值zero,则您的计算节点不支持硬件加速,您必须配置libvirt为使用 QEMU 而不是 KVM。
  57. 编辑文件中的[libvirt]部分,/etc/nova/nova-compute.conf如下所示:
  58. [libvirt]
  59. # ...
  60. virt_type = qemu
  61. 重启计算服务:
  62. $ service nova-compute restart

将计算节点添加到cell数据库中

  1. 在控制器节点上执行发现计算节点资源操作
  2. $ . admin-openrc
  3. $ openstack compute service list --service nova-compute
  4. +----+-------+--------------+------+-------+---------+----------------------------+
  5. | ID | Host | Binary | Zone | State | Status | Updated At |
  6. +----+-------+--------------+------+-------+---------+----------------------------+
  7. | 1 | node1 | nova-compute | nova | up | enabled | 2017-04-14T15:30:44.000000 |
  8. +----+-------+--------------+------+-------+---------+----------------------------+
  9. 发现计算主机:
  10. $sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
  11. Found 2 cell mappings.
  12. Skipping cell0 since it does not contain hosts.
  13. Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
  14. Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
  15. Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
  16. Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
  17. 添加新计算节点时,您必须在控制器节点上运行以注册这些新计算节点。或者,可以在/etc/nova/nova.conf中设置适当的间隔 :
  18. [scheduler]
  19. discover_hosts_in_cells_interval = 300
  20. 验证操作:
  21. 在控制器节点上执行。
  22. $ . admin-openrc
  23. 列出服务组件以验证每个进程的成功启动和注册:
  24. $ openstack compute service list
  25. +----+--------------------+------------+----------+---------+-------+----------------------------+
  26. | Id | Binary | Host | Zone | Status | State | Updated At |
  27. +----+--------------------+------------+----------+---------+-------+----------------------------+
  28. | 1 | nova-scheduler | controller | internal | enabled | up | 2016-02-09T23:11:15.000000 |
  29. | 2 | nova-conductor | controller | internal | enabled | up | 2016-02-09T23:11:16.000000 |
  30. | 3 | nova-compute | compute1 | nova | enabled | up | 2016-02-09T23:11:20.000000 |
  31. +----+--------------------+------------+----------+---------+-------+----------------------------+

七、Neutron网络服务

controller节点完成neutron服务搭建

  1. $sudo mysql -u root –p000000
  2. 创建neutron数据库:
  3. MariaDB [(none)] CREATE DATABASE neutron;
  4. 授予对neutron数据库的访问权限,
  5. MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  6. IDENTIFIED BY '000000';
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  8. IDENTIFIED BY '000000';
  9. $ . admin-openrc
  10. 要创建服务凭证
  11. 创建neutron用户:
  12. $ openstack user create --domain default --password-prompt neutron
  13. User Password:
  14. Repeat User Password:
  15. +---------------------+----------------------------------+
  16. | Field | Value |
  17. +---------------------+----------------------------------+
  18. | domain_id | default |
  19. | enabled | True |
  20. | id | fdb0f541e28141719b6a43c8944bf1fb |
  21. | name | neutron |
  22. | options | {} |
  23. | password_expires_at | None |
  24. +---------------------+----------------------------------+
  25. admin为neutron用户添加角色:
  26. $ openstack role add --project service --user neutron admin
  27. 创建neutron服务实体:
  28. $ openstack service create --name neutron \
  29. --description "OpenStack Networking" network
  30. +-------------+----------------------------------+
  31. | Field | Value |
  32. +-------------+----------------------------------+
  33. | description | OpenStack Networking |
  34. | enabled | True |
  35. | id | f71529314dab4a4d8eca427e701d209e |
  36. | name | neutron |
  37. | type | network |
  38. +-------------+----------------------------------+
  39. 创建网络服务 API 端点:
  40. $ openstack endpoint create --region RegionOne \
  41. network public http://controller:9696
  42. +--------------+----------------------------------+
  43. | Field | Value |
  44. +--------------+----------------------------------+
  45. | enabled | True |
  46. | id | 85d80a6d02fc4b7683f611d7fc1493a3 |
  47. | interface | public |
  48. | region | RegionOne |
  49. | region_id | RegionOne |
  50. | service_id | f71529314dab4a4d8eca427e701d209e |
  51. | service_name | neutron |
  52. | service_type | network |
  53. | url | http://controller:9696 |
  54. +--------------+----------------------------------+
  55. $ openstack endpoint create --region RegionOne \
  56. network internal http://controller:9696
  57. +--------------+----------------------------------+
  58. | Field | Value |
  59. +--------------+----------------------------------+
  60. | enabled | True |
  61. | id | 09753b537ac74422a68d2d791cf3714f |
  62. | interface | internal |
  63. | region | RegionOne |
  64. | region_id | RegionOne |
  65. | service_id | f71529314dab4a4d8eca427e701d209e |
  66. | service_name | neutron |
  67. | service_type | network |
  68. | url | http://controller:9696 |
  69. +--------------+----------------------------------+
  70. $ openstack endpoint create --region RegionOne \
  71. network admin http://controller:9696
  72. +--------------+----------------------------------+
  73. | Field | Value |
  74. +--------------+----------------------------------+
  75. | enabled | True |
  76. | id | 1ee14289c9374dffb5db92a5c112fc4e |
  77. | interface | admin |
  78. | region | RegionOne |
  79. | region_id | RegionOne |
  80. | service_id | f71529314dab4a4d8eca427e701d209e |
  81. | service_name | neutron |
  82. | service_type | network |
  83. | url | http://controller:9696 |
  84. +--------------+----------------------------------+
  85. 安装组件
  86. $sudo apt install neutron-server neutron-plugin-ml2 \
  87. neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
  88. neutron-metadata-agent
  89. 配置服务器组件
  90. 编辑/etc/neutron/neutron.conf文件:
  91. 在该[database]部分中,配置数据库访问:
  92. [database]
  93. # ...
  94. connection = mysql+pymysql://neutron:000000@controller/neutron
  95. 在[DEFAULT]部分中,启用模块化第 2 层 (ML2) 插件、路由器服务和重叠 IP 地址:
  96. [DEFAULT]
  97. # ...
  98. core_plugin = ml2
  99. service_plugins = router
  100. allow_overlapping_ips = true
  101. 在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:
  102. [DEFAULT]
  103. # ...
  104. transport_url = rabbit://openstack:000000@controller
  105. 在[DEFAULT]和[keystone_authtoken]部分,配置身份服务访问:
  106. [DEFAULT]
  107. # ...
  108. auth_strategy = keystone
  109. [keystone_authtoken]
  110. # ...
  111. www_authenticate_uri = http://controller:5000
  112. auth_url = http://controller:5000
  113. memcached_servers = controller:11211
  114. auth_type = password
  115. project_domain_name = default
  116. user_domain_name = default
  117. project_name = service
  118. username = neutron
  119. password = 000000
  120. 在[DEFAULT]和[nova]部分中,配置 Networking 以通知 Compute 网络拓扑更改:
  121. [DEFAULT]
  122. # ...
  123. notify_nova_on_port_status_changes = true
  124. notify_nova_on_port_data_changes = true
  125. [nova]
  126. # ...
  127. auth_url = http://controller:5000
  128. auth_type = password
  129. project_domain_name = default
  130. user_domain_name = default
  131. region_name = RegionOne
  132. project_name = service
  133. username = nova
  134. password = 000000
  135. 在该[oslo_concurrency]部分中,配置锁定路径:
  136. [oslo_concurrency]
  137. # ...
  138. lock_path = /var/lib/neutron/tmp
  139. 配置模块化第 2 层 (ML2) 插件
  140. ML2 插件使用 Linux 桥接机制为实例构建第 2 层(桥接和交换)虚拟网络基础设施。
  141. 编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
  142. 在[ml2]部分中,启用平面、VLAN 和 VXLAN 网络:
  143. [ml2]
  144. # ...
  145. type_drivers = flat,vlan,vxlan
  146. 在该[ml2]部分中,启用 VXLAN 自助网络:
  147. [ml2]
  148. # ...
  149. tenant_network_types = vxlan
  150. 在[ml2]部分中,启用 Linux 桥接和二层填充机制:
  151. [ml2]
  152. # ...
  153. mechanism_drivers = linuxbridge,l2population
  154. 配置 ML2 插件后,删除type_drivers选项中的值 可能会导致数据库不一致。
  155. Linux 网桥代理仅支持 VXLAN 覆盖网络。
  156. 在[ml2]部分中,启用端口安全扩展驱动程序:
  157. [ml2]
  158. # ...
  159. extension_drivers = port_security
  160. 在[ml2_type_flat]部分中,将提供者虚拟网络配置为平面网络:
  161. [ml2_type_flat]
  162. # ...
  163. flat_networks = provider
  164. 在该[ml2_type_vxlan]部分中,配置自助网络的 VXLAN 网络标识符范围:
  165. [ml2_type_vxlan]
  166. # ...
  167. vni_ranges = 1:1000
  168. 在该[securitygroup]部分中,启用ipset以提高安全组规则的效率:
  169. [securitygroup]
  170. # ...
  171. enable_ipset = true
  172. 配置 Linux 网桥代理
  173. Linux 桥接代理为实例构建第 2 层(桥接和交换)虚拟网络基础架构并处理安全组。
  174. 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件:
  175. 在[linux_bridge]部分中,
  176. [linux_bridge]
  177. physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME(ens34)
  178. 替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。
  179. 在该[vxlan]部分中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:
  180. [vxlan]
  181. enable_vxlan = true
  182. local_ip = OVERLAY_INTERFACE_IP_ADDRESS(192.168.100.10)
  183. l2_population = true
  184. 替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的底层物理网络接口的 IP 地址。示例架构使用管理接口将流量隧道传输到其他节点。因此,替换OVERLAY_INTERFACE_IP_ADDRESS为控制器节点的管理 IP 地址。
  185. 在该[securitygroup]部分中,启用安全组并配置 Linux 网桥 iptables 防火墙驱动程序:
  186. [securitygroup]
  187. # ...
  188. enable_security_group = true
  189. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  190. 通过验证以下所有sysctl值都设置为,确保您的 Linux 操作系统内核支持网桥过滤器:
  191. net.bridge.bridge-nf-call-iptables
  192. net.bridge.bridge-nf-call-ip6tables
  193. 要启用网络桥接支持,通常br_netfilter需要加载内核模块。
  194. 配置三层代理
  195. 第 3 层 (L3) 代理为自助服务虚拟网络提供路由和 NAT 服务。
  196. 编辑/etc/neutron/l3_agent.ini文件:
  197. 在该[DEFAULT]部分中,配置 Linux 桥接接口驱动程序:
  198. [DEFAULT]
  199. # ...
  200. interface_driver = linuxbridge
  201. 配置 DHCP 代理
  202. DHCP 代理为虚拟网络提供 DHCP 服务。
  203. 编辑/etc/neutron/dhcp_agent.ini文件:
  204. 在该[DEFAULT]部分中,配置 Linux 桥接接口驱动程序、Dnsmasq DHCP 驱动程序,并启用隔离元数据,以便提供商网络上的实例可以通过网络访问元数据:
  205. [DEFAULT]
  206. # ...
  207. interface_driver = linuxbridge
  208. dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  209. enable_isolated_metadata = true
  210. 配置元数据代理
  211. 编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  212. 在该[DEFAULT]部分中,配置元数据主机和共享密钥:
  213. [DEFAULT]
  214. # ...
  215. nova_metadata_host = controller
  216. metadata_proxy_shared_secret = 000000
  217. 配置 Compute 服务以使用 Networking 服务
  218. 编辑/etc/nova/nova.conf文件:
  219. 在该[neutron]部分中,配置访问参数,启用元数据代理,并配置密钥:
  220. [neutron]
  221. # ...
  222. auth_url = http://controller:5000
  223. auth_type = password
  224. project_domain_name = default
  225. user_domain_name = default
  226. region_name = RegionOne
  227. project_name = service
  228. username = neutron
  229. password = 000000
  230. service_metadata_proxy = true
  231. metadata_proxy_shared_secret = 000000
  232. 替换METADATA_SECRET为您为元数据代理选择的机密。
  233. 填充数据库:
  234. $sudo su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
  235. --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
  236. 重启计算 API 服务:
  237. $service nova-api restart
  238. 重新启动网络服务。
  239. $ service neutron-server restart
  240. $ service neutron-linuxbridge-agent restart
  241. $ service neutron-dhcp-agent restart
  242. $ service neutron-metadata-agent restart
  243. 对于网络选项 2,还要重新启动第 3 层服务:
  244. $ service neutron-l3-agent restart

compute节点搭建Neutron服务

  1. $sudo apt install neutron-linuxbridge-agent
  2. 编辑/etc/neutron/neutron.conf文件:
  3. 在该[database]部分中,注释掉所有connection选项,因为计算节点不直接访问数据库。
  4. 在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:
  5. [DEFAULT]
  6. # ...
  7. transport_url = rabbit://openstack:000000@controller
  8. 在[DEFAULT]和[keystone_authtoken]部分,配置身份服务访问:
  9. [DEFAULT]
  10. # ...
  11. auth_strategy = keystone
  12. [keystone_authtoken]
  13. # ...
  14. www_authenticate_uri = http://controller:5000
  15. auth_url = http://controller:5000
  16. memcached_servers = controller:11211
  17. auth_type = password
  18. project_domain_name = default
  19. user_domain_name = default
  20. project_name = service
  21. username = neutron
  22. password = 000000
  23. 注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。
  24. 在该[oslo_concurrency]部分中,配置锁定路径:
  25. [oslo_concurrency]
  26. # ...
  27. lock_path = /var/lib/neutron/tmp
  28. 配置 Linux 网桥代理
  29. Linux 桥接代理为实例构建第 2 层(桥接和交换)虚拟网络基础架构并处理安全组。
  30. 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件:
  31. 在该[linux_bridge]部分中,将提供者虚拟网络映射到提供者物理网络接口:
  32. [linux_bridge]
  33. physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME(ens34)
  34. 替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。
  35. 在该[vxlan]部分中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:
  36. [vxlan]
  37. enable_vxlan = true
  38. local_ip = OVERLAY_INTERFACE_IP_ADDRESS(192.168.100.20)
  39. l2_population = true
  40. 替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的底层物理网络接口的 IP 地址。
  41. 示例架构使用管理接口将流量隧道传输到其他节点。因此,替换OVERLAY_INTERFACE_IP_ADDRESS为计算节点的管理IP地址。
  42. 在该[securitygroup]部分中,启用安全组并配置 Linux 网桥 iptables 防火墙驱动程序:
  43. [securitygroup]
  44. # ...
  45. enable_security_group = true
  46. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  47. 通过验证以下所有sysctl值都设置为,确保您的 Linux 操作系统内核支持网桥过滤器:
  48. net.bridge.bridge-nf-call-iptables
  49. net.bridge.bridge-nf-call-ip6tables
  50. 要启用网络桥接支持,通常br_netfilter需要加载内核模块。
  51. 配置 Compute 服务以使用 Networking 服务
  52. 编辑/etc/nova/nova.conf文件并完成以下操作:
  53. 在该[neutron]部分,配置访问参数:
  54. [neutron]
  55. # ...
  56. auth_url = http://controller:5000
  57. auth_type = password
  58. project_domain_name = default
  59. user_domain_name = default
  60. region_name = RegionOne
  61. project_name = service
  62. username = neutron
  63. password = 000000
  64. 重启计算服务:
  65. $ service nova-compute restart
  66. 重启 Linux 网桥代理:
  67. $ service neutron-linuxbridge-agent restart

八、Dashboard搭建

  1. $sudo apt install openstack-dashboard
  2. 编辑 /etc/openstack-dashboard/local_settings.py 文件:
  3. 配置仪表板以在controller节点上使用 OpenStack 服务 :
  4. OPENSTACK_HOST = "controller"
  5. 在仪表板配置部分,允许您的主机访问仪表板:
  6. ALLOWED_HOSTS = ['*']
  7. ALLOWED_HOSTS也可以['*']接受所有主机。这可能对开发工作有用,但可能不安全,不应在生产中使用。
  8. 配置memcached会话存储服务:
  9. SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
  10. CACHES = {
  11. 'default': {
  12. 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
  13. 'LOCATION': 'controller:11211',
  14. }
  15. }
  16. 启用身份 API 版本 3:
  17. OPENSTACK_KEYSTONE_URL = "http://%s/identity/v3" % OPENSTACK_HOST
  18. 启用对域的支持:
  19. OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
  20. 配置 API 版本:
  21. OPENSTACK_API_VERSIONS = {
  22. "identity": 3,
  23. "image": 2,
  24. "volume": 3,
  25. }
  26. 配置Default为您通过仪表板创建的用户的默认域:
  27. OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
  28. 配置user为您通过仪表板创建的用户的默认角色:
  29. OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
  30. (可选)配置时区:
  31. TIME_ZONE = "TIME_ZONE"
  32. 替换TIME_ZONE为适当的时区标识符。
  33. /etc/apache2/conf-available/openstack-dashboard.conf如果不包括,则添加以下行 。
  34. WSGIApplicationGroup %{GLOBAL}
  35. 重新加载 Web 服务器配置:
  36. $ systemctl reload apache2.service

九、访问Dashboard并实例发放

创建网络

创建云主机类型

创建实例

 点击Launch Instance

云服务器发放成功

 

运维就像是绿叶,没有绿叶的衬托,花儿始终是残缺的美!

没有Error就是最好的消息。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号