本节描述如何在控制节点上安装和配置计算服务,代号 nova。
先决条件
在安装和配置计算服务之前,您必须创建数据库、服务凭证和 API 端点。
1、要创建数据库,请完成以下步骤:
以 root
用户身份使用数据库客户端连接到数据库服务器:
# mysql
创建 nova_api
、nova
和 nova_cell0
数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
授予对数据库的适当访问权限:
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';
用适当的密码替换 NOVA_DBPASS
。
退出数据库客户端连接。
2、Source admin
凭证获取对 admin 专用 CLI 命令的访问权限:
$ . admin-openrc
3、创建计算服务凭证:
创建 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 |
+---------------------+----------------------------------+
向 nova
用户添加 admin
角色:
$ 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、创建计算 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_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、将放置用户添加到服务项目的管理角色
$ openstack role add --project service --user placement admin
这个命令不提供输出。
7、在服务目录中创建放置 API 条目:
$ openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 2d1a27022e6e4185b86adac4444c495f |
| name | placement |
| type | placement |
+-------------+----------------------------------+
8、创建放置 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、安装包:
apt install nova-api nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler nova-placement-api
2、编辑 /etc/nova/nova.conf
文件并完成以下操作:
在 [api_database]
和 [database]
部分,配置数据库访问:
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
用您为计算数据库选择的密码替换 NOVA_DBPASS
。
在 [DEFAULT]
部分中,配置 RabbitMQ
消息队列访问:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
使用您在 RabbitMQ
中为 openstack
帐户选择的密码替换
RABBIT_PASS
。
在 [api]
和 [keystone_authtoken]
部分中,配置身份服务访问:
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
使用在身份服务中为 nova
用户选择的密码替换 NOVA_PASS
。
注释掉或删除
[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 使用内部防火墙驱动程序。由于网络服务包括一个防火墙驱动程序,所以您必须禁用 Compute 防火墙驱动,而是使用
nova.virt.firewall.NoopFirewallDriver
防火墙驱动。
在 [vnc]
部分,配置 vnc 代理,以使用控制节点的管理接口 IP 地址:
[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
在 [glance]
部分,配置镜像服务 API 的位置:
[glance]
# ...
api_servers = http://controller:9292
在 [oslo_concurrency]
部分中,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
由于打包 bug,从 [DEFAULT]
部分删除 log_dir
选项。
在 [placement]
部分,配置放置 API:
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
将 PLACEMENT_PASS
替换为在身份服务中为 placement
用户选择的密码。注释掉 [placement]
部分的其他选项。
3、同步 nova-api 数据库:
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 正确注册:
# nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+
完成安装
重启计算服务:
service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
网友评论