Nova作为计算服务,需要由控制节点统一调配,由计算节点提供服务。因此部署Nova需要在控制节点和计算节点上分别进行操作。
控制节点
进入mariadb,创建Nova的数据库和用户
创建数据库
create database nova_api;
create database nova;
create database nova_cell0;
创建用户nova并赋予其上述三个库的所有权限
grant all privileges on nova_api.* to 'nova'@'%' identified by 'nova';
grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
grant all privileges on nova_cell0.* to 'nova'@'%' identified by 'nova';
创建nova和placement的user、service和endpoint
admin登录OpenStack
source openrc
创建用户nova
openstack user create --domain default --password=nova nova
将nova添加为管理员
openstack role add --project service --user nova admin
创建nova服务
openstack service create --name nova --description "OpenStack Compute" compute
创建endpoint
openstack endpoint create --region RegionOne compute public http://controller1:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller1:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller1:8774/v2.1
创建用户placement
openstack user create --domain default --password=placement placement
将placement添加为管理员
openstack role add --project service --user placement admin
创建placement服务
openstack service create --name placement --description "Placement API" placement
创建endpoint
openstack endpoint create --region RegionOne placement public http://controller1:8778
openstack endpoint create --region RegionOne placement internal http://controller1:8778
openstack endpoint create --region RegionOne placement admin http://controller1:8778
检查一下上述步骤是否成功:
查看用户
openstack user list
+----------------------------------+-----------+
| ID | Name |
+----------------------------------+-----------+
| 3f4350ab5acc4ac2bc915365279d8fd1 | nova |
| 6e1f6488725e4c5e85b23b3a089ef36c | placement |
查看服务
penstack service list
| ID | Name | Type |
+----------------------------------+-----------+-----------+
| 463632a27b2b41af94dd857cfee2bb36 | placement | placement |
| 8101c98d20a445eb89c6a0eae46ccf6e | nova | compute |
+----------------------------------+-----------+-----------+
查看endpoint
openstack endpoint list
| 44692e8cf1474235bb0331ea511ce545 | RegionOne | nova | compute | True | admin | http://controller1:8774/v2.1 |
| 57917f0d61c146899c5e339eb9a1a216 | RegionOne | nova | compute | True | public | http://controller1:8774/v2.1 |
| dc805226acdf4a4883b8487332a3f0e7 | RegionOne | nova | compute | True | internal | http://controller1:8774/v2.1 |
| 00a945a134b548c4aa04b64bdc86d09f | RegionOne | placement | placement | True | admin | http://controller1:8778 |
| 49ee058856654828a3df022698c69e10 | RegionOne | placement | placement | True | internal | http://controller1:8778 |
| 89f1f8e2a23849c18e501f052f9d7813 | RegionOne | placement | placement | True | public | http://controller1:8778 |
如以上均无问题,进入下一步
安装配置Nova服务
安装控制节点需要的nova软件包
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-console \
openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
编辑配置文件
vim /etc/nova/nova.conf
配置文件的内容和其含义写在下面了
修改/etc/httpd/conf.d/00-nova-placement-api.conf
cat >> /etc/httpd/conf.d/00-nova-placement-api.conf <<EOF
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
EOF
重启httpd
systemctl restart httpd
同步数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
查看nova的cell
nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |
| cell1 | 046be722-134f-431e-a36c-e27a6700ab69 |
+-------+--------------------------------------+
启动服务
systemctl enable openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler \
openstack-nova-conductor openstack-nova-novncproxy
systemctl restart openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler \
openstack-nova-conductor openstack-nova-novncproxy
查看服务是否启动
openstack compute service list
status栏表示服务是否启动,state栏表示服务是否对外提供服务,两者必须如下才算成功启动
+----+------------------+-------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+-------------+----------+---------+-------+----------------------------+
| 1 | nova-consoleauth | controller1 | internal | enabled | up | 2019-10-14T11:38:52.000000 |
| 2 | nova-conductor | controller1 | internal | enabled | up | 2019-10-14T11:38:56.000000 |
| 3 | nova-scheduler | controller1 | internal | enabled | up | 2019-10-14T11:38:53.000000 |
| 6 | nova-compute | compute1 | nova | enabled | up | 2019-10-14T11:38:57.000000 |
+----+------------------+-------------+----------+---------+-------+----------------------------+
计算节点
安装计算节点需要的nova服务包
yum -y install openstack-nova-compute
编辑配置文件
vim /etc/nova/nova.conf
启动服务
systemctl enable libvirtd openstack-nova-compute
systemctl restart libvirtd openstack-nova-compute
配置文件
控制节点的/etc/nova/nova.conf文件
[DEFAULT]
# 给出本主机的ip
my_ip = 192.168.88.111
# 支持网络服务
use_neutron = True
# 使用提供的防火墙规则
# 默认情况下,Compute使用内部防火墙驱动程序。
# 由于网络服务包含防火墙驱动程序,因此您必须使用此防火墙驱动程序禁用计算防火墙驱动程序。
firewall_driver = nova.virt.firewall.NoopFirewallDriver
# 规定默认启用的API:仅启用计算和元数据的API
enabled_apis = osapi_compute,metadata
# 给出消息队列访问渠道
transport_url = rabbit://openstack:openstack@controller1
[api]
# 身份认证服务使用keystone
auth_strategy = keystone
[api_database]
# 给出nova_api数据库连接方式
connection = mysql+pymysql://nova:nova@controller1/nova_api
[barbican]
[cache]
[cells]
[cinder]
[cloudpipe]
[conductor]
[console]
[consoleauth]
[cors]
[cors.subdomain]
[crypto]
[database]
# 给出nova数据库连接方式
connection = mysql+pymysql://nova:nova@controller1/nova
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
# 配置镜像服务的API
api_servers = http://controller1:9292
[guestfs]
[healthcheck]
[hyperv]
[image_file_url]
[ironic]
[key_manager]
[keystone_authtoken]
# 用户nova认证信息
auth_uri = http://controller1:5000
auth_url = http://controller1:35357
memcached_servers = controller1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[libvirt]
[matchmaker_redis]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
# 设置锁定文件的路径
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
# 用户placement认证信息
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller1:35357/v3
username = placement
password = placement
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[ssl]
[trusted_computing]
[upgrade_levels]
[vendordata_dynamic_auth]
[vmware]
[vnc]
# 配置vnc代理以使用控制节点的集群ip
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[workarounds]
[wsgi]
[xenserver]
[xvp]
计算节点的/etc/nova/nova.conf文件
计算节点的配置文件与控制节点基本一致,这里仅列出不同处。
[api_database]
[database]
[libvirt]
# 计算节点不支持硬件加速,此处必须设置为qemu,若支持硬件加速,则不需要添加此项
virt_type = qemu
[vnc]
enabled = True
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller1:6080/vnc_auto.html