Nova 安裝與設定

本章節會說明與操作如何安裝運算服務到 Controller 與 Compute 節點上,並修改相關設定檔。若對於 Nova 不瞭解的人,可以參考 Nova 運算服務章節

Controller Node

在 Controller 節點我們需要安裝 Nova 中的 API Server、Scheduler、noVNC Proxy 等等的服務。

安裝前準備

在開始安裝前,要預先建立一個資料庫給 Nova 儲存相關資訊,使用以下指令建立資料庫:

$ mysql -u root -p

透過以下命令用來更新現有帳號資料或建立 Nova 與 Nova API 資料庫:

CREATE DATABASE nova;
CREATE DATABASE nova_api;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';

這邊NOVA_DBPASS可以隨需求修改。

完成後離開資料庫,接著要建立 Service 與 API Endpoint,首先導入 admin 環境變數:

$ . admin-openrc

接著透過以下流程來建立 Nova 的使用者、Service 以及 API Endpoint:

# 建立 Nova user
$ openstack user create --domain default \
--password NOVA_PASS --email [email protected] nova

# 新增 Nova 到 Admin Role
$ openstack role add --project service --user nova admin

# 建立 Nova service
$ openstack service create --name nova --description "OpenStack Compute" compute

# 建立 Nova public endpoints
$ openstack endpoint create --region RegionOne \
compute public http://10.0.0.11:8774/v2.1/%\(tenant_id\)s

# 建立 Nova internal endpoints
$ openstack endpoint create --region RegionOne \
compute internal http://10.0.0.11:8774/v2.1/%\(tenant_id\)s

# 建立 Nova admin endpoints
$ openstack endpoint create --region RegionOne \
compute admin http://10.0.0.11:8774/v2.1/%\(tenant_id\)s

Controller 套件安裝與設定

在開始設定之前,首先要安裝相關套件與 OpenStack 服務套件,可以透過以下指令進行安裝:

$ sudo yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler

安裝完成後,編輯/etc/nova/nova.conf設定檔,在[DEFAULT]部分加入以下內容:

[DEFAULT]
...
enabled_apis = osapi_compute,metadata
rpc_backend = rabbit
auth_strategy = keystone

use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

my_ip = MANAGEMENT_IP

P.S. MANAGEMENT_IP這邊為10.0.0.11

[vnc]部分加入以下內容:

[vnc]
vncserver_listen = 10.0.0.11
vncserver_proxyclient_address = 10.0.0.11

[database]部分修改使用以下方式:

[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@10.0.0.11/nova

這邊NOVA_DBPASS可以隨需求修改。

[api_database]部分修改使用以下方式:

[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@10.0.0.11/nova_api

這邊NOVA_DBPASS可以隨需求修改。

[oslo_messaging_rabbit]部分加入以下內容:

[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

這邊RABBIT_PASS可以隨需求修改。

[keystone_authtoken]部分加入以下內容:

[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
memcached_servers = 10.0.0.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS

這邊NOVA_PASS可以隨需求修改。

[glance]部分加入以下內容:

[glance]
api_servers = http://10.0.0.11:9292

[oslo_concurrency]部分加入以下內容:

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

完成所有設定後,即可同步資料庫來建立 Nova 與 Nova API 資料表:

sudo nova-manage api_db sync
sudo nova-manage db sync

完成後設定開機時啟動服務:

$ sudo systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service

完成後啟動 Nova 服務:

$ sudo systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service

Compute Node

安裝與設定完成 Controller 上的 Nova 所有服務後,接著要來設定實際執行虛擬機實例的 Compute 節點。該節點只會安裝一些 Linux 相關套件與 nova-compute 服務。

Compute 套件安裝與設定

在開始設定之前,首先要安裝相關套件與 OpenStack 服務套件,可以透過以下指令進行安裝:

$ sudo yum install openstack-nova-compute

安裝完成後,編輯/etc/nova/nova.conf設定檔,在[DEFAULT]部分加入以下內容:

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone

use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
resume_guests_state_on_host_boot = true

my_ip = MANAGEMENT_IP

P.S. MANAGEMENT_IP這邊為10.0.0.31

[vnc]部分加入以下內容:

[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.31
novncproxy_base_url = http://10.0.0.11:6080/vnc_auto.html

這邊novncproxy_base_url的 port 要隨著 proxy 節點設定改變。

[oslo_messaging_rabbit]部分加入以下內容:

[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

這邊RABBIT_PASS可以隨需求修改。

[keystone_authtoken]設部分加入以下內容:

[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
memcached_servers = 10.0.0.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS

這邊NOVA_PASS可以隨需求修改。

[glance]部分加入以下內容:

[glance]
api_servers = http://10.0.0.11:9292

[oslo_concurrency],部分加入以下內容:

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

最後要設定虛擬機使用的虛擬化技術,首先檢查主機是否支援硬體加速,利用以下方式得知:

egrep -c '(vmx|svm)' /proc/cpuinfo

或使用以下方式:

$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

若取得的值 > 1 的話,表示該節點可能支援硬體加速,故使用預設的 KVM 技術。若是 0 的話,則需設定 nova-compute 使用其他虛擬化技術。要設定可以透過編輯/etc/nova/nova-compute.conf來修改[libvirt]部分:

[libvirt]
virt_type = qemu

完成後設定開機時啟動服務:

$ sudo systemctl enable libvirtd.service \
openstack-nova-compute.service

完成後啟動 Nova 所有服務:

$ sudo systemctl start libvirtd.service \
openstack-nova-compute.service

驗證服務

回到 Controller 節點導入 admin 帳號,來透過 Nova client 查看服務狀態:

$ . admin-openrc

這邊可以透過 Nova client 來查看服務列表,如以下方式:

$ openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-consoleauth | controller | internal | enabled | up    | 2016-03-30T17:36:24.000000 | -               |
| 2  | nova-cert        | controller | internal | enabled | up    | 2016-03-30T17:36:24.000000 | -               |
| 3  | nova-scheduler   | controller | internal | enabled | up    | 2016-03-30T17:36:24.000000 | -               |
| 4  | nova-conductor   | controller | internal | enabled | up    | 2016-03-30T17:36:25.000000 | -               |
| 5  | nova-compute     | compute    | nova     | enabled | up    | 2016-03-30T17:36:24.000000 | -               |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+