天天看點

OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署

目錄

  • 一、概述
  • 二、Nova系統架構
    • 一、API
    • 二、Scheduler
      • 一、選擇計算節點
      • 二、排程器類型
      • 三、過濾器
    • 三、compute
    • 四、conductor
    • 五、PlacementAPl
    • 六、cell架構
  • 三、部署
    • 一、Placement
      • 一、建立資料庫
      • 二、建立placement使用者和API的endpoint
    • 二、Nova
      • 一、建立Nova資料庫
      • 二、管理Nova使用者和服務(控制節點)
      • 三、配置計算節點Nova服務
      • 四、控制節點

一、概述

1、計算服務是openstack最核心的服務之一,負責維護和管理雲環境的計算資源,它在openstack項目中代号是nova。

2、Nova自身并沒有提供任何虛拟化能力,它提供計算服務,使用不同的虛拟化驅動來與底層支援的Hypervisor(虛拟機管理器)進行互動。所有的計算執行個體(虛拟伺服器)由Nova進行生命周期的排程管理(啟動、挂起、停止、删除等)。

3、Nova需要keystone、glance、neutron、cinder和swift等其他服務的支援,能與這些服務內建,實作如加密磁盤、裸金屬計算執行個體等。

二、Nova系統架構

1、Nova是有多個伺服器程序組成,每個程序執行不同的功能。

2、DB:用于資料存儲的sql資料庫。

3、API:用于接收HTTP請求、轉換指令、通過消息隊列或HTTP與其他元件通信的nova元件。

4、Scheduler:用于決定哪台計算節點承載計算執行個體的nova排程器。

5、Network:管理lP轉發、網橋或虛拟區域網路的nova網絡元件。

6、Compute:管理虛拟機管理器與虛拟機之間通信的nova計算元件。

7、Conductor:處理需要協調(建構虛拟機或調整虛拟機大小)的請求,或者處理對象轉換。

一、API

1、接收、響應OpenStack内部請求、還會做為對接OpenStack外部服務的主要接口。

2、nova-api上可查詢其他服務的API位置(URL)。

3、Nova-api對接收到的HTTPAPI請求做以下處理:

① 接受請求:檢查用戶端傳入的參數是否合法有效。

② 處理請求分發任務:調用nova其他服務來處理用戶端HTTP請求。

③ 回複請求:格式化nova其他子服務傳回結果并傳回給用戶端。

二、Scheduler

一、選擇計算節點

1、Scheduler可譯為排程器,由nova-scheduler服務實作,主要解決的是如何選擇在哪個計算節點上啟動執行個體的問題。

2、Nova-scheduler服務會從隊列中接收一個虛拟機執行個體的請求,通過讀取資料庫的内容,從可用資源池中選擇最合适的計算節點來建立新的虛拟機執行個體。

3、根據客戶的請求Scheduler會通過預選和優選,來選擇在最優計算傑斯安上啟動執行個體。

① 預選:過濾不符合客戶要求的計算節點

② 優選:預選之後,對剩餘的計算節點資源進行函數及權重的運算,得到最适合啟動執行個體的計算節點。

二、排程器類型

随機排程器(chance scheduler):從所有正常運作nova-compute服務的節點中随機選擇。

随機排程器(chance scheduler):從所有正常運作nova-compute服務的節點中随機選擇。

緩存排程器(caching scheduler):可看作随機排程器的一種特殊類型,在随機排程的基礎上将主機資源資訊緩存在本地記憶體中,然後通過背景的定時任務定時從資料庫中擷取最新的主機資源資訊。

三、過濾器

當過濾排程器需要執行排程操作時,會讓過濾器對計算節點進行判斷,傳回True或False。
過濾排程器将按照清單中的順序一次進行過濾。
           

再審過濾器(RetryFilter)

主要作用是過濾掉之前已經排程過的節點。如A、B、C都通過了過濾,A權重最大被選中執行操作,由于某種原因,操作在A上失敗了。Nova-filter将重新執行過濾操作,那麼此時A就被會RetryFilter直接排除,以免再次失敗。

可用區域過濾器(AvailabilityZoneFilter)

為提高容災性并提供隔離服務,可以将計算節點劃分到不同的可用區域中。Openstack預設有一個命名為nova的可用區域,所有的計算節點初始是放在nova區域中的。使用者可以根據需要建立自己的一個可用區域。建立執行個體時,需要指定将執行個體部署在哪個可用區域中。Nova-scheduler執行過濾操作時,會使用AvailabilityZoneFilter不屬于指定可用區域計算節點過濾掉。

記憶體過濾器(RamFilter)

根據可用記憶體來排程虛拟機建立,将不能滿足執行個體類型記憶體需求的計算節點過濾掉,但為了提高系統資源使用率,Openstack在計算節點的可用記憶體時允許超過實際記憶體大小,超過的程度是通過nova.conf配置檔案中。

硬碟排程器(DiskFilter)

根據磁盤空間來排程虛拟機建立,将不能滿足類型磁盤需求的計算節點過濾掉。磁盤同樣允許超量,超量值可修改nova.conf中disk_allocation_ratio參數控制,預設值是1.0。

核心過濾器(CoreFilter)

根據可用CPU核心來排程虛拟機建立,将不能滿足執行個體類型vCPU需求的計算節點過濾掉。vCPU也允許超量,超量值是通過修改nova.conf中cpu_allocation_ratio參數控制,預設值是16。

計算過濾器(ComputeFilter)

保證隻有nova-compute服務正常工作的計算節點才能被nova-scheduler排程,它是必選的過濾器。

計算能力過濾器(ComputeCapablilitiesFilter)

根據計算節點的特性來過濾,如x86_64和ARM架構的不同節點,要将執行個體的不同節點類型進行配置設定。

鏡像屬性過濾器(lmagePropertiesFilter)

根據所選鏡像的屬性來篩選比對的計算節點。通過中繼資料來指定其屬性。如希望鏡像隻運作在KVM的Hypervisor上,可以通過Hypervisor Type屬性來指定。

三、compute

1、擷取虛拟化資源(以不同驅動對接不同虛拟化技術資源。

2、負責具體管理執行個體的操作,如何擷取計算節點資源資訊,借助于vmm中libvirt工具來獲得主控端資源的資訊,然後傳回到自己的資料庫中。

3、通過Driver(驅動)架構支援多種Hypervisor虛拟機管理器

① 面對多種Hypervisor,nova-compute為這些Hypervisor定義統一的接口。

② Hypervisor隻需要實作這些接口,就可以Driver的形式即插即用到OpenStack系統中。

4、定期向OpenStack報告計算節點的狀态

① 每隔一段時間,nova-compute就會報告目前計算節點的資源使用情況和nova-compute服務狀态。

② nova-compute是通過Hypervisor的驅動擷取這些資訊的。5、實作虛拟機執行個體生命周期的管理

① OpenStack對虛拟機執行個體最主要的操作都是通過nova-compute實作的。建立、關閉、重新開機、挂起、恢複、中止、調整大小、遷移、快照。

四、conductor

1、nova-conductor子產品實作|旨在為資料庫的通路提供一層安全保障Nova-conductor作為nova-compute服務與資料庫之間互動的中介,避免了直接通路由nova-compute服務建立對接資料庫。

2、Nova-compute通路資料庫的全部操作都改到nova-conductor中,nova-conductor作為對資料庫操作的一個代理,而且nova-conductor是部署在控制節點上的。

3、Nova-conductor有助于提高資料庫的通路性能,nova-compute可以建立多個線程使用遠端過程調用(RPC)通路nova-conductor。

4、在一個大規模的openstack部署環境裡,管理者可以通過增加nova-conductor的數量來應付日益增長的計算。

五、PlacementAPl

1、以前對資源的管理全部由計算節點承擔,在統計資源使用情況時,隻是簡單的将所有計算節點的資源情況累加起來,但是系統中還存在外部資源,這些資源由外部系統提供。如ceph、nfs等提供的存儲資源等。面對多種多樣的資源提供者,管理者需要統一的、簡單的管理接口來統計系統中資源使用情況。

2、PlacementAPI由nova-placement-api服務來實作,旨在追蹤記錄資源提供者的目錄和資源使用情況。

3、被消費的資源類型是按類進行跟蹤的。如計算節點類、共享存儲池類、IP位址類等。

六、cell架構

1、Cell可譯為單元。為支援更大規模的部署,openstack較大的nova叢集分成小的單元,每個單元都有自己的消息隊列和資料庫,可以解決規模增大時引起的瓶頸問題。在Cell中,Keystone、Neutron、Cinder、Glance等資源是共享的。

2、nova_cell0資料庫的模式與nova一樣,主要用途就是當執行個體排程失敗時,執行個體的資訊不屬于任何一個Cell,因而存放到nova_cellO資料庫中。

三、部署

一、Placement

一、建立資料庫

[[email protected] ~]# mysql -uroot -pabc123
MariaDB [(none)]> CREATE DATABASE placement; #建立Placement資料庫
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS'; #給本地來源授權
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS'; #給遠端所有來源授權
MariaDB [(none)]> flush privileges; #重新整理權限
MariaDB [(none)]> show grants for placement; #查詢權限
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署

二、建立placement使用者和API的endpoint

1、建立placement使用者
[[email protected] ~]# openstack user create --domain default --password PLACEMENT_PASS placement
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
2、建立一個placement服務,服務類型為placement
[[email protected] ~]# openstack role add --project service --user placement admin
           
3、建立一個placement服務,服務類型為placement
[[email protected] ~]# openstack service create --name placement --description "Placement API" placement
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
4、注冊API端口到placement的service中;注冊的資訊會寫入到mysql中
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
5、安裝placement服務
[[email protected] ~]# yum -y install openstack-placement-api
           
6、 修改placement配置檔案
[[email protected] ~]# cp /etc/placement/placement.conf{,.bak} #備份 
[[email protected] ~]# grep -Ev '^$|#' /etc/placement/placement.conf.bak > /etc/placement/placement.conf #去除以#或$開頭的行
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf placement_database connection mysql+pymysql://placement:[email protected]/placement
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_url  http://ct:5000/v3 #指定keystone位址
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken memcached_servers ct:11211 #session資訊是緩存放到了memcached中
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken username placement
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken password PLACEMENT_PASS
           

檢視配置檔案修改情況

OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
7、導入資料庫
[[email protected] ~]# su -s /bin/sh -c "placement-manage db sync" placement
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
8、修改Apache配置檔案
[[email protected] ~]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim 00-placement-api.conf #安裝完placement會自動建立此檔案
##在配置檔案最後添加
<Directory /usr/bin>			#此處是bug,必須添加下面的配置來啟用對placement api的通路,否則在通路apache的
<IfVersion >= 2.4>				#api時會報403;添加在檔案的最後即可
	Require all granted
</IfVersion>
<IfVersion < 2.4>				#apache版本;允許apache通路/usr/bin目錄;否則/usr/bin/placement-api将不允許被通路
	Order allow,deny				
	Allow from all			#允許apache通路
</IfVersion>
</Directory>
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] conf.d]# systemctl restart httpd
[[email protected] conf.d]# netstat -natp | grep 8778
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
9、測試
##curl測試
[[email protected] conf.d]# curl ct:8778
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}

##檢查placement狀态
[[email protected] conf.d]# placement-status upgrade check
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署

二、Nova

一、建立Nova資料庫

[[email protected] ~]# mysql -uroot -pabc123
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 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show grants for nova;
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署

二、管理Nova使用者和服務(控制節點)

1、建立Nova使用者
[[email protected] ~]# openstack user create --domain default --password NOVA_PASS nova
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ddfeb97153a0480680ab5e3b22c33110 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] ~]# openstack role add --project service --user nova admin #把nova使用者添加到service項目,擁有admin權限
           
2、建立Nova服務
[[email protected] ~]# openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 19125f1b67704ec08e5b800454170de8 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
           
3、給Nova服務關聯endpoint(端點)
[[email protected] ~]# openstack endpoint create --region RegionOne compute public http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 50ffd3338345420295b115fa35d22998 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne compute internal http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | c340478420ce49c98562dec7a8a3d2c2 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne compute admin http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 6c22653e46a346738917c9e3efee85b7 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
           
4、安裝Nova元件
[[email protected] ~]# yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
           
5、修改Nova配置檔案
[[email protected] ~]# cp -a /etc/nova/nova.conf{,.bak} #備份
[[email protected] ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf #将以$和#的行過濾
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.211.10
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:[email protected]/nova_api
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:[email protected]/nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:[email protected]/placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc enabled true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_listen ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement username placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

##檢視配置檔案
[[email protected] ~]# cat /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata #指定支援的api類型
my_ip = 192.168.211.10 #定義本地IP
use_neutron = true #通過neutron擷取IP位址
firewall_driver = nova.virt.firewall.NoopFirewallDriver 
transport_url = rabbit://openstack:[email protected] #指定連接配接的rabbitmq
[api]
auth_strategy = keystone #指定使用keystone認證
[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api
[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = mysql+pymysql://nova:[email protected]/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://ct:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken] #配置keystone的認證資訊
auth_url = http://ct:5000/v3 #到此url去認證
memcached_servers = ct:11211 #memcache資料庫位址:端口
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[libvirt]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency] #指定鎖路徑
lock_path = /var/lib/nova/tmp #鎖的作用是建立虛拟機時,在執行某個操作的時候,需要等此步驟執行完後才能執行下一個步驟,不能并行執行,保證操作是一步一步的執行
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://ct:5000/v3
username = placement
password = PLACEMENT_PASS
[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen =  $my_ip #指定vnc的監聽位址
server_proxyclient_address =  $my_ip #server的用戶端位址為本機位址;此位址是管理網的位址
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]


[placement_database]
connection = mysql+pymysql://placement:[email protected]/placement
           
6、初始化資料庫
[[email protected] ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[[email protected] ~]# mysql -uroot -pabc123
MariaDB [(none)]> use nova_api
MariaDB [nova_api]> show tables;
+------------------------------+
| Tables_in_nova_api           |
+------------------------------+
| aggregate_hosts              |
| aggregate_metadata           |
| aggregates                   |
| allocations                  |
| build_requests               |
| cell_mappings                |
| consumers                    |
| flavor_extra_specs           |
| flavor_projects              |
| flavors                      |
| host_mappings                |
| instance_group_member        |
| instance_group_policy        |
| instance_groups              |
| instance_mappings            |
| inventories                  |
| key_pairs                    |
| migrate_version              |
| placement_aggregates         |
| project_user_quotas          |
| projects                     |
| quota_classes                |
| quota_usages                 |
| quotas                       |
| request_specs                |
| reservations                 |
| resource_classes             |
| resource_provider_aggregates |
| resource_provider_traits     |
| resource_providers           |
| traits                       |
| users                        |
+------------------------------+
32 rows in set (0.001 sec)
           
7、注冊cell0資料庫
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova #建立cell1單元格
48dd890c-f940-4e4d-80cd-28a0e4d4e8e6
[[email protected] ~]# su -s /bin/sh -c "nova-manage db sync" nova #初始化nova資料庫;可以通過 /var/log/nova/nova-manage.log 日志判斷是否初始化成功
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova #驗證
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
8、啟動服務
[[email protected] ~]# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service #設定開機自啟 
[[email protected] ~]# systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service #啟動服務
           
9、驗證
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署

三、配置計算節點Nova服務

c1/c2配置一樣

1、安裝nova-compute元件
[[email protected] ~]# yum -y install openstack-nova-compute
           
2、修改配置檔案
[[email protected] ~]# cp -a /etc/nova/nova.conf{,.bak} 
[[email protected] ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.211.20
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc enabled true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.211.20:6080/vnc_auto.html
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement username placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

#檢視配置檔案
[[email protected] ~]# cat /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
my_ip = 192.168.211.20
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[api_database]
[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://ct:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
auth_url = http://ct:5000/v3
memcached_servers = ct:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[libvirt]
virt_type = qemu
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://ct:5000/v3
username = placement
password = PLACEMENT_PASS
[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address =  $my_ip
novncproxy_base_url = http://192.168.211.20:6080/vnc_auto.html
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]
           
3、開啟服務
[[email protected] ~]# systemctl enable libvirtd.service openstack-nova-compute.service
[[email protected] ~]# systemctl start libvirtd.service openstack-nova-compute.service
           

四、控制節點

1、檢視compute節點是否注冊到controller上,通過消息隊列;需要在controller節點執行
[[email protected] ~]# openstack compute service list --service nova-compute
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
2、掃描目前openstack中有哪些計算節點可用,發現後會把計算節點建立到cell中,後面就可以在cell中建立虛拟機;相當于openstack内部對計算節點進行分組,把計算節點配置設定到不同的cell中
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
3、修改控制端nova的主配置檔案
[[email protected] ~]# vim /etc/nova/nova.conf
discover_hosts_in_cells_interval = 300 #每300秒掃描一次
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] ~]# systemctl restart openstack-nova-api.service
           
4、驗證計算節點
[[email protected] ~]# openstack compute service list #檢查 nova 的各個服務是否都是正常,以及 compute 服務是否注冊成功
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] ~]# openstack catalog list #檢視各個元件的 api 是否正常
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] ~]# openstack image list #檢視是否能夠拿到鏡像
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署
[[email protected] ~]# nova-status upgrade check #檢視cell的api和placement的api是否正常,隻要其中一個有誤,後期無法建立虛拟機
           
OpenStack之Nova(T版)一、概述二、Nova系統架構三、部署