openstack運維實戰系列(十二)之nova aggregate資源分組

1. 背景說明node

   openstack設計時的宗旨是可以爲企業提供大規模的雲計算服務,包括計算,存儲,網絡等資源,以服務的形式交付給用戶,在一個很是大的環境中,須要將openstack的資源劃分,openstack nova支持三種劃分的方式:Region區域,Zone空間和Aggregate分組,其中Region是指一個地區或者地域,如能夠將中國劃分爲:華南地區,華中地區,東北地區,西南地區;Zone則能夠按照機房的形式來劃分,如北京兆維機房爲一個Zone,北京魯谷機房爲另一個Zone;Aggreate粒度則更細,如按照同個機房中的不一樣機櫃來劃分。
網絡

042251035171832.jpg

概念說明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

頁面效果:

spacer.gifwKiom1aod9eg1QfvAACkx4NtGyg834.png

建立VM的時候能夠選擇:

wKiom1aoeMTBN-RYAACj9wh7tiE842.png

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           #修改分組名字
相關文章
相關標籤/搜索