Ubuntu16手動安裝OpenStack——nova篇

目標

緊接著《Ubuntu16手動安裝OpenStack——glance篇》,本文我們來安裝nova,主要參考Compute serviceInstall and configure controller node for UbuntuInstall 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

image

7、重啟服務(wù),完成安裝

for service in api conductor scheduler consoleauth novncproxy; do
systemctl restart nova-$service
done

8、查看計算服務(wù)列表
openstack compute service list

image

計算節(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

image

發(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"

image

添加新的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

image

成功的話可以看到四個服務(wù):nova-scheduler、nova-consoleauth、nova-conductor和nova-compute。

3、列出Identity服務(wù)中的API端點,以驗證與Identity服務(wù)的連接
openstack catalog list

image

4、列出鏡像服務(wù)中的鏡像,以驗證與鏡像服務(wù)的連接
openstack image list

image

5、檢查cells and placement API是否工作正常
nova-status upgrade check

image

控制節(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

image

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容