Host aggregation은 Availability zone 처럼 사용할 수 있습니다.
기본 설치 상태에서 보면 아래처럼 nova zone만 보입니다.
# nova availability-zone-list
+-----------------------+----------------------------------------+
| Name | Status |
+-----------------------+----------------------------------------+
| internal | available |
| |- control0 | |
| | |- nova-conductor | enabled :-) 2013-12-11T08:36:33.000000 |
| | |- nova-consoleauth | enabled :-) 2013-12-11T08:36:36.000000 |
| | |- nova-cert | enabled :-) 2013-12-11T08:36:36.000000 |
| | |- nova-scheduler | enabled :-) 2013-12-11T08:36:31.000000 |
| nova | available |
| |- compute003 | |
| | |- nova-compute | enabled :-) 2013-12-11T08:36:31.000000 |
| |- compute002 | |
| | |- nova-compute | enabled :-) 2013-12-11T08:36:31.000000 |
| |- compute001 | |
| | |- nova-compute | enabled :-) 2013-12-11T08:36:31.000000 |
| |- compute000 | |
| | |- nova-compute | enabled :-) 2013-12-11T08:36:31.000000 |
+-----------------------+----------------------------------------+
여기서 host-aggregate를 2개 만들고 각각에 2개씩 compute node를 넣어봅니다.
# nova aggregate-create agg1
# nova aggregate-create agg2
# nova aggregate-list
+----+------+-------------------+
| Id | Name | Availability Zone |
+----+------+-------------------+
| 1 | agg1 | None |
| 2 | agg2 | None |
+----+------+-------------------+
# nova aggregate-add-host 1 compute000
Aggregate 1 has been successfully updated.
+----+------+-------------------+-----------------+----------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+-----------------+----------+
| 1 | agg1 | None | [u'compute000'] | {} |
+----+------+-------------------+-----------------+----------+
# nova aggregate-add-host 1 compute001
Aggregate 1 has been successfully updated.
+----+------+-------------------+--------------------------------+----------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+--------------------------------+----------+
| 1 | agg1 | None | [u'compute000', u'compute001'] | {} |
+----+------+-------------------+--------------------------------+----------+
# nova aggregate-add-host 2 compute002
Aggregate 2 has been successfully updated.
+----+------+-------------------+-----------------+----------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+-----------------+----------+
| 2 | agg2 | None | [u'compute002'] | {} |
+----+------+-------------------+-----------------+----------+
# nova aggregate-add-host 2 compute003
Aggregate 2 has been successfully updated.
+----+------+-------------------+--------------------------------+----------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+--------------------------------+----------+
| 2 | agg2 | None | [u'compute002', u'compute003'] | {} |
+----+------+-------------------+--------------------------------+----------+
여기서 다시 nova availability-zone-list 하면 아무런 변화기 없습니다. nova aggregate-list 결과에 보면 “Availability Zone”이라는 항목이 있습니다. 녜.. host aggregate에 zone 설정이 없어서 그런 것이죠..
다시 host aggregate에 availability zone을 설정해보죠.
# nova aggregate-update 1 agg1 zone1
Aggregate 1 has been successfully updated.
+----+------+-------------------+--------------------------------+----------------------------------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+--------------------------------+----------------------------------+
| 1 | agg1 | zone1 | [u'compute000', u'compute001'] | {u'availability_zone': u'zone1'} |
+----+------+-------------------+--------------------------------+----------------------------------+
# nova aggregate-update 2 agg1 zone2
Aggregate 2 has been successfully updated.
+----+------+-------------------+--------------------------------+----------------------------------+
| Id | Name | Availability Zone | Hosts | Metadata |
+----+------+-------------------+--------------------------------+----------------------------------+
| 2 | agg1 | zone2 | [u'compute002', u'compute003'] | {u'availability_zone': u'zone2'} |
+----+------+-------------------+--------------------------------+----------------------------------+
이제 다시 availability zone을 보면
# nova availability-zone-list
+-----------------------+----------------------------------------+
| Name | Status |
+-----------------------+----------------------------------------+
| internal | available |
| |- control0 | |
| | |- nova-conductor | enabled :-) 2013-12-11T09:01:15.000000 |
| | |- nova-consoleauth | enabled :-) 2013-12-11T09:01:09.000000 |
| | |- nova-cert | enabled :-) 2013-12-11T09:01:09.000000 |
| | |- nova-scheduler | enabled :-) 2013-12-11T09:01:14.000000 |
| zone1 | available |
| |- compute001 | |
| | |- nova-compute | enabled :-) 2013-12-11T09:01:15.000000 |
| |- compute000 | |
| | |- nova-compute | enabled :-) 2013-12-11T09:01:15.000000 |
| zone2 | available |
| |- compute003 | |
| | |- nova-compute | enabled :-) 2013-12-11T09:01:15.000000 |
| |- compute002 | |
| | |- nova-compute | enabled :-) 2013-12-11T09:01:15.000000 |
+-----------------------+----------------------------------------+
녜.. 그렇습니다. host aggregate를 availability zone으로 사용할 수 있습니다.
그리고 이렇게 만들어진 존을 지정하여 인스턴스를 만드는 것은 아래처럼 할 수 있습니다.
# nova boot --flavor=<flavor> --nic net-id=<net-id> \
--image=<image-id> --key_name=<keyname> \
--availability-zone zone1:compute000 <instance-name>
admin 권한으로는 compute node까지 지정이 가능하고, admin이 아닌 경우는 zone 까지만 지정 가능합니다.