nova計算服務概述
nova是openstack中的核心組件之一,主要負責與計算相關的服務,如對虛擬機生命週期的管理。nova組件主要包括以下幾大服務:
1.nova-api服務:對外提供REST API服務,是nova服務的入口
2.nova-compute服務:提供計算服務,是nova中對虛擬機管理的核心服務,它可以通過調用不同Hypervisor的API來實現對虛擬機生命週期的管理。常見的Hypervisor有KVM,Xen和VMWare等。
3.nova-conductor服務:是nova中各個服務組件與數據庫交互的接口。nova架構設計中,因爲nova-compute服務經常需要更新數據,因此出於安全性和可擴展性的考慮,nova-compute不會直接訪問數據庫,而是通過nova-conductor來訪問數據庫。(其他的nova服務包括nova-api,nova-scheduler可以直接訪問數據庫)
4.nova-scheduler服務:提供對計算資源的調度,它提供了多種算法來應對不同場景下nova對資源的調度
5.nova-novncproxy服務:提供一個代理,用於訪問正在運行的實例,通過VNC協議,支持基於瀏覽器的novnc客戶端
6.nova-placement-api服務:Placement API 在 Newton 版本中被引入 Nova,主要用於跟蹤記錄 Resource Provider 的 Inventory 和 Usage,並使用不同的 Resource Classes 來標記資源類型。例如:一個 resource provider 可以是一個 compute node,一個 shared storage pool,或者是一個 IP allocation pool。
通常情況下,nova服務會部署於控制節點和計算節點上,其中nova-compute部署在計算節點,其他服務部署在控制節點。爲了後續能夠進行虛擬機在不同節點之間冷遷移和熱遷移的實驗,本次部署了兩個計算節點1和2,兩個計算節點的部署方法完全相同,所以nova的安裝部署教程主要分爲兩個部分,控制節點的安裝部署和計算節點的安裝部署。
控制節點nova的安裝部署
在數據庫中創建nova的表
mysql -uroot -pwwwwww
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
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';
創建nova和placement的user並綁定role,創建nova和placement服務
nova:
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
placement:
openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin
openstack service create --name placement --description “Placement API” placement
創建nova和placement服務的endpoint
nova:
openstack endpoint create --region RegionOne compute public http://控制節點主機名:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://控制節點主機名:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://控制節點主機名:8774/v2.1
placement
openstack endpoint create --region RegionOne placement public http://控制節點主機名:8778
openstack endpoint create --region RegionOne placement internal http://控制節點主機名:8778
openstack endpoint create --region RegionOne placement admin http://控制節點主機名:8778
安裝並配置nova組件
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
編輯配置文件/etc/nova/nova.conf
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:wwwwww@控制節點主機名
my_ip = 控制節點ip
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
connection = mysql://nova:nova@控制節點主機名/nova_api
[database]
connection = mysql://nova:nova@控制節點主機名/nova
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://控制節點主機名:35357/v3
memcached_servers = 控制節點主機名:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
api_servers = http://控制節點主機名: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://控制節點主機名:35357/v3
username = placement
password = placement
爲了實現對placement API的訪問,還需要在/etc/httpd/conf.d/00-nova-placement-api.conf添加如下配置並重啓httpd服務
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
systemctl restart httpd
systemctl status httpd
同步nova相關數據庫
# 填充nova-api數據庫(忽略此輸出中的任何棄用消息):
su -s /bin/sh -c “nova-manage api_db sync” nova
# 註冊cell0數據庫:
su -s /bin/sh -c “nova-manage cell_v2 map_cell0” nova
# 創建cell1單元格:
su -s /bin/sh -c “nova-manage cell_v2 create_cell --name=cell1 --verbose” nova
# 填充nova數據庫:
su -s /bin/sh -c “nova-manage db sync” nova
進入nova相關數據庫驗證是否寫入成功,此時nova庫中應該有110張表,nova-api庫中應該有32張表
完成安裝並啓動服務
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
systemctl status openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
計算節點nova-compute的安裝部署
該服務支持多個虛擬機管理程序來部署實例或虛擬機(VM)。爲簡單起見,此配置使用Quick EMUlator(QEMU)虛擬機管理程序和支持虛擬機硬件加速的計算節點上的基於內核的VM(KVM)擴展。在傳統硬件上,此配置使用通用QEMU管理程序。您可以通過稍作修改來遵循這些說明,以使用其他計算節點水平擴展您的環境。爲了後續實驗虛擬機在不同計算節點的冷熱遷移,安裝部署了兩個計算節點,兩個節點的安裝部署步驟完全相同
安裝配置nova-compute服務
yum install openstack-nova-compute
修改/etc/nova/nova.conf的配置
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:wwwwww@控制節點主機名
my_ip = 本計算節點ip地址
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
www_authenticate_uri = http://控制節點主機名:5000/
auth_url = http://控制節點主機名:35357/
memcached_servers = 控制節點主機名:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://控制節點主機名:6080/vnc_auto.html
[glance]
api_servers = http://控制節點主機名:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://控制節點主機名:35357/v3
username = placement
password = placement
檢查計算節點是否支持虛擬機的硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回值爲0,表明計算節點不支持虛擬機的硬件加速,需要在/etc/nova/nova.conf文件中修改如下配置
[libvirt]
virt_type = qemu
啓動nova-compute服務
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
將計算節點加入nova_cell數據庫
完成兩個計算節點的安裝配置後,在控制節點進行同步數據庫操作,將兩個節點加入nova_cell數據庫中
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
nova官方安裝文檔:https://docs.openstack.org/nova/train/install/get-started-compute.html