本节描述如何在计算节点上安装和配置计算服务。该服务支持多个管理程序来部署实例或 vm。为简单起见,此配置使用 QEMU 管理程序,并在计算节点上支持 KVM 扩展,以支持虚拟机的硬件加速。在传统硬件上,此配置使用通用的 QEMU 管理程序。您可以按照这些指令进行小的修改,以使您的环境与额外的计算节点横向扩展。
本节假设您按照本指南中的说明逐步配置第一个计算节点。如果您想配置额外的计算节点,请在示例体系架构部分的第一个计算节点上以类似的方式准备它们。每个额外的计算节点需要一个唯一的IP地址。
安装和配置组件
默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。同时,配置片段中的省略号 (
…
) 表示您应该保留的潜在的默认配置选项。
1、安装包:
apt install nova-compute
2、编辑 /etc/nova/nova.conf
文件并完成以下操作:
在 [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
选项:
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
将 MANAGEMENT_INTERFACE_IP_ADDRESS
替换为计算节点上管理网络接口的 IP 地址,通常为示例体系架构中的第一个节点 10.0.0.31。
在 [DEFAULT]
部分,启用网络服务支持:
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
默认情况下,Compute 使用内部防火墙服务。由于网络包括一个防火墙服务,您必须使用 nova.virt.firewall.NoopFirewallDriver
来禁用计算防火墙服务。
在 [vnc]
部分中,启用和配置远程控制台访问:
[vnc]
# ...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
服务器组件侦听所有 IP 地址,代理组件只侦听计算节点的管理接口 IP 地址。URL 显示了 web 远程访问实例的控制台地址。
如果 web 浏览器所在的主机无法解析
controller
的地址,那么你需要使用管理接口的 IP 地址来代替controller
。
在 [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]
部分的其他选项。
完成安装
1、确认您的计算节点是否支持虚拟机的硬件加速:
$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果该命令返回 1 或更大的值,则计算节点支持硬件加速,这通常不需要额外的配置。
如果该命令返回 0,则计算节点不支持硬件加速,您必须配置 libvirt
以使用 QEMU 而不是 KVM。
在 /etc/nova/nova-compute.conf
中编辑 [libvirt]
部分。配置文件如下:
[libvirt]
# ...
virt_type = qemu
2、重新启动计算服务:
service nova-compute restart
如果
nova-compute
服务未能启动,请检查/var/log/nova/nova-compute.log
。错误信息AMQP server on controller:5672 is unreachable
可能表明控制器节点上的防火墙阻止访问端口 5672。配置防火墙以打开控制器节点上的 5672 端口,并在计算节点上重新启动nova-compute
服务。
将计算节点添加到元数据库
在 controller 节点上运行以下命令。
1、source admin
凭据启用 admin 专用 CLI 命令,然后确认数据库中有计算主机:
$ . admin-openrc
$ openstack hypervisor list
+----+---------------------+-----------------+-----------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+-----------+-------+
| 1 | compute1 | QEMU | 10.0.0.31 | up |
+----+---------------------+-----------------+-----------+-------+
2、发现计算主机:
# 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