如何在OpenStack中從命令行創建可用區?
譯文【51CTO.com快譯】在OpenStack術語中,可用區(AZ)的定義是計算(Nova)、塊存儲(cinder)和網絡服務(neutron)的邏輯分區。需要可用區來隔離生產環境和非生產環境等環境的工作負載。
假設OpenStack中一個租戶想要在生產環境和非生產環境中部署虛擬機,于是想在Openstack中創建這種類型的架構,我們先要確定哪些計算將被視為生產環境和非生產環境,然后我們要創建主機聚合組(host-aggregate group),我們會將計算添加到主機聚合組,然后我們將該主機聚合組映射到可用區。
我們在本教程中將演示如何通過命令行在Openstack中創建和使用計算可用區。
創建計算可用區
無論何時部署OpenStack,Nova都是自動創建的默認可用區(AZ),所有計算節點都屬于Nova AZ。從控制器節點運行以下Openstack命令,列出可用區:
- ~# source openrc
- ~# openstack availability zone list
- +-----------+-------------+
- | Zone Name | Zone Status |
- +-----------+-------------+
- | internal | available |
- | nova | available |
- | nova | available |
- | nova | available |
- +-----------+-------------+
- ~#
想列出計算的可用區,運行以下Openstack命令:
- ~# openstack availability zone list --compute
- +-----------+-------------+
- | Zone Name | Zone Status |
- +-----------+-------------+
- | internal | available |
- | nova | available |
- +-----------+-------------+
- ~#
想列出映射到Nova可用區的所有計算節點,執行以下命令:
- ~# openstack host list | grep -E "Zone|nova"
- | Host Name | Service | Zone |
- | compute-0-1 | compute | nova |
- | compute-0-2 | compute | nova |
- | compute-0-4 | compute | nova |
- | compute-0-3 | compute | nova |
- | compute-0-8 | compute | nova |
- | compute-0-6 | compute | nova |
- | compute-0-9 | compute | nova |
- | compute-0-5 | compute | nova |
- | compute-0-7 | compute | nova |
- ~#
不妨創建兩個主機聚合組,名為production和non-production,將計算4、5和6添加到production主機聚合組,將計算7、8和9添加到non-production主機聚合組。
使用以下OpenStack命令,創建Production和Non-Production主機聚合:
- ~# openstack aggregate create production
- +-------------------+----------------------------+
- | Field | Value |
- +-------------------+----------------------------+
- | availability_zone | None |
- | created_at | 2019-08-17T03:02:41.561259 |
- | deleted | False |
- | deleted_at | None |
- | id | 7 |
- | name | production |
- | updated_at | None |
- +-------------------+----------------------------+
- ~# openstack aggregate create non-production
- +-------------------+----------------------------+
- | Field | Value |
- +-------------------+----------------------------+
- | availability_zone | None |
- | created_at | 2019-08-17T03:02:53.806713 |
- | deleted | False |
- | deleted_at | None |
- | id | 10 |
- | name | non-production |
- | updated_at | None |
- +-------------------+----------------------------+
- ~#
現在創建可用區,并將它與各自的主機聚合組關聯起來。
語法:
- # openstack aggregate set –zone <az_name> <host_aggregate_name>
- ~# openstack aggregate set --zone production-az production
- ~# openstack aggregate set --zone non-production-az non-production
最后,將計算主機添加到主機聚合群。
語法:
- # openstack aggregate add host
- ~# openstack aggregate add host production compute-0-4
- ~# openstack aggregate add host production compute-0-5
- ~# openstack aggregate add host production compute-0-6
同樣,將計算主機添加到non-production主機聚合組:
- ~# openstack aggregate add host non-production compute-0-7
- ~# openstack aggregate add host non-production compute-0-8
- ~# openstack aggregate add host non-production compute-0-9
執行以下Openstack命令,驗證主機聚合組及其可用區:
- ~# openstack aggregate list
- +----+----------------+-------------------+
- | ID | Name | Availability Zone |
- +----+----------------+-------------------+
- | 7 | production | production-az |
- | 10 | non-production | non-production-az |
- +----+----------------+-------------------+
- ~#
運行以下命令,列出與AZ和主機聚合組有關的計算:
- ~# openstack aggregate show production
- +-------------------+--------------------------------------------+
- | Field | Value |
- +-------------------+--------------------------------------------+
- | availability_zone | production-az |
- | created_at | 2019-08-17T03:02:42.000000 |
- | deleted | False |
- | deleted_at | None |
- | hosts | [u'compute-0-4', u'compute-0-5', u'compute-0-6'] |
- | id | 7 |
- | name | production |
- | properties | |
- | updated_at | None |
- +-------------------+--------------------------------------------+
- ~# openstack aggregate show non-production
- +-------------------+---------------------------------------------+
- | Field | Value |
- +-------------------+---------------------------------------------+
- | availability_zone | non-production-az |
- | created_at | 2019-08-17T03:02:54.000000 |
- | deleted | False |
- | deleted_at | None |
- | hosts | [u'compute-0-7', u'compute-0-8', u'compute-0-9'] |
- | id | 10 |
- | name | non-production |
- | properties | |
- | updated_at | None |
- +-------------------+---------------------------------------------+
- ~#
上述命令的輸出證實:我們已成功地創建了主機聚合組和可用區。
在可用區內啟動虛擬機
現在不妨在這兩個可用區內創建兩個虛擬機;想在某個特定的可用區內創建虛擬機,運行以下命令:
語法:
- # openstack server create –flavor –image –nic net-id= –security-group –key-name –availability-zone
例子如下所示:
- ~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone production-az test-vm-prod-az
運行以下命令以驗證虛擬機的細節:
- ~# openstack server show test-vm-prod-az
想在可用區下某個特定的計算節點內創建虛擬機,運行以下命令:
語法:
- # openstack server create –flavor –image –nic net-id= –security-group –key-name {Keypair-Name} –availability-zone :
假設我們想在特定計算(compute-0-6)上的生產可用區下啟用虛擬機,為了執行這項操作,運行以下命令:
- ~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone production-az:compute-0-6 test-vm-prod-az-host
執行以下命令以驗證虛擬機的細節:
- ~# openstack server show test-vm-prod-az-host
上述命令的輸出會類似如下:
同樣,我們可以在非生產可用區內創建虛擬機,例子如下所示:
- ~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone non-production-az vm-nonprod-az
使用以下命令以驗證虛擬機的細節:
- ~# openstack server show vm-nonprod-az
上述命令的輸出會類似如下:
刪除主機聚合組和可用區
假設我們想刪除上述創建的主機聚合組和可用區;為此,我們先得從主機聚合組刪除主機,使用以下命令:
- ~# openstack aggregate show production
上述命令將為我們列出已添加到生產主機聚合組的計算主機。
使用以下命令從主機聚合機刪除主機:
語法:
- # openstack aggregate remove host <host-aggregate-name> <compute-name>
- ~# openstack aggregate remove host production compute-0-4
- ~# openstack aggregate remove host production compute-0-5
- ~# openstack aggregate remove host production compute-0-6
- 一旦你從該組刪除所有主機,隨后重新運行以下命令:
- ~# openstack aggregate show production
- +-------------------+----------------------------+
- | Field | Value |
- +-------------------+----------------------------+
- | availability_zone | production-az |
- | created_at | 2019-08-17T03:02:42.000000 |
- | deleted | False |
- | deleted_at | None |
- | hosts | [] |
- | id | 7 |
- | name | production |
- | properties | |
- | updated_at | None |
- +-------------------+----------------------------+
我們可以從上述輸出看出,沒有與生產主機聚合組關聯的計算主機,現在我們可以刪除組了。
使用以下命令來刪除主機聚合組及關聯的可用區:
- ~# openstack aggregate delete production
運行以下命令,以核實可用區有沒有刪除:
- ~# openstack availability zone list | grep -i production-az
- ~#
同樣,你可以參照上述步驟來刪除非生產主機聚合組及其可用區。
以上就是本教程的全部內容,但愿上述內容可幫助你深入了解OpenStack主機聚合和可用區,歡迎留言交流。
原文標題:How to Create Availability Zones in OpenStack from Command Line,作者:Pradeep Kumar
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】