nova计算服务(控制节点)
- 创建数据库
mysql -uroot -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
- 授权访问数据库,设置用户密码为:nova/nova
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';
FLUSH PRIVILEGES;
- 在keystone上注册nova服务
– 创建nova用户,密码自定义为nova
openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | cf5b4a1ac9284483a8601ce212b2150b |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
- 为nova用户的service项目添加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 | 91ef7780ac984136ac0a98a8382f97f0 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
- 创建nova API服务端点(endpoint)
openstack endpoint create --region RegionOne compute public http://controller-01:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 70039fd4b0434a79a3da46135a594e40 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 91ef7780ac984136ac0a98a8382f97f0 |
| service_name | nova |
| service_type | compute |
| url | http://controller-01:8774/v2.1 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne compute internal http://controller-01:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 71103854136c433e80868ed03405b3e3 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 91ef7780ac984136ac0a98a8382f97f0 |
| service_name | nova |
| service_type | compute |
| url | http://controller-01:8774/v2.1 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne compute admin http://controller-01:8774/v2.1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 54f013b9691d4e7d88e6d49334e7d16b |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 91ef7780ac984136ac0a98a8382f97f0 |
| service_name | nova |
| service_type | compute |
| url | http://controller-01:8774/v2.1 |
+--------------+----------------------------------+
- 创建Placement服务用户,密码自定义为placement
openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 46cd680656344258993928db3717f8ff |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
- 为placement用户的service项目添加admin角色权限,命令无输出
openstack role add --project service --user placement admin
- 创建placement API实体服务器
openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 10fc9bc017b04b74b7e2e26336cd29d4 |
| name | placement |
| type | placement |
+-------------+----------------------------------+
- 创建Placement API服务端点(endpoint)
openstack endpoint create --region RegionOne placement public http://controller-01:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 1e8c63189fb641e6869ce1b2dc76d43c |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10fc9bc017b04b74b7e2e26336cd29d4 |
| service_name | placement |
| service_type | placement |
| url | http://controller-01:8778 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne placement internal http://controller-01:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | b5540b49e3cc42e698bdc70949ed939f |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10fc9bc017b04b74b7e2e26336cd29d4 |
| service_name | placement |
| service_type | placement |
| url | http://controller-01:8778 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne placement admin http://controller-01:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | d3c848643e754bab9abeee225afb4603 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10fc9bc017b04b74b7e2e26336cd29d4 |
| service_name | placement |
| service_type | placement |
| url | http://controller-01:8778 |
+--------------+----------------------------------+
安装nova服务并配置
- 安装nova
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
- 编辑/etc/nova/nova.conf修改如下配置,注意修改为对应用户密码
[DEFAULT]
enabled_apis = osapi_compute,metadata
[api_database]
connection = mysql+pymysql://nova:nova@controller-01/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller-01/nova
[DEFAULT]
transport_url = rabbit://openstack:openstack@controller-01
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller-01:5000/v3
memcached_servers = controller-01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[DEFAULT]
my_ip = 192.168.1.10
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = true
server_listen = 192.168.1.10
server_proxyclient_address = 192.168.1.10
[glance]
api_servers = http://controller-01:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller-01:5000/v3
username = placement
password = placement
配置较多,检查修改是否正确
egrep -v "^$|^#" /etc/nova/nova.conf
- 编辑/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
- 初始化同步nova_api数据库,命令结果无输出
su -s /bin/sh -c "nova-manage api_db sync" nova
- 验证同步是否成功,输出有显示表信息
mysql -unova -pnova nova_api -e "show tables;"
- 注册cell0数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
Cell0 is already setup
- 创建cell1单元
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
77a4cf9d-b07d-4c30-9f3b-f94a3c06d35c
- 初始化同步nova数据库
su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
- 验证同步是否成功,输出有显示表信息
mysql -unova -pnova nova -e "show tables;"
mysql -unova -pnova nova_cell0 -e "show tables;"
- 验证cell0和cell1注册情况
nova-manage cell_v2 list_cells
+-------+--------------------------------------+---------------------------------------+----------------------------------------------------+
| Name | UUID | Transport URL | Database Connection |
+-------+--------------------------------------+---------------------------------------+----------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@controller-01/nova_cell0 |
| cell1 | 77a4cf9d-b07d-4c30-9f3b-f94a3c06d35c | rabbit://openstack:****@controller-01 | mysql+pymysql://nova:****@controller-01/nova |
+-------+--------------------------------------+---------------------------------------+----------------------------------------------------+
启动并设置开机自启动服务
systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
安装配置计算节点(计算节点)
- 包安装
yum install openstack-nova-compute
- 编辑/etc/nova/nova.conf修改如下配置
[DEFAULT]
enabled_apis = osapi_compute,metadata
[DEFAULT]
transport_url = rabbit://openstack:openstack@controller-01
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller-01:5000/v3
memcached_servers = controller-01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[DEFAULT]
my_ip = 192.168.1.11 # 根据当前计算节点修改IP
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller-01:6080/vnc_auto.html
[glance]
api_servers = http://controller-01:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller-01:5000/v3
username = placement
password = placement
完成安装
- 检查硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
结果返回值大于等于1表示节点支持硬件加速,配置/etc/nova/nova.conf文件[libvirt]部分virt_type = kvm
结果返回值等于0表示节点不支持硬件加速,配置/etc/nova/nova.conf文件[libvirt]部分virt_type = qemu
- 检查配置修改
egrep -v "^$|#" /etc/nova/nova.conf
- 启动并设置开机自启动服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
添加计算节点到cell数据库(控制节点)
- 加载环境变量,确认计算主机已在数据库存在
. keystonerc_admin
[root@controller-01 ~]# openstack compute service list --service nova-compute
+----+--------------+------------+------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+--------------+------------+------+---------+-------+----------------------------+
| 6 | nova-compute | compute-01 | nova | enabled | up | 2022-12-18T09:35:49.000000 |
+----+--------------+------------+------+---------+-------+----------------------------+
- 发现计算主机
[root@controller-01 ~]# 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 computes from cell 'cell1': 77a4cf9d-b07d-4c30-9f3b-f94a3c06d35c
Checking host mapping for compute host 'compute-01': bc007e34-4003-42d0-8a06-72bc36709e0a
Creating host mapping for compute host 'compute-01': bc007e34-4003-42d0-8a06-72bc36709e0a
Found 1 unmapped computes in cell: 77a4cf9d-b07d-4c30-9f3b-f94a3c06d35c
- 设置自动发现计算主机
以上发现计算主机为手动操作,每次添加计算节点都需要执行操作,也可以通过修改配置参数自动发现计算主机
编辑/etc/nova/nova.conf文件,修改如下配置
[scheduler]
discover_hosts_in_cells_interval = 300
验证操作(控制节点)
- 加载环境变量
. keystonerc_admin
- 列表查看安装的nova服务组件是否启动了每个进程
[root@controller-01 ~]# openstack compute service list
+----+------------------+---------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+---------------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | controller-01 | internal | enabled | up | 2022-12-18T10:30:31.000000 |
| 2 | nova-consoleauth | controller-01 | internal | enabled | up | 2022-12-18T10:30:30.000000 |
| 3 | nova-conductor | controller-01 | internal | enabled | up | 2022-12-18T10:30:29.000000 |
| 6 | nova-compute | compute-01 | nova | enabled | up | 2022-12-18T10:30:33.000000 |
+----+------------------+---------------+----------+---------+-------+----------------------------+
- 列表查看API端点在身份认证服务及其验证连接性
[root@controller-01 ~]# openstack catalog list
+-----------+-----------+--------------------------------------------+
| Name | Type | Endpoints |
+-----------+-----------+--------------------------------------------+
| placement | placement | RegionOne |
| | | public: http://controller-01:8778 |
| | | RegionOne |
| | | internal: http://controller-01:8778 |
| | | RegionOne |
| | | admin: http://controller-01:8778 |
| | | |
| keystone | identity | RegionOne |
| | | internal: http://controller-01:5000/v3/ |
| | | RegionOne |
| | | admin: http://controller-01:5000/v3/ |
| | | RegionOne |
| | | public: http://controller-01:5000/v3/ |
| | | |
| nova | compute | RegionOne |
| | | admin: http://controller-01:8774/v2.1 |
| | | RegionOne |
| | | public: http://controller-01:8774/v2.1 |
| | | RegionOne |
| | | internal: http://controller-01:8774/v2.1 |
| | | |
| glance | image | RegionOne |
| | | internal: http://controller-01:9292 |
| | | RegionOne |
| | | public: http://controller-01:9292 |
| | | RegionOne |
| | | admin: http://controller-01:9292 |
| | | |
+-----------+-----------+--------------------------------------------+
- 列表查看镜像服务在身份认证服务及其验证连接性
[root@controller-01 ~]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 8fe2a430-6e12-4de9-b9e6-202094bd6c2f | cirros | active |
+--------------------------------------+--------+--------+
- 检查cell跟placement API工作状态
[root@controller-01 ~]# nova-status upgrade check
Option "os_region_name" from group "placement" is deprecated. Use option "region-name" from group "placement".
+--------------------------------+
| Upgrade Check Results |
+--------------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Resource Providers |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: API Service Version |
| Result: Success |
| Details: None |
+--------------------------------+
提示Option “os_region_name” from group “placement” is deprecated. Use option “region-name” from group “placement”.这是Queens版问题,编辑/etc/nova/nova.conf文件,修改[placement]域下的参数os_region_name = RegionOne为region_name = RegionOne
nova计算服务安装完成。