1. 背景說明node
openstack設計時的宗旨是可以爲企業提供大規模的雲計算服務,包括計算,存儲,網絡等資源,以服務的形式交付給用戶,在一個很是大的環境中,須要將openstack的資源劃分,openstack nova支持三種劃分的方式:Region區域,Zone空間和Aggregate分組,其中Region是指一個地區或者地域,如能夠將中國劃分爲:華南地區,華中地區,東北地區,西南地區;Zone則能夠按照機房的形式來劃分,如北京兆維機房爲一個Zone,北京魯谷機房爲另一個Zone;Aggreate粒度則更細,如按照同個機房中的不一樣機櫃來劃分。
網絡
概念說明:app
1. Region,更像是一個地理上的概念,每一個region有本身獨立的endpoint,regions之間徹底隔離,可是多個regions之間共享同一個keystone和dashboard,region的設計更多側重地理位置的概念,用戶能夠選擇離本身更近的region來部署本身的服務。ide
2. Zone,即 Availability Zone,AZ能夠簡單理解爲一組節點的集合,這組節點具備獨立的電力供應設備,好比一個個獨立供電的機房,一個個獨立供電的機架均可以被劃分紅AZ。因此,AZ主要是經過冗餘來解決可用性問題,Zone的目的主要是,保障用戶在建立instance的時候能夠選擇建立到哪些AZ中,以保證instance的可用性。雲計算
3. Host Aggregate, AZ是一個面向用戶的概念和能力,而host aggregate是管理員用來根據硬件資源的某一屬性來對硬件進行劃分的功能,只對管理員可見,主要用來給nova-scheduler經過某一屬性來進行instance的調度。其主要功能就是實現根據某一屬性來劃分物理機,好比按照地理位置,使用固態硬盤的機器,內存超過32G的機器,根據這些指標來構成一個host group。url
2. 具體實現spa
由於規模的因素和設計的因素,此處只演示同個機房的Aggreate的劃分,其中Aggreate須要配合Zone一塊兒使用,不然無法實現
設計
1. 建立Zone和Aggreate3d
[root@controller ~]# nova aggregate-create HappyLabZone1 HappyAggreate1 +----+---------------+-------------------+-------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+-------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+-------+------------------------------------+
2. 查看aggreate列表orm
[root@controller ~]# nova aggregate-list +----+-------------------+-------------------+ | Id | Name | Availability Zone | +----+-------------------+-------------------+ | 5 | ChuangYiYuanZone1 | ChuangYiYuanZone1 | | 11 | HappyLabZone1 | HappyAggreate1 | #Zone和Aggreate關聯一塊兒了 +----+-------------------+-------------------+
3. 將compute節點加入到Aggreate內
[root@controller ~]# nova aggregate-add-host HappyLabZone1 ChuangYiYuan_10_16_2_19 #添加一臺compute節點 Host ChuangYiYuan_10_16_2_19 has been successfully added for aggregate 11 +----+---------------+-------------------+---------------------------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+---------------------------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | 'ChuangYiYuan_10_16_2_19' | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+---------------------------+------------------------------------+ [root@controller ~]# nova aggregate-add-host HappyLabZone1 ChuangYiYuan_10_16_2_20 #添加另一臺compute節點 Host ChuangYiYuan_10_16_2_20 has been successfully added for aggregate 11 +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | 'ChuangYiYuan_10_16_2_19', 'ChuangYiYuan_10_16_2_20' | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ [root@controller ~]# nova aggregate-add-host HappyLabZone1 ChuangYiYuan_10_16_2_21 #添加另一臺compute節點 Host ChuangYiYuan_10_16_2_21 has been successfully added for aggregate 11 +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | 'ChuangYiYuan_10_16_2_19', 'ChuangYiYuan_10_16_2_20', 'ChuangYiYuan_10_16_2_21' | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+
4. 查看aggreate的詳細信息
[root@controller ~]# nova aggregate-details HappyLabZone1 +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | 'ChuangYiYuan_10_16_2_19', 'ChuangYiYuan_10_16_2_20', 'ChuangYiYuan_10_16_2_21' | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+---------------------------------------------------------------------------------+------------------------------------+ #已經添加了3臺compute節點,在dashboard中,也可以正常顯示
5.nova list查看劃分狀況
[root@controller ~]# nova service-list +------------------+-------------------------+-------------------+---------+-------+----------------------------+-----------------+ | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | +------------------+-------------------------+-------------------+---------+-------+----------------------------+-----------------+ | nova-conductor | ChuangYiYuan_10_16_2_8 | internal | enabled | up | 2016-01-27T06:06:05.000000 | - | | nova-cert | ChuangYiYuan_10_16_2_8 | internal | enabled | up | 2016-01-27T06:06:10.000000 | - | | nova-consoleauth | ChuangYiYuan_10_16_2_8 | internal | enabled | up | 2016-01-27T06:06:06.000000 | - | | nova-scheduler | ChuangYiYuan_10_16_2_8 | internal | enabled | up | 2016-01-27T06:06:09.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_11 | ChuangYiYuanZone1 | enabled | up | 2016-01-27T06:06:11.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_14 | ChuangYiYuanZone1 | enabled | up | 2016-01-27T06:06:12.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_13 | ChuangYiYuanZone1 | enabled | up | 2016-01-27T06:06:13.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_12 | ChuangYiYuanZone1 | enabled | up | 2016-01-27T06:06:05.000000 | - | #新添加的aggregate組 | nova-compute | ChuangYiYuan_10_16_2_19 | HappyAggreate1 | enabled | up | 2016-01-27T06:06:05.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_20 | HappyAggreate1 | enabled | up | 2016-01-27T06:06:04.000000 | - | | nova-compute | ChuangYiYuan_10_16_2_21 | HappyAggreate1 | enabled | up | 2016-01-27T06:06:08.000000 | - | +------------------+-------------------------+-------------------+---------+-------+----------------------------+-----------------+ #至此,host aggregate配置完畢,後續擴容時,能夠根據批次配置在不通的zone
3. 帶來的好處
aggregate的分組帶來的好處是,nova支持availablily zone級別的調度,即建立vm的時候,可以指定zone,指定zone以後,instance將會在指定的zone中選擇合適的compute nodes來啓動虛擬機,openstack默認安裝完以後,只有一個nova的zone。效果以下:
[root@controller ~]# nova boot --name --flavor 1 --p_w_picpath db5fbfb7-bb14-4691-96dc-ba25531f4442 --key-name KEY --availability-zone HappyLabZone1 --security-groups 404af9b8-faa2-43df-aba8-24f17b40c17e --nic net-id=182d2632-4373-47ff-b3a6-d50f116b76a7 vm_test_for_zone_and_aggregate
頁面效果:
建立VM的時候能夠選擇:
4.aggreate的刪除
[root@controller ~]# nova aggregate-list #獲取aggregate的ID號碼 +----+-------------------+-------------------+ | Id | Name | Availability Zone | +----+-------------------+-------------------+ | 5 | ChuangYiYuanZone1 | ChuangYiYuanZone1 | | 11 | HappyLabZone1 | HappyAggreate1 | #id號是11 +----+-------------------+-------------------+ [root@controller ~]# nova aggregate-remove-host 11 ChuangYiYuan_10_16_2_21 #將主機從aggregate中刪除,其餘的compute節點,相同的方法執行 Host ChuangYiYuan_10_16_2_21 has been successfully removed from aggregate 11 +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | 'ChuangYiYuan_10_16_2_19', 'ChuangYiYuan_10_16_2_20' | 'availability_zone=HappyAggreate1' | +----+---------------+-------------------+------------------------------------------------------+------------------------------------+ 查看詳情: [root@controller ~]# nova aggregate-details 11 +----+---------------+-------------------+-------+------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------------+-------------------+-------+------------------------------------+ | 11 | HappyLabZone1 | HappyAggreate1 | | 'availability_zone=HappyAggreate1' | #已經沒有compute節點 +----+---------------+-------------------+-------+------------------------------------+ 將aggregate刪除 [root@controller ~]# nova aggregate-delete HappyLabZone1 Aggregate 11 has been successfully deleted.
5. 總結
openstack中的region,zone,host aggregate的實現裏,其中region相對比較複雜,全部的的資源共享一個dashboard和keystone。關於具體實現,參考官方文檔。
6. 附錄
nova aggregate實現的幾個命令
[root@controller ~]# nova -h |grep aggregate aggregate-add-host Add the host to the specified aggregate. #添加主機 aggregate-create Create a new aggregate with the specified details. #建立分組 aggregate-delete Delete the aggregate. #刪除分組 aggregate-details Show details of the specified aggregate. #查看分組詳情 aggregate-list Print a list of all aggregates. #查看分組列表 aggregate-remove-host aggregate. #從主機從分組刪除 aggregate-set-metadata Update the metadata associated with the aggregate. #設置分組元數據信息 aggregate-update Update the aggregate's name and optionally #修改分組名字