1. 程式人生 > >OpenStack—Q Nova安裝

OpenStack—Q Nova安裝

Nova安裝

一、計算服務概念

OpenStack計算與OpenStack身份進行互動以進行身份驗證;用於磁碟和伺服器映像的OpenStack映象服務;以及用於使用者和管理介面的OpenStack Dashboard。映象訪問受到專案和使用者的限制;每個專案的配額是有限的(例如,例項的數量)。OpenStack計算可以在標準硬體上橫向擴充套件,並下載映象到啟動例項。
OpenStack Compute由以下幾部分組成
Nova-api service


接受並響應終端使用者計算API呼叫。該服務支援OpenStack Compute API。它執行一些策略,併發起大多數編排活動,例如執行一個例項。
nova-api-metadata service
接受來自例項的元資料請求。當您使用nova-network安裝在多主機模式下執行時,通常使用nova-api-metadata服務。
nova-compute service
通過hypervisor api建立和終止虛擬機器例項的工作者守護程序。
• XenAPI for XenServer/XCP
• libvirt for KVM or QEMU
• VMwareAPI for VMware
處理相當複雜。基本上,守護程序從佇列中接受動作,並執行一系列系統命令,比如啟動KVM例項並在資料庫中更新其狀態。
nova-placement-api service

跟蹤每個提供者的庫存和使用情況。
nova-scheduler service
從佇列中取出一個虛擬機器例項請求,並確定它執行的哪個計算伺服器主機。
nova-conductor module
在nova-compute服務和資料庫之間進行互動。它消除了由nova-compute服務建立的雲資料庫的直接訪問。nova-導體模組水平地伸縮。但是,不要將其部署到nova-compute服務執行的節點上。
nova-consoleauth daemon
授權給控制檯代理提供的使用者令牌。參見nova-novncproxy和nova-xvpvncproxy。該服務必須執行控制檯代理才能工作。在叢集配置中,您可以在單個nova-慰藉eauth服務上執行任一型別的代理。
nova-novncproxy daemon

提供了通過VNC連線訪問執行例項的代理。支援基於瀏覽器的novnc客戶端。
nova-spicehtml5proxy daemon
提供了通過SPICE連線訪問執行例項的代理。支援基於瀏覽器的HTML5客戶端。
nova-xvpvncproxy daemon
提供了通過VNC連線訪問執行例項的代理。支援一個特定於openstack的Java客戶端。
The queue
在守護程序之間傳遞訊息的中心集線器。通常使用RabbitMQ實現,也可以使用另一個AMQP訊息佇列來實現,比如ZeroMQ。
SQL database
為雲基礎設施儲存大多數構建時和執行時狀態,包括:
• Available instance types
• Instances in use
• Available networks
• Projects
理論上,OpenStack計算可以支援任何SQLAlchemy支援的資料庫。通用資料庫是用於測試和開發工作的SQLite3,MySQL、MariaDB和PostgreSQL。

本節描述如何在控制器節點上安裝和配置計算服務,稱為nova

二、Controller—基礎配置

Controller節點

1.建立資料庫

# mysql -uroot -p123456
MariaDB [(none)]> create database nova_api;
MariaDB [(none)]> create database nova;
MariaDB [(none)]> create database nova_cell0;
MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'localhost' identified by '123456';
MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'%' identified by '123456';
MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'localhost' identified by '123456';
MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'%' identified by '123456';
MariaDB [(none)]> grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by '123456';
MariaDB [(none)]> grant all privileges on nova_cell0.* to 'nova'@'%' identified by '123456';

2.獲取admin憑證以獲得對admin-only CLI命令的訪問:

# . admin-openrc

3.建立計算服務證書:
(1)建立nova使用者

# openstack user create --domain default --password-prompt nova

在這裡插入圖片描述
(2)將admin角色新增到nova使用者中(無返回值)

# openstack role add --project service --user nova admin

(3)建立nova服務實體

# openstack service create --name nova --description "OpenStack Compute" compute

在這裡插入圖片描述
(4)建立Compute API服務端點

# 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

在這裡插入圖片描述
(5)使用您選擇的placementpass建立一個Placement service使用者

# openstack user create --domain default --password-prompt placement

在這裡插入圖片描述
(6)將Placement使用者新增到服務專案中,並具有admin角色(無返回值)

# openstack role add --project service --user placement admin

(7)在服務目錄中建立Place API入口

# openstack service create --name placement --description "Placement API" placement

在這裡插入圖片描述
(8)建立Placement API服務端點

# 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

在這裡插入圖片描述

三、Controller—安裝和配置元件

Controller節點

1.安裝相關包

# yum install -y openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
          openstack-nova-scheduler openstack-nova-placement-api

2.編輯/etc/nova/nova.conf檔案

(1)在[DEFAULT]選項
只啟用計算和元資料API
配置RabbitMQ訊息佇列訪問
配置my_ip選項來使用控制器節點的管理介面IP地址
開啟對網路服務的支援

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
my_ip = 192.168.100.10
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

注:預設情況下,Compute使用內部防火牆驅動程式。因為網路服務包括一個防火牆驅動程式,所以您必須使用nova.virt.防火牆來禁用計算防火牆驅動程式。NoopFirewallDriver防火牆的司機。

(2)在[api_database]和[database]選項,配置資料庫連結

[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api

[database]
connection = mysql+pymysql://nova:[email protected]/nova

(3)在[api]和[keystone_authtoken]選項,配置身份服務訪問

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123456

(4)在[vnc]選項,配置VNC代理來使用controller節點的管理介面IP地址

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

(5)在[glance]選項,配置映象服務的位置

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

(6)在[oslo_concurrency]選項,配置lock的路徑

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

(7)在[placement]選項,配置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:5000/v3
username = placement
password = 123456

(8)由於packaging bug, 你必須通過新增以下配置來啟用通往放置API的許可權

# vi /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion>
</Directory>

重啟httpd服務

# systemctl restart httpd

(9) 同步nova-api資料庫

# su -s /bin/sh -c "nova-manage api_db sync" nova

(10)註冊cell0資料庫
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
(11)建立cell1單元

# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

(12)同步nova資料庫

# su -s /bin/sh -c "nova-manage db sync" nova

(13)驗證nova cell0和cell1是否正確註冊

# nova-manage cell_v2 list_cells

注:請忽略以上輸出中的任何棄用訊息。
在這裡插入圖片描述
(14)啟動計算服務,並設定開機自啟

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

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

Compute節點
本節描述如何在計算節點上安裝和配置計算服務。該服務支援幾個虛擬機器監控程式部署例項或虛擬機器(vm)。為了簡單起見,這個配置使用Quick模擬器(QEMU)管理程式,在計算節點上使用基於核心的VM(KVM)擴充套件來支援虛擬機器的硬體加速。在遺留硬體上,這種配置使用通用QEMU hypervisor。您可以按照這些指令進行一些細微的修改,以使用額外的計算節點水平地擴充套件您的環境。

四、Compute—安裝配置

1.安裝相關包

# yum install -y openstack-nova-compute
  1. 編輯/etc/nova/nova.conf 檔案
    1)在[DEFAULT]選項,只啟用計算和元資料API
    配置RabbitMQ訊息佇列訪問
    配置my_ip選項
    啟用對網路服務的支援

    [DEFAULT]
    enabled_apis = osapi_compute,metadata
    transport_url = rabbit://openstack:[email protected]
    my_ip = 192.168.100.20
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver

2)在[api] 和 [keystone_authtoken] 選項,配置身份服務訪問

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123456

3)在[vnc]選項,啟用和配置遠端控制檯訪問

[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

伺服器元件監聽所有IP地址,代理元件只監聽計算節點的管理介面IP地址。基本URL指示你可以使用web瀏覽器訪問這個計算節點上的例項遠端控制檯的位置。
如果要訪問遠端控制檯的web瀏覽器駐留在無法解析controller主機名的主機上,則必須用controller節點的管理介面IP地址替換控制器。
4)在[glance]選項,配置映象服務API的位置

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

5)在 [oslo_concurrency]選項,配置lock路徑

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

6)在[placement] 選項,配置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:5000/v3
username = placement
passsword = 123456

7)確定你的計算節點是否支援虛擬機器的硬體加速:

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

如果這個命令返回一個或多個值,那麼你的計算節點支援硬體加速,而硬體加速通常不需要額外的配置。
如果這個命令返回值為0,那麼你的計算節點不支援硬體加速,您必須配置libvirt來使用QEMU而不是KVM。
編輯/etc/nova/nova.conf檔案的 [libvirt] 選項

[libvirt]
Virt_type = qemu

:如果nova-compute服務不能啟動,請檢視/var/log/nova/nova-compute.log檔案。Controller節點上的錯誤訊息AMQP伺服器:5672是不可訪問的,這可能表明controller節點上的防火牆阻止了對埠5672的訪問。配置防火牆,在controller節點上開啟5672埠,並在compute節點上重新啟動nova-compute服務。

Controller節點

1.獲取admin憑證以啟用admin-only CLI命令,然後確認資料庫中有compute hosts

# . admin-openrc
# openstack compute service list --service nova-compute

在這裡插入圖片描述

2.發現compute hosts

# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

在這裡插入圖片描述
注:當您新增新的compute節點時,您必須在controller節點上執行nova-manage cellv2發現主機來註冊那些新的compute節點。或者,您可以在/etc/nova/nova.conf中設定一個適當的間隔:

[scheduler]
discover_hosts_in_cells_interval = 300

五、驗證nova服務

controller節點

1.獲取管理憑證以獲得對admin-only CLI命令的訪問:

# . admin-openrc

2.列出服務元件,以驗證每個程序的成功啟動和註冊

# openstack compute service list

在這裡插入圖片描述
注:這個輸出應該指出在控制器節點上啟用的三個服務元件和在compute節點上啟用的一個服務元件。
3. 在身份服務中列出API端點,以驗證與身份服務的連線性

# openstack catalog list

在這裡插入圖片描述
:根據OpenStack元件的安裝,下面的端點列表可能會有所不同。同時忽略這個輸出中的任何警告。
4. 在Glance服務中列出映象,以驗證與Glance服務的連線

# openstack image list

在這裡插入圖片描述
5. 檢查cells和placement API是否成功

# nova-status upgrade check

在這裡插入圖片描述