目標
緊接著《Ubuntu16手動安裝OpenStack——glance篇》,本文我們來安裝nova,主要參考Compute service、Install and configure controller node for Ubuntu、Install and configure a compute node for Ubuntu。
nova簡介
使用OpenStack Compute來托管和管理云計算系統(tǒng)。OpenStack Compute是基礎(chǔ)架構(gòu)即服務(wù)(IaaS)系統(tǒng)的主要部分。主要模塊用Python實現(xiàn)。
OpenStack Compute與OpenStack Identity交互以進行身份??驗證;OpenStack 鏡像服務(wù)用于磁盤和鏡像管理;OpenStack Dashboard用于用戶界面和管理界面。鏡像訪問受項目和用戶的限制;配額受每個項目限制(例如,實例數(shù))。OpenStack Compute可以在標準硬件上水平擴展,下載鏡像,然后啟動實例。
OpenStack Compute包含以下組件:
nova-api service
接受并響應(yīng)終端用戶compute API調(diào)用。該服務(wù)支持OpenStack Compute API。它強制執(zhí)行某些策略并啟動大多數(shù)活動,例如運行實例。
nova-api-metadata service
接受來自實例的元數(shù)據(jù)請求。在nova-network的多主機模式下運行時,通常會使用nova-api-metadata服務(wù)。
nova-compute service
通過虛擬機管理程序API,創(chuàng)建和終止虛擬機實例。例如:
- XenAPI for XenServer/XCP
- libvirt for KVM or QEMU
- VMwareAPI for VMware
處理相當(dāng)復(fù)雜。基本上,nova-compute守護程序接受來自隊列的操作,并執(zhí)行一系列系統(tǒng)命令,例如啟動KVM實例并更新其在數(shù)據(jù)庫中的狀態(tài)。
nova-placement-api service
跟蹤每個provider的庫存和使用情況。
nova-scheduler service
從隊列中獲取虛擬機實例請求,并確定它運行的計算服務(wù)器主機。
nova-conductor module
負責(zé)nova-compute服務(wù)和數(shù)據(jù)庫之間的交互。它消除了nova-compute服務(wù)對云數(shù)據(jù)庫的直接訪問。nova-conductor module可以水平伸縮。不要將其部署在運行nova-compute服務(wù)的節(jié)點上。
nova-consoleauth daemon
在控制臺代理為用戶授權(quán)tokens,參見nova-novncproxy和nova-xvpvncproxy。必須運行此服務(wù)才能使控制臺代理生效。可以針對群集配置中的單個nova-consoleauth服務(wù)運行任一類型的代理。
nova-novncproxy daemon
提供正在運行的實例的代理,該代理通過VNC連接訪問。支持基于瀏覽器的novnc客戶端。
nova-spicehtml5proxy daemon
提供正在運行的實例的代理,該代理通過SPICE連接訪問。支持基于瀏覽器的HTML5客戶端。
nova-xvpvncproxy daemon
提供正在運行的實例的代理,該代理通過VNC連接訪問。支持OpenStack特定的Java客戶端。
The queue
用于在守護進程之間傳遞消息的中央集線器。通常用RabbitMQ實現(xiàn),也可以用另一個AMQP消息隊列實現(xiàn),比如ZeroMQ。
SQL database
存儲云基礎(chǔ)架構(gòu)的大多數(shù)構(gòu)建時和運行時狀態(tài),包括:
- Available instance types
- Instances in use
- Available networks
- Projects
從理論上講,OpenStack Compute可以支持SQLAlchemy支持的任何數(shù)據(jù)庫。常見的數(shù)據(jù)庫是用于測試和開發(fā)工作的SQLite3,MySQL,MariaDB和PostgreSQL。
控制節(jié)點
root用戶
為了避免權(quán)限問題,建議切換到root用戶進行操作(否則要加很多sudo)。
sudo -i
數(shù)據(jù)庫
1、登錄數(shù)據(jù)庫
mysql -uroot -p
,密碼為openstack。
2、創(chuàng)建nova_api,nova,nova_placement和nova_cell0數(shù)據(jù)庫
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_placement;
CREATE DATABASE nova_cell0;
3、授權(quán)
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'%' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'openstack';
4、退出數(shù)據(jù)庫
exit;
服務(wù)證書和端點
1、使admin環(huán)境生效
. admin-openrc
2、創(chuàng)建nova用戶
openstack user create --domain default --password-prompt nova
根據(jù)提示設(shè)置密碼為openstack。
3、添加admin角色給nova用戶
openstack role add --project service --user nova admin
4、創(chuàng)建nova服務(wù)實體
openstack service create --name nova --description "OpenStack Compute" compute
5、創(chuàng)建計算服務(wù)API endpoints
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
服務(wù)證書和端點2
1、創(chuàng)建Placement service user
openstack user create --domain default --password-prompt placement
按照提示設(shè)置密碼為openstack。
2、添加Placement user到service project,并且賦予admin角色
openstack role add --project service --user placement admin
3、創(chuàng)建placement服務(wù)實體
openstack service create --name placement --description "Placement API" placement
4、創(chuàng)建Placement API服務(wù)端點
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
安裝配置組件
1、安裝組件
apt-get -y install nova-api nova-placement-api nova-conductor nova-consoleauth nova-scheduler nova-novncproxy python-novaclient
2、備份nova.conf
mv /etc/nova/nova.conf /etc/nova/nova.conf.bak
3、vim /etc/nova/nova.conf
,新建nova.conf內(nèi)容為:
[DEFAULT]
# define own IP
my_ip = 192.168.56.110
state_path = /var/lib/nova
enabled_apis = osapi_compute,metadata
log_dir = /var/log/nova
# RabbitMQ connection info
transport_url = rabbit://openstack:openstack@controller
[api]
auth_strategy = keystone
# Glance connection info
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = $state_path/tmp
# MariaDB connection info
[api_database]
connection = mysql+pymysql://nova:openstack@controller/nova_api
[database]
connection = mysql+pymysql://nova:openstack@controller/nova
# Keystone auth info
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = openstack
[placement]
auth_url = http://controller:5000
os_region_name = RegionOne
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = openstack
[placement_database]
connection = mysql+pymysql://nova:openstack@controller/nova_placement
[wsgi]
api_paste_config = /etc/nova/api-paste.ini
4、更改權(quán)限
chmod 640 /etc/nova/nova.conf
chgrp nova /etc/nova/nova.conf
5、生成數(shù)據(jù)庫表結(jié)構(gòu)
su -s /bin/bash nova -c "nova-manage api_db sync"
su -s /bin/bash nova -c "nova-manage cell_v2 map_cell0"
su -s /bin/bash nova -c "nova-manage db sync"
su -s /bin/bash nova -c "nova-manage cell_v2 create_cell --name cell1"
完成后查看日志:tail /var/log/nova/nova-manage.log
不放心的話,就登錄數(shù)據(jù)庫查看數(shù)據(jù)。
6、驗證一下cell0和cell1是否被正確注冊
nova-manage cell_v2 list_cells
7、重啟服務(wù),完成安裝
for service in api conductor scheduler consoleauth novncproxy; do
systemctl restart nova-$service
done
8、查看計算服務(wù)列表
openstack compute service list
計算節(jié)點
本節(jié)介紹如何在計算節(jié)點上安裝和配置Compute服務(wù),該服務(wù)支持多個虛擬機管理程序來部署實例或虛擬機(VM)。為簡單起見,此配置使用Quick EMUlator(QEMU)虛擬機管理程序,和支持虛擬機硬件加速的KVM擴展。可以按照教程進行小改,以便水平擴展計算節(jié)點。
安裝方法主要參考OpenStack Queens : Add Compute Nodes。
root用戶
為了避免權(quán)限問題,建議切換到root用戶進行操作(否則要加很多sudo)。
sudo -i
安裝配置
1、安裝組件
apt-get -y install nova-compute-kvm
2、備份nova.conf
mv /etc/nova/nova.conf /etc/nova/nova.conf.bak
3、vim /etc/nova/nova.conf
,新建nova.conf內(nèi)容為:
[DEFAULT]
# define own IP address
my_ip = 192.168.56.111
state_path = /var/lib/nova
enabled_apis = osapi_compute,metadata
log_dir = /var/log/nova
# RabbitMQ connection info
transport_url = rabbit://openstack:openstack@controller
[api]
auth_strategy = keystone
# enable VNC
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
# Glance connection info
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = $state_path/tmp
# Keystone auth info
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = openstack
[placement]
auth_url = http://controller:5000
os_region_name = RegionOne
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = openstack
[wsgi]
api_paste_config = /etc/nova/api-paste.ini
4、設(shè)置權(quán)限
chmod 640 /etc/nova/nova.conf
chgrp nova /etc/nova/nova.conf
5、硬件加速(可選)
egrep -c '(vmx|svm)' /proc/cpuinfo
如果看到大于等于1的數(shù)字,說明主機支持硬件加速,不需要額外的配置。
如果此命令返回零值,則計算節(jié)點不支持硬件加速,您必須將libvirt配置為使用QEMU而不是KVM。
編輯/etc/nova/nova-compute.conf文件,libvirt部分修改為:
[libvirt]
# ...
virt_type = qemu
6、重啟nova-compute服務(wù)
systemctl restart nova-compute
添加計算節(jié)點到數(shù)據(jù)庫
以下操作在controller節(jié)點操作。
1、使admin環(huán)境生效
. admin-openrc
2、查看計算服務(wù)列表
openstack compute service list
發(fā)現(xiàn),此時已經(jīng)多了nova-compute服務(wù)。
3、查看計算節(jié)點
openstack compute service list --service nova-compute
4、如果沒有看到計算節(jié)點,那么需要查找計算節(jié)點,并且進行注冊
su -s /bin/bash nova -c "nova-manage cell_v2 discover_hosts"
添加新的compute節(jié)點時,必須在控制器節(jié)點上運行nova-manage cell_v2 discover_hosts
以注冊這些新計算節(jié)點。或者,可以在/etc/nova/nova.conf中設(shè)置適當(dāng)?shù)拈g隔來自動發(fā)現(xiàn)和注冊節(jié)點:
[scheduler]
discover_hosts_in_cells_interval = 300
驗證操作
以下操作在controller節(jié)點操作。
1、使admin環(huán)境生效
. admin-openrc
2、列出服務(wù)組件,以驗證每個進程的成功啟動和注冊
openstack compute service list
成功的話可以看到四個服務(wù):nova-scheduler、nova-consoleauth、nova-conductor和nova-compute。
3、列出Identity服務(wù)中的API端點,以驗證與Identity服務(wù)的連接
openstack catalog list
4、列出鏡像服務(wù)中的鏡像,以驗證與鏡像服務(wù)的連接
openstack image list
5、檢查cells and placement API是否工作正常
nova-status upgrade check
控制節(jié)點安裝計算服務(wù)
1、安裝組件
apt -y install nova-compute-kvm
2、vim /etc/nova/nova.conf
,添加vnc配置:
# enable VNC
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
3、硬件加速(可選)
egrep -c '(vmx|svm)' /proc/cpuinfo
如果看到大于等于1的數(shù)字,說明主機支持硬件加速,不需要額外的配置。
如果此命令返回零值,則計算節(jié)點不支持硬件加速,您必須將libvirt配置為使用QEMU而不是KVM。
編輯/etc/nova/nova-compute.conf文件,libvirt部分修改為:
[libvirt]
# ...
virt_type = qemu
4、重啟nova-compute服務(wù)
systemctl restart nova-compute
5、添加到數(shù)據(jù)庫
su -s /bin/bash nova -c "nova-manage cell_v2 discover_hosts"
6、查看計算節(jié)點
openstack compute service list --service nova-compute