4、Compute Service(計算服務)


1、概述

使用OpenStack Compute來托管和管理雲計算系統。OpenStack Compute是基礎架構即服務(IaaS)系統的主要部分主要模塊在Python中實現。

OpenStack Compute與OpenStack Identity進行交互以進行身份​​驗證; 和OpenStack Image交互以進行磁盤和服務器鏡像管理; 和OpenStack dashboard交互以提供用戶和管理界面的接口。鏡像訪問受到項目和用戶的限制; 每個項目的配額有限(例如數量)。OpenStack Compute可以在標准硬件上水平擴展,並下載鏡像以啟動實例。

OpenStack Compute由以下幾個方面組成:

nova-api  服務
接受並響應最終用戶的計算API調用。該服務支持OpenStack Compute API,Amazon EC2 API和特殊的Admin API,用於特權用戶執行管理操作。它執行一些策略並啟動大多數業務流程活動,例如運行一個實例。
nova-api-metadata  服務
接受來自實例的元數據請求。 nova-api-metadata  當您在多主機模式下運行 nova-network 安裝時,通常使用服務 
nova-compute  服務

通過虛擬機管理程序API創建和終止虛擬機實例的工作程序守護程序。例如:

  • 適用於XenServer / XCP的XenAPI
  • KVM或QEMU的libvirt
  • 適用於VMware的VMwareAPI

處理相當復雜。基本上,守護程序接受隊列中的操作,並執行一系列系統命令,例如啟動KVM實例並更新數據庫中的狀態。

nova-scheduler  服務
從隊列獲取虛擬機實例請求,並確定運行哪個計算服務器主機。
nova-conductor  模
中介 nova-compute 服務和數據庫之間的交互它消除了對 nova-compute 服務器所做的雲數據庫的直接訪問 nova-conductor 模塊水平縮放。但是,請勿將其部署到 nova-compute 運行服務的節點上 
nova-cert  模型
為X509證書提供Nova Cert服務的服務器守護程序。用於生成證書  euca-bundle-image 只需要EC2 API。
nova-network worker  守護進程
nova-compute 服務類似,接受隊列中的聯網任務並操縱網絡。執行諸如設置橋接接口或更改IPtables規則等任務。
nova-consoleauth  守護進程
為控制台代理提供的用戶授權令牌。看到  nova-novncproxy nova-xvpvncproxy 此服務必須運行才能使控制台代理工作。您可以在集群配置中針對單個nova-consoleauth服務運行任一類型的代理。
nova-novncproxy  守護進程
提供通過VNC連接訪問運行實例的代理。支持基於瀏覽器的novnc客戶端。
nova-spicehtml5proxy  守護進程
提供通過SPICE連接訪問運行實例的代理。支持基於瀏覽器的HTML5客戶端。
nova-xvpvncproxy  守護進程
提供通過VNC連接訪問運行實例的代理。支持特定於OpenStack的Java客戶機。
nova-cert  守護進程
x509證書。
nova  客戶
允許用戶作為租戶管理員或最終用戶提交命令。
The queue
在守護進程之間傳遞消息的中心樞紐。通常用 RabbitMQ 實現,也可以用另一個AMQP消息隊列來實現,如 ZeroMQ
SQL數據庫

存儲雲基礎架構的大部分構建時間和運行時狀態,包括:

  • 可用的實例類型
  • 正在使用的實例
  • 可用網絡
  • 項目

理論上,OpenStack Compute可以支持SQL-Alchemy支持的任何數據庫。公共數據庫是用於測試和開發工作的SQLite3,MySQL,MariaDB和PostgreSQL。

2、環境准備
2.1、創建數據庫(,服務憑據和API端點)。
2.1.1、連接數據庫
# mysql -u root -p

2.1.2、創建nova_apinova數據庫

MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)

2.1.3、授予數據庫訪問權限

MariaDB [(none)]> grant all privileges on nova_api .* to 'nova'@'localhost' identified by 'daemon';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on nova_api .* to 'nova'@'%' identified by 'daemon';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all privileges on nova .* to 'nova'@'localhost' identified by 'daemon';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on nova .* to 'nova'@'%' identified by 'daemon';
Query OK, 0 rows affected (0.00 sec)

2.2、輸入admin憑據以訪問僅管理CLI命令

# source admin-openrc 

2.3、創建服務憑據

2.3.1、創建nova用戶

# openstack user create --domain default \
>   --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 037784f488424d98aa48586caf0813cf |
| name                | nova                             |
| password_expires_at | None                             |
+---------------------+----------------------------------+

2.3.2、admin角色添加nova用戶

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

2.3.3、創建nova服務實體

# openstack service create --name nova \
>   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 512ecd99568448178f7beb16720bc7ba |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

2.4、創建Compute服務API端點

# openstack endpoint create --region RegionOne \
>   compute public http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 0b3eaec2ea364ba1b3c1e6b67c99847f          |
| interface    | public                                    |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 512ecd99568448178f7beb16720bc7ba          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
# openstack endpoint create --region RegionOne \
>   compute internal http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 9a8ead97c6f04bb8a88991fa8425e3a0          |
| interface    | internal                                  |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 512ecd99568448178f7beb16720bc7ba          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
# openstack endpoint create --region RegionOne \
>   compute admin http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 7d2825d796944fc3a6e8155a7c2b75c9          |
| interface    | admin                                     |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 512ecd99568448178f7beb16720bc7ba          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+

3、在控制節點上安裝和配置compute服務

3.1、安裝軟件包

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

3.2、配置(/etc/nova/nova.conf)

3.2.1、[DEFAULT]節中,僅啟用計算和元數據API

[DEFAULT]
...
enabled_apis = osapi_compute,metadata

3.2.2、[api_database][database]部分,配置數據庫訪問

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

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

3.2.3、[DEFAULT]節中,配置RabbitMQ 消息隊列訪問

[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller

3.2.4、[DEFAULT][keystone_authtoken]部分,配置身份服務訪問

[DEFAULT]
...
auth_strategy = keystone

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

NOTICE:注釋掉或刪除該[keystone_authtoken]部分中的任何其他選項 

3.2.5、[DEFAULT]節中,配置my_ip選項以使用控制器節點的管理接口IP地址

[DEFAULT] 
... 
my_ip  =  10.0.0.11

3.2.6、[DEFAULT]節中,啟用對網絡服務的支持

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

Notice:默認情況下,Compute使用內部防火牆驅動程序。由於網絡服務包含防火牆驅動程序,
因此您必須使用
nova.virt.firewall.NoopFirewallDriver防火牆驅動程序,
禁用Compute防火牆驅動程序。

3.2.7、[vnc]節中,配置VNC代理以使用控制器節點的管理接口IP地址

[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

3.2.8、[glance]節中,配置Image Service API的位置

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

3.2.9、[oslo_concurrency]節中,配置鎖定路徑

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

3.3、完成以上配置之后,填充數據庫

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

忽略此輸出中的任何廢棄消息。

3.4、完成安裝,設置啟動和自啟動

# 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

4、在計算節點上安裝和配置Compute服務

4.1、安裝和配置組件(/etc/nova/nova.conf)

4.1.1、安裝軟件包

# yum install openstack-nova-compute

4.1.2、配置組件

4.1.2.1、[DEFAULT]部分中,僅啟用計算和元數據API

[DEFAULT]
...
enabled_apis = osapi_compute,metadata

4.1.2.2、[DEFAULT]節中,配置RabbitMQ 消息隊列訪問

[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller

4.1.2.3、[DEFAULT][keystone_authtoken]部分,配置身份服務訪問

[DEFAULT]
...
auth_strategy = keystone

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

注釋掉或刪除該[keystone_authtoken]部分中的任何其他選項 

4.1.2.4、[DEFAULT]節中,配置my_ip選項

[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

替換MANAGEMENT_INTERFACE_IP_ADDRESS為計算節點上的管理網絡接口的IP地址

4.1.2.5、[DEFAULT]節中,啟用對網絡服務的支持

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

默認情況下,Compute使用內部防火牆服務。由於網絡包括防火牆服務,因此您必須使用nova.virt.firewall.NoopFirewallDriver防火牆驅動程序禁用Compute防火牆服務 

4.1.2.6、[vnc]節中,啟用和配置遠程控制台訪問

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

服務器組件偵聽所有IP地址,代理組件只偵聽計算節點的管理接口IP地址。基本URL表示可以使用Web瀏覽器訪問此計算節點上實例的遠程控制台的位置。

4.1.2.7、[glance]節中,配置Image Service API的位置

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

4.1.2.8、[oslo_concurrency]部分中,配置鎖定路徑

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

4.2、完成安裝

4.2.1、確定您的計算節點是否支持虛擬機的硬件加速

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

如果此命令返回大於0的值,則您的計算節點支持硬件加速,通常不需要額外的配置。

如果此命令返回值0,則您的計算節點不支持硬件加速,您必須配置libvirt 為使用QEMU而不是KVM。

4.2.1.1、編輯 /etc/nova/nova.conf文件中[libvirt]部分

[libvirt]
...
virt_type = qemu

4.2.2、啟動Compute服務,包括其依賴關系,並將其配置為在系統引導時自動啟動

# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service

如果nova-compute服務無法啟動,請檢查 /var/log/nova/nova-compute.log錯誤消息 可能表示控制器節點上的防火牆阻止訪問端口5672。AMQP server on controller:5672 isunreachable

 5、問題

5.1、4.2.2中無法啟動計算服務

原因為無法連接控制節點5672端口,可以使用以下命令開放該端口

開放5672端口
# firewall-cmd --permanent --add-port=5672/tcp
重啟防火牆服務
# systemctl restart firewalld.service

 6、在控制器節點上 驗證操作

6.1、讀取admin憑據以訪問僅管理CLI命令

# source admin-openrc 

6.2、列出服務組件,以驗證每個進程的成功啟動和注冊

# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth | controller | internal | enabled | up    | 2017-07-21T02:04:33.000000 |
|  2 | nova-conductor   | controller | internal | enabled | up    | 2017-07-21T02:04:33.000000 |
|  5 | nova-scheduler   | controller | internal | enabled | up    | 2017-07-21T02:04:33.000000 |
|  7 | nova-compute     | compute    | nova     | enabled | up    | 2017-07-21T02:04:30.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

該輸出應指示在控制器節點上啟用的三個服務組件和在計算節點上啟用的一個服務組件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM