本節描述如何在計算節點上安裝和配置計算服務。該服務支持多個管理程序來部署實例或 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