SlideShare a Scribd company logo
1 of 58
Download to read offline
AvailabilityZoneandHostAggrigate 
(Havanaの場合) 
1発書いたきり確認してないです。間違ってたらごめん。 
@ishikawa84g
はじめに 
• 
本資料作成にあたり日本OpenStackユーザ会会長中島倫明様 の資料を参考にさせていただきました。ありがとうございまし た。 
•http://www.slideshare.net/irix_jp/josug-13thstudyregionandazahcells-v2 
• 
本資料はHavana時点での検証をまとめたものです。Icehouse, Junoでは 本内容と動作・仕様が異なる場合があります。 
• 
分散環境の対象はAvailabilityZone, HostAggregateのみとし、Region, Cellについて対象外としています。
もくじ 
• 
OpenStackにおける分散環境の区分 
• 
AvailabiltyZoneとHostAggregateの概要 
• 
Novaの設定 
• 
HostAggregateの利用方法 
• 
AvailabilityZoneの利用方法 
• 
AvailabilityZoneをまたがるHostAggregateの利用方法 
• 
CinderにおけるAvailabilityZone 
• 
Nova・CinderのAvailabiltyZone連携 
• 
未検証の事項について 
• 
今後期待する機能
OpenStackにおける分散環境の区分 
1. 
OpenStackそのものの分散 
• 
複数のOpenStackが別サイトで存在する。 
• 
コンピュートをはじめ、ネットワーク、イメージ共有、認証、 AMQP、データベースなどが分散される。 
• 
Region やCell 
2. 
仮想マシンの分散 
• 
ネットワーク、認証、AMQP、データベースはそのままに、 コンピュートだけが分散される。 
• 
分散の対象はコンピュートノード 
• 
Availability Zone (AZ) やHost Aggregate (AG) 
• 
主にNovaに実装された機能 
対象
RegionOne 
RegionTwo 
・Nova 
・Glance 
・Keystone 
など 
・MySQL 
・RabbitMQ 
・Memcached 
Shared Nothing 
TopCell 
nova-api 
Glance 
Keystone 
nova-cell 
DB 
Child Cells1 
AMQP 
nova-cell 
Child Cells2 
AMQP 
Grandchild Cells 
AMQP 
DB 
AMQP 
DB 
nova- scheduler 
AZ1 
AZ2 
compute 
compute 
compute 
compute 
compute 
compute 
compute 
compute 
AG1 
AG3 
AG2
AvailabiltyZoneの概要 
• 
管理者が明示的に指定する 
• 
ユーザは定義済みのAZを利用し、仮想マシンの配置先を指定する。 
• 
OpenStackクラスタ(リージョン)内での仮想マシンの配置を ユーザが選択できるようにする。 
• 
例えば、ラック単位、フロア単位、データセンター単位 
3F 
(AZ3) 
2F 
(AZ2) 
第2DC RACK1 
(AZ22A) 
第2DC RACK2 
(AZ22B)
HostAggregateの概要 
• 
管理者が明示的に指定する。 
• 
リージョン内で仮想マシンの配置に法則を与える。 
• 
どのマシンに配置するかをユーザは意識をしない。 
• 
インスタンスタイプを決めるだけで良い。 
• 
例えば、「チープなサーバ群とハイスペックなサーバ群の分割」 や「ハイパーバイザでの分割」 
AG1 
AG2 
AG3 
KVM: ロースペック 
KVM: ハイペック 
VMWare
Novaの設定 
• 
AvailabilityZibe, HostAggregateはどちらもスケジューラを利用する。 
• 
スケジューラのフィルタを設定することで利用可能になる。 
• 
nova.conf内、scheduler_default_filtersを設定 
• 
初期値 
• 
変更 
• 
初期値のComputeCapabilitiesFilterを指定しているとHostAggregate設定 時エラーとなる。 
scheduler_default_filters=RetryFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,AvailabilityZoneFilter 
scheduler_default_filters=RetryFilter,RamFilter,ComputeFilter,ImagePropertiesFilter,AvailabilityZoneFilter,AggregateInstanceExtraSpecsFilter
Novaの設定 
• 
nova.conf内でAvailabilityZone, HostAggregateの設定に関わる オプションは以下の通り 
パラメータ 
初期値 
説明 
internal_service_availability_zone 
internal 
インターナルサービスのデフォルトゾーン 
nova-consoleauthなどのデフォルトゾーン名 
default_availability_zone 
nova 
コンピュートノードのデフォルトゾーン名 
default_schedule_zone 
(なし) 
ゾーンを指定していない場合に指定されるゾーン名 
nova boot 時、ゾーンを指定しなければこのゾーンが 利用される 
ゾーンが複数ある場合、ゾーン名を指定しないとエ ラーになる 
cinder_cross_az_attach 
true 
コンピュートノードが所属するゾーンとcinder- volumeが所属するゾーンが異なった場合、Attache を許可/拒否する 
true:Attacheを許可する 
false: Attacheを拒否する
HostAggregateの利用
HostAggregateの利用 
• 
HostAggregateを利用するためのコマンドについて解説を行う。 
• 
全ての操作はadmin roleを持ったユーザで行う。 
• 
一般ユーザは設定・参照を行えない。 
$ nova aggregate-list 
ERROR: Policy doesn‘t allow compute_extension:aggregatesto be performed. (HTTP 403) 
(Request-ID: req-c56d3e53-231c-41d3-8a4c-80d8a1cb48aa) 
$ nova aggregate-list 
+----+---------+-------------------+ 
| Id | Name | Availability Zone | 
+----+---------+-------------------+ 
| 1 | ag1-web | None | 
+----+---------+-------------------+ 
一般 
admin
zone name: nova 
HostAggregateの利用 
• 
参考に以下のような構成でHostAggregateを作成する。 
• 
Web用AGとDB用AGを作成し、それぞれのHostAggregateに2 台のコンピュートノードを紐付ける。 
ag1-web 
ag1-db 
com001 
com002 
com003 
com004
nova コマンドによる設定(1/6) 
• 
任意のHostAggregateを作成する 
• 
usage: nova aggregate-create <name> [<availability-zone>] 
• 
ここではWeb用HostAggregateとDB用HostAggregateを作成する 
$ nova aggregate-create ag1-web 
$ nova aggregate-create ag1-db 
+----+---------+-------------------+-------+----------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+-------+----------+ 
| 1 | ag1-web | None | [] | {} | 
| 2 | ag1-db | None | [] | {} | 
+----+---------+-------------------+-------+----------+
nova コマンドによる設定(2/6) 
• 
作成したHostAggregateとホストを紐付ける 
• 
usage: nova aggregate-add-host <aggregate> <host> 
• 
ここでは、AG ID(AGNameでも可)とホスト名を指定する。 
• 
ホスト名はnova-manage service list で表示されるホスト名 
$ nova aggregate-add-host 1 com001 
$ nova aggregate-add-host 1 com002 
$ nova aggregate-add-host 2 com003 
$ nova aggregate-add-host 2 com004 
+----+---------+-------------------+------------------------+----------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+------------------------+----------+ 
| 1 | ag1-web | None | [u'com001', u'com002'] | {} | 
| 2 | ag1-db | None | [u'com003', u'com004'] | {} | 
+----+---------+-------------------+------------------------+----------+ 
※ nova aggregate-detailsの結果を参考に出力した
nova コマンドによる設定(3/6) 
• 
HostAggregateを識別するためのメタデータを設定する 
• 
usage: nova aggregate-set-metadata <aggregate> <key=value> [<key=value> ...] 
$ nova aggregate-set-metadata 1 web=true 
$ nova aggregate-set-metadata 2 db=true 
Aggregate 2 has been successfully updated. 
+----+---------+-------------------+------------------------+-------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+------------------------+-------------------+ 
| 1 | ag1-web | None | [u'com001', u'com002'] | {u'web': u'true'} | 
| 2 | ag1-db | None | [u'com003', u'com004'] | {u'db': u'true'} | 
+----+---------+-------------------+------------------------+-------------------+
nova コマンドによる設定(4/6) 
• 
HostAggregateの詳細情報を表示する 
• 
usage: nova aggregate-details <aggregate> 
$ nova aggregate-details ag1-web 
$ nova aggregate-details ag1-db 
+----+---------+-------------------+------------------------+-------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+------------------------+-------------------+ 
| 1 | ag1-web | None | [u'com001', u'com002'] | {u'web': u'true'} | 
| 2 | ag1-db | None | [u'com003', u'com004'] | {u'db': u'true'} | 
+----+---------+-------------------+------------------------+-------------------+ 
※出力をまとめている。実際は指定したHostAggregateのみを表示する。
nova コマンドによる設定(5/6) 
• 
HostAggregate用のFlavorを作成する 
• 
usage: nova flavor-create [--ephemeral <ephemeral>] [--swap <swap>] [--rxtx-factor <factor>] [--is-public <is-public>] <name> <id> <ram> <disk> <vcpus>
nova コマンドによる設定(5/6) 
$ nova flavor-create ag1.web 6 1024 10 1 
$ nova flavor-create ag1.db 7 1024 20 1 
+----+---------+-----------+------+-----------+------+-------+-------------+-----------+ 
| ID | Name | Memory_MB| Disk | Ephemeral | Swap | VCPUs | RXTX_Factor| Is_Public| 
+----+---------+-----------+------+-----------+------+-------+-------------+-----------+ 
| 6 | ag1.web | 1024 | 10 | 0 | | 1 | 1.0 | True | 
| 7 | ag1.db | 1024 | 20 | 0 | | 1 | 1.0 | True | 
+----+---------+-----------+------+-----------+------+-------+-------------+-----------+ 
$ nova flavor-list 
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ 
| ID | Name | Memory_MB| Disk | Ephemeral | Swap | VCPUs | RXTX_Factor| Is_Public| 
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ 
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 
| 6 | ag1.web | 1024 | 10 | 0 | | 1 | 1.0 | True | 
| 7 | ag1.db | 1024 | 20 | 0 | | 1 | 1.0 | True | 
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
nova コマンドによる設定(6/6) 
• 
作成したHostAggregateとFlavorを関連付ける。 
• 
AG:メタデータとFlavorのキー同士を関連付けることができる。 
• 
usage: nova flavor-key <flavor> <action> <key=value> [<key=value> ...] 
• 
Flavorを選択すると同時に定義したHostAggregateを利用する ように設定を行う。 
• 
Flavorにkeyをセットすることで、ユーザがFlavorを指定するだけで事 前に定義したHostAggregateが自動的に選択されるようになる。 
• 
このkeyはHostAggregateのメタデータと比較が行われる。 
$ nova flavor-key 6 set web=true 
$ nova flavor-key 7 set db=true
nova コマンドによる設定(6/6) 
$ nova flavor-show 6 
+----------------------------+-------------------+ 
| Property | Value | 
+----------------------------+-------------------+ 
| name | ag1.web | 
| ram | 1024 | 
| OS-FLV-DISABLED:disabled| False | 
| vcpus| 1 | 
| extra_specs| {u'web': u'true'} | 
| swap | | 
| os-flavor-access:is_public| True | 
| rxtx_factor| 1.0 | 
| OS-FLV-EXT-DATA:ephemeral| 0 | 
| disk | 10 | 
| id | 6 | 
+----------------------------+-------------------+ 
$ nova flavor-show 7 
+----------------------------+-------------------+ 
| Property | Value | 
+----------------------------+-------------------+ 
| name | ag1.db | 
| ram | 1024 | 
| OS-FLV-DISABLED:disabled| False | 
| vcpus| 1 | 
| extra_specs| {u'db': u'true'} | 
| swap | | 
| os-flavor-access:is_public| True | 
| rxtx_factor| 1.0 | 
| OS-FLV-EXT-DATA:ephemeral| 0 | 
| disk | 20 | 
| id | 7 | 
+----------------------------+-------------------+
インスタンスの起動 
• 
作成したFlavorを指定することで任意のHostAggregateを指定 できるようになる。 
• 
ただし、ユーザからはHostAggregate(起動させるコンピュー トノード)を意識することはできず、あくまでFlavorを選択して いるだけに過ぎない。 
$ nova boot --flavor ag1.web--image IMAGE_UUID --num-instances 10  
--security-groups default --nicNW_UUID cirros 
$ sudo nova-manage vm list 2> /dev/null 
instance node type state 
cirros-afa67382-7fc2-43b8-afbd-e2c42f972a96 com002 ag1.webactive 
cirros-dabf3e5c-e501-4c3a-98f8-24ea13711a3a com001 ag1.webactive 
cirros-dd5441e6-2e66-4dca-8fb4-77552a8a37a8 com002 ag1.webactive 
(省略) 
・・・ 
・・・ 
・・・
nova コマンドによる設定(参考) 
• 
作成したHostAggregateを削除する。 
• 
usage: nova aggregate-remove-host <aggregate> <host> 
• 
以下の順番でHostAggregateに関係する設定を削除する 
1. 
Flavor削除する 
2. 
HostAggregateとホストの関連付けを解除する 
3. 
HostAggregate削除する
AailabilityZoneの利用
AailabilityZoneの利用 
• 
AvailabilityZoneを利用するためのコマンドについて解説を行う。 
• 
設定は管理者権限を持つユーザで行う。 
• 
一般ユーザは一部の情報について参照だけが行える。 
• 
AvailabilityZoneはNovaインストール時に、 
• 
internal_service_availability_zoneで定義されたゾーンが作成される。 
• 
default_availability_zoneで定義されたゾーンがデフォルトで作成される。 
internal_service_availability_zone 
(internal) 
nova-cert, nova-conductor, nova-scheduler, nova- consoleauth 
など 
default_availability_zone 
(nova) 
nova-compute
AailabilityZoneの利用 
• 
nova boot時、自動的に選択されるゾーンは default_schedule_zoneで指定する。 
• 
存在しないゾーンを指定しているまたはゾーンを指定していない場合 はインスタンス作成時にエラーとなる。 
• 
NovaのAvailabilityZoneとCinderのAvailabilityZoneが異なっ てもボリュームをアタッチできるようにするには cinder_cross_az_attach=trueを指定する
AailabilityZoneの利用 
$ nova availability-zone-list 
+------+-----------+ 
| Name | Status | 
+------+-----------+ 
| nova | available | 
+------+-----------+ 
一般
AailabilityZoneの利用 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| Name | Status | 
+-----------------------+----------------------------------------+ 
| internal | available | 
| |-ctrl001 | | 
| | |-nova-conductor | enabled :-) 2014-08-06T06:13:40.000000 | 
| | |-nova-cert | enabled :-) 2014-08-06T06:13:42.000000 | 
| | |-nova-consoleauth| enabled :-) 2014-08-06T06:13:43.000000 | 
| | |-nova-scheduler | enabled :-) 2014-08-06T06:13:43.000000 | 
| nova | available | 
| |-com003 | | 
| | |-nova-compute | enabled :-) 2014-08-06T06:13:38.000000 | 
| |-com002 | | 
| | |-nova-compute | enabled :-) 2014-08-06T06:13:40.000000 | 
| |-com001 | | 
| | |-nova-compute | enabled :-) 2014-08-06T06:13:39.000000 | 
| |-com004 | | 
| | |-nova-compute | enabled :-) 2014-08-06T06:13:45.000000 | 
+-----------------------+----------------------------------------+ 
admin
ag-zone02 
ag-zone01 
AailabilityZoneの利用 
• 
参考に以下のような構成でAvailabilityZoneを作成する。 
• 
2つのAvailabilityZoneを作成し、それぞれのAvailabilityZone に2台のコンピュートノードを紐付ける。 
com001 
com002 
com003 
com004 
ag1-az1 
ag2-az2
nova コマンドによる設定(1/2) 
• 
AvailabilityZoneを定義する 
• 
usage: nova aggregate-create <name> [<availability-zone>] 
• 
HostAggregate作成時、HostAggregate名とあわせて AvailabilityZone名を指定することでAvailabilityZoneが作成される。 
• 
AvailabilityZoneの作成にaggregate-createを利用しているが、 これはAvailabilityZoneの機能がHostAggregateに統合された ためである。
nova コマンドによる設定(1/2) 
$ nova aggregate-create ag1-az1 ag-zone01 
$ nova aggregate-create ag2-az2 ag-zone02 
$ nova aggregate-list 
+----+---------+-------------------+ 
| Id | Name | Availability Zone | 
+----+---------+-------------------+ 
| 3 | ag1-az1 | ag-zone01 | 
| 4 | ag2-az2 | ag-zone02 | 
+----+---------+-------------------+
nova コマンドによる設定(2/2) 
• 
作成したHostAggregateとホストを紐付ける 
• 
usage: nova aggregate-add-host <aggregate> <host> 
• 
ここでは、AG ID(AGNameでも可)とホスト名を指定する。 
• 
ホスト名はnova-manage service list で表示されるホスト名 
$ nova aggregate-add-host 3 com001 
$ nova aggregate-add-host 3 com002 
$ nova aggregate-add-host 4 com003 
$ nova aggregate-add-host 4 com004
nova コマンドによる設定(2/2) 
$ nova aggregate-details 3 
$ nova aggregate-details 4 
+----+---------+-------------------+------------------------+--------------------------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+------------------------+--------------------------------------+ 
| 3 | ag1-az1 | ag-zone01 | [u'com001', u'com002'] | {u'availability_zone': u'ag-zone01'} | 
| 4 | ag2-az2 | ag-zone02 | [u'com003', u'com004'] | {u'availability_zone': u'ag-zone02'} | 
+----+---------+-------------------+------------------------+--------------------------------------+ 
※出力をまとめている。実際は指定したHostAggregateのみを表示する
nova コマンドによる設定(2/2) 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| Name | Status | 
+-----------------------+----------------------------------------+ 
| internal | available | 
| |-ctrl001 | | 
| | |-nova-conductor | enabled :-) 2014-01-16T07:26:41.000000 | 
| | |-nova-cert | enabled :-) 2014-01-16T07:26:36.000000 | 
| | |-nova-consoleauth| enabled :-) 2014-01-16T07:26:36.000000 | 
| | |-nova-scheduler | enabled :-) 2014-01-16T07:26:36.000000 | 
| ag-zone01 | available | 
| |-com002 | | 
| | |-nova-compute | enabled :-) 2014-01-16T07:26:41.000000 | 
| |-com001 | | 
| | |-nova-compute | enabled :-) 2014-01-16T07:26:40.000000 | 
| ag-zone02 | available | 
| |-com003 | | 
| | |-nova-compute | enabled :-) 2014-01-16T07:26:39.000000 | 
| |-com004 | | 
| | |-nova-compute | enabled :-) 2014-01-16T07:26:36.000000 | 
+-----------------------+----------------------------------------+
インスタンスの起動 
• 
HostAggregateとは異なり、flavorは関係しない。 
• 
ただし、Zone を指定する必要がある。 
$ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone01cirros 
$ sudo nova-manage vm list 2> /dev/null 
instance node (省略) zone 
cirros-0cf0c695-2797-4c86-8daf-78f951735b9e com002 ・・・ag-zone01 
cirros-37d253bd-24e1-49d5-89e5-4e16fd2d45a3 com001・・・ag-zone01 
cirros-5b433557-7812-4c78-90f9-262b3c062563 com002・・・ag-zone01 
cirros-1623d65b-1359-4284-a737-b96e02baaa89 com001 ・・・ag-zone01
インスタンスの起動 
$ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone02cirros 
$ sudo nova-manage vm list 2> /dev/null 
instance node (省略) zone 
cirros-57e139aa-664b-439b-846a-2319885fe7e5 com004・・・ag-zone02 
cirros-7507c166-d0dc-4e27-a1ff-1f730922383f com003 ・・・ag-zone02 
cirros-be65cc97-fd7e-433c-bf9f-7ea44f0169e5 com004 ・・・ag-zone02 
cirros-79bee77d-90bf-44f7-a656-6360d25c368f com003 ・・・ag-zone02 
• 
ゾーンを指定しない場合は、default_schedule_zoneで指定したゾーン が自動的に選択される。 
• 
存在しないゾーンを指定した場合やdefault_schedule_zoneで指定した ゾーンが存在しない場合はエラーとなる。
AvailabilityZoneをまたがる HostAggregateの利用方法
AvailabilityZoneをまたがるHostAggregateの利用方法 
• 
HostAggregateはAvailabilityZoneをまたがることもできる。 
• 
FavorでHostAggregateを指定しつつ、AvailabilityZoneを指 定することで、指定したAvailabilityZone内で定義されている HostAggregateにだけインスタンスを配置することができる。
AvailabilityZoneをまたがるHostAggregateの利用方法 
• 
以下のような構成でAvailabilityZoneとHostAggregateを作成する。 
• 
2つのAvailabilityZoneを作成し、それぞれのAvailabilityZoneに2台 のコンピュートノードを紐付ける。 
• 
HostAggregate(ag1-web)を作成し、全ノードと紐付ける。 
ag-zone02 
ag-zone01 
com001 
com002 
com003 
com004 
ag1-az01 
ag2-az02 
ag1-web
novaコマンドによる設定(1/4) 
• 
1つのHostAggregateを作成する。 
• 
2つのAvailabilityZoneを作成する。 
$ nova aggregate-create ag1-az01 ag-zone01 
$ nova aggregate-create ag2-az02 ag-zone02 
$ nova aggregate-create ag1-web
nova コマンドによる設定(2/4) 
• 
HostAggregate識別用のメタデータを付与する。 
• 
Flavorを作成し、HostAggregateと紐付ける。 
$ nova aggregate-set-metadata 5 web=true 
Aggregate 5 has been successfully updated. 
+----+---------+-------------------+-------+-------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+---------+-------------------+-------+-------------------+ 
| 5 | ag1-web | None | [] | {u'web': u'true'} | 
+----+---------+-------------------+-------+-------------------+ 
$ nova flavor-create ag1.web 6 1024 10 1
nova コマンドによる設定(3/4) 
• 
HostAggregateの状態を確認する。 
$ nova aggregate-details 5 
$ nova aggregate-details 6 
$ nova aggregate-details 7 
+----+----------+-------------------+-------+--------------------------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+----------+-------------------+-------+--------------------------------------+ 
| 5 | ag1-web | None | [] | {u'web': u'true'} | 
| 6 | ag1-az01 | ag-zone01 | [] | {u'availability_zone': u'ag-zone01'} | 
| 7 | ag2-az02 | ag-zone02 | [] | {u'availability_zone': u'ag-zone02'} | 
+----+----------+-------------------+-------+--------------------------------------+ 
※出力をまとめている。実際は指定したHostAggregateのみを表示する
nova コマンドによる設定(4/4) 
• 
HostAggregateとホストを関連付ける 
$ nova aggregate-add-host 5 com001 
$ nova aggregate-add-host 5 com002 
$ nova aggregate-add-host 5 com003 
$ nova aggregate-add-host 5 com004 
$ nova aggregate-add-host 6 com001 
$ nova aggregate-add-host 6 com002 
$ nova aggregate-add-host 7 com003 
$ nova aggregate-add-host 7 com004
nova コマンドによる設定(4/4) 
$ nova aggregate-details 5 
$ nova aggregate-details 6 
$ nova aggregate-details 7 
+----+----------+-------------------+----------------------------------------------+--------------- -----------------------+ 
| Id | Name | Availability Zone | Hosts | Metadata | 
+----+----------+-------------------+----------------------------------------------+--------------- -----------------------+ 
| 5 | ag1-web | None | [u'com001', u'com002', u'com003', u'com004'] | {u'web': u'true'} | 
| 6 | ag1-az01 | ag-zone01 | [u'com001', u'com002'] | {u'availability_zone': u'ag-zone01'} | 
| 7 | ag2-az02 | ag-zone02 | [u'com003', u'com004'] | {u'availability_zone': u'ag-zone02'} | 
+----+----------+-------------------+----------------------------------------------+--------------- -----------------------+
novaコマンドによる設定(4/4) 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| Name | Status | 
+-----------------------+----------------------------------------+ 
| internal | available | 
| |-ctrl001 | | 
| | |-nova-conductor | enabled :-) 2014-08-06T08:08:31.000000 | 
| | |-nova-cert | enabled :-) 2014-08-06T08:08:38.000000 | 
| | |-nova-consoleauth| enabled :-) 2014-08-06T08:08:38.000000 | 
| | |-nova-scheduler | enabled :-) 2014-08-06T08:08:39.000000 | 
| ag-zone01 | available | 
| |-com002 | | 
| | |-nova-compute | enabled :-) 2014-08-06T08:08:31.000000 | 
| |-com001 | | 
| | |-nova-compute | enabled :-) 2014-08-06T08:08:31.000000 | 
| ag-zone02 | available | 
| |-com003 | | 
| | |-nova-compute | enabled :-) 2014-08-06T08:08:30.000000 | 
| |-com004 | | 
| | |-nova-compute | enabled :-) 2014-08-06T08:08:37.000000 | 
+-----------------------+----------------------------------------+
インスタンスの起動 
• 
Flavor: ag1.web と合わせてZone: ag-zone01 を指定した場 合はag1.web で定義されたホストかつag-zone01に属すホス トのどこかにインスタンスが作成される。 
$ nova boot --flavor ag1.web--image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone01cirros 
$ sudonova-manage vmlist 2> /dev/null 
instance node type zone 
cirros-9cf59ffe-2a31-48c4-b081-e2b732004b70 com002 ag1.webag-zone01 
cirros-f283608c-14f0-4da0-a02f-8147f7c044c6 com001 ag1.webag-zone01 
cirros-9594b32a-6ff8-43db-ada3-106494bc3b85 com002 ag1.webag-zone01 
cirros-03861c7d-a356-4e88-9acb-f1980e2ea942 com001 ag1.webag-zone01 
• 
指定したHostAggregateが存在しないAvailabilityZoneを選択 すると起動時エラーとなる。
Cinderにおける AvailabilityZone
CinderにおけるAvailabilityZone 
• 
CinderでもAvailabilityZoneが利用できる。 
• 
ただし、Nova程多くのことができるわけではない。 
• 
過去にNovaからForkした時の引き継いだものが残っているだけ? 
• 
Cinder AvailabilityZoneはコマンドから作成することができな い。 
• 
サービス認識時にcinder.conf内storage_availability_zone(初期値: nova)に指定されたものが作成される。 
• 
後から変更できるかどうかは不明。 
• 
データベースに向けてupdate文を直接実行する必要がある。?
Cinderの設定 
パラメータ 
初期値 
説明 
default_availability_zone 
(なし) 
ボリューム作成時、AvailabilityZoneを指定して いない場合にデフォルトで指定されるゾーン名。 
storage_availability_zone 
nova 
cinder-volumeが所属するAvailabilityZone。 
サービス認識時に自動的に作成される。 
コマンド等で後から変更はできない。 
• 
cinder.conf内でAvailabilityZoneの設定に関わるオプションは 以下の通り
AvailabilityZoneの確認 
• 
ノード: vol001 のstorage_availability_zoneにvol001を指定 した場合の出力は以下の通り 
$ cinder availability-zone-list 
+--------+-----------+ 
| Name | Status | 
+--------+-----------+ 
| vol001 | available | 
+--------+-----------+ 
$ sudocinder-manage host list 2> /dev/null 
host zone 
vol001 vol001
ボリュームの作成 
• 
cinder create の際、アベイラビリティゾーンを指定すること で狙ったゾーンに対してボリューム作成をすることができる。 
$ cinder create --availability-zone vol0011 
$ cinder show 7775727e-8ee5-417f-91a5-f680d2b2ff34 
+---------------------+--------------------------------------+ 
| Property | Value | 
+---------------------+--------------------------------------+ 
| attachments | [] | 
| availability_zone| vol001| 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 
| id | 7775727e-8ee5-417f-91a5-f680d2b2ff34 | 
| metadata | {} | 
| size | 1 | 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| 
| status | available | 
| volume_type| None | 
+---------------------+--------------------------------------+
ボリュームの作成 
• 
--availability-zoneで指定したゾーンが存在しない場合はエ ラーとなる。 
• 
Horizonを使用した場合、AvailabilityZoneの指定ができずエ ラーになる。
Nova・Cinderの AvailabiltyZone連携
Nova・CinderのAvailabiltyZone連携 
• 
NovaとCinderのAvailabilityZoneが連携できる機能はただ1つ。 
• 
インスタンスが所属するAvailabilityZoneと ボリュームが所属するAvailabilityZoneが異なった場合、 アタッチを許可するか、拒否するか。だけである。 
• 
設定はnova.confで行う。 
パラメータ 
初期値 
説明 
cinder_cross_az_attach 
true 
コンピュートノードが所属するゾーンとcinder- volumeが所属するゾーンが異なった場合、Attache を許可/拒否する 
true:Attacheを許可する 
false: Attacheを拒否する
Nova・CinderのAvailabiltyZone連携 
• 
cidner_cross_az_attache=trueの場合 
• 
それぞれのAvailabilityZoneを評価しない。すべてAttache可能。 
Zone01 
Zone02 
Zone01 
Zone02 
Nova 
Cinder 
Attach
Nova・CinderのAvailabiltyZone連携 
• 
cidner_cross_az_attache=falseの場合 
• 
それぞれのAvailabilityZoneを評価し、ゾーンが異なる場合はエラーとなる。 
• 
[Wed Aug 06 07:43:19.809457 2014] [:error] [pid1647:tid 140731145422592] Recoverable error: Invalid volume: Instance and volume not in same availability_zone(HTTP 400) (Request-ID: req-f8dba15b-6617-4500-ba3c-089c41154943) 
Zone01 
Zone02 
Zone01 
Zone02 
Nova 
Cinder 
Attach
今後期待する機能
今後期待する機能 
• 
AvailabilityZoneの柔軟性向上 
• 
AvailabilityZone単位で活性化/非活性化 
• 
大規模障害時など、対象AvailabilityZoneへのアクセスを禁止する等 
• 
プロジェクト単位で見えるAvailabilityZoneを指定 
• 
AvailabilityZone単位のQuota設定 
• 
Cinderに全うなAvailabilityZone機能実装を! 
• 
AvailabilityZone単位で利用するネットワークを選択する(Neutron 連携)
おしまい

More Related Content

What's hot

OpenStack勉強会
OpenStack勉強会OpenStack勉強会
OpenStack勉強会Yuki Obara
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~Masaya Aoyama
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
Openstack kolla 20171025 josug v3
Openstack kolla 20171025 josug v3Openstack kolla 20171025 josug v3
Openstack kolla 20171025 josug v3Takehiro Kudou
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化kazuhcurry
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsshunki fujiwara
 
OpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドOpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドMasanori Itoh
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しようAmazon Web Services Japan
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門kk_Ataka
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月VirtualTech Japan Inc.
 

What's hot (20)

OpenStack勉強会
OpenStack勉強会OpenStack勉強会
OpenStack勉強会
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Openstack kolla 20171025 josug v3
Openstack kolla 20171025 josug v3Openstack kolla 20171025 josug v3
Openstack kolla 20171025 josug v3
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
OpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドOpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウド
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
 
TripleO Deep Dive 1.1
TripleO Deep Dive 1.1TripleO Deep Dive 1.1
TripleO Deep Dive 1.1
 

Similar to AvailabilityZoneとHostAggregate

Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machinesirix_jp
 
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理Shinya Sugiyama
 
Japan OpenStack User Group 34th Meetup - Handson Environment
Japan OpenStack User Group 34th Meetup - Handson EnvironmentJapan OpenStack User Group 34th Meetup - Handson Environment
Japan OpenStack User Group 34th Meetup - Handson Environmentirix_jp
 
MySQL clients
MySQL clientsMySQL clients
MySQL clientsyoku0825
 
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001Takeshi Kuramochi
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較Shinya Sugiyama
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたTakashi Umeno
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Kazuki Takai
 
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介Kodai Terashima
 
JOSUG 34th Meetup
JOSUG 34th Meetup JOSUG 34th Meetup
JOSUG 34th Meetup irix_jp
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価Dell TechCenter Japan
 

Similar to AvailabilityZoneとHostAggregate (20)

Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machines
 
Windows ✖︎ Docker
Windows ✖︎ DockerWindows ✖︎ Docker
Windows ✖︎ Docker
 
私とmysqlとROLE
私とmysqlとROLE私とmysqlとROLE
私とmysqlとROLE
 
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理
 
Japan OpenStack User Group 34th Meetup - Handson Environment
Japan OpenStack User Group 34th Meetup - Handson EnvironmentJapan OpenStack User Group 34th Meetup - Handson Environment
Japan OpenStack User Group 34th Meetup - Handson Environment
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
12 cyberagent
12 cyberagent12 cyberagent
12 cyberagent
 
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
 
Riak事始め&デモ
Riak事始め&デモRiak事始め&デモ
Riak事始め&デモ
 
JOSUG 34th Meetup
JOSUG 34th Meetup JOSUG 34th Meetup
JOSUG 34th Meetup
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
 

More from Hiroki Ishikawa

OpenStackを体で操作する
OpenStackを体で操作するOpenStackを体で操作する
OpenStackを体で操作するHiroki Ishikawa
 
OpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのかOpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのかHiroki Ishikawa
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)Hiroki Ishikawa
 
気になるあのコにアタック☆
気になるあのコにアタック☆気になるあのコにアタック☆
気になるあのコにアタック☆Hiroki Ishikawa
 
VlanManagerを使ってみた
VlanManagerを使ってみたVlanManagerを使ってみた
VlanManagerを使ってみたHiroki Ishikawa
 
rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???Hiroki Ishikawa
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版Hiroki Ishikawa
 
SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例Hiroki Ishikawa
 

More from Hiroki Ishikawa (14)

OpenStackを体で操作する
OpenStackを体で操作するOpenStackを体で操作する
OpenStackを体で操作する
 
Sesearch
SesearchSesearch
Sesearch
 
OpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのかOpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのか
 
AppArmorの話
AppArmorの話AppArmorの話
AppArmorの話
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)
 
気になるあのコにアタック☆
気になるあのコにアタック☆気になるあのコにアタック☆
気になるあのコにアタック☆
 
VlanManagerを使ってみた
VlanManagerを使ってみたVlanManagerを使ってみた
VlanManagerを使ってみた
 
OpenStack & SELinux
OpenStack & SELinuxOpenStack & SELinux
OpenStack & SELinux
 
rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
 
SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例
 
Cms on SELinux
Cms on SELinuxCms on SELinux
Cms on SELinux
 
SystemTapで何か
SystemTapで何かSystemTapで何か
SystemTapで何か
 
(F15)File Capability
(F15)File Capability(F15)File Capability
(F15)File Capability
 

AvailabilityZoneとHostAggregate

  • 2. はじめに • 本資料作成にあたり日本OpenStackユーザ会会長中島倫明様 の資料を参考にさせていただきました。ありがとうございまし た。 •http://www.slideshare.net/irix_jp/josug-13thstudyregionandazahcells-v2 • 本資料はHavana時点での検証をまとめたものです。Icehouse, Junoでは 本内容と動作・仕様が異なる場合があります。 • 分散環境の対象はAvailabilityZone, HostAggregateのみとし、Region, Cellについて対象外としています。
  • 3. もくじ • OpenStackにおける分散環境の区分 • AvailabiltyZoneとHostAggregateの概要 • Novaの設定 • HostAggregateの利用方法 • AvailabilityZoneの利用方法 • AvailabilityZoneをまたがるHostAggregateの利用方法 • CinderにおけるAvailabilityZone • Nova・CinderのAvailabiltyZone連携 • 未検証の事項について • 今後期待する機能
  • 4. OpenStackにおける分散環境の区分 1. OpenStackそのものの分散 • 複数のOpenStackが別サイトで存在する。 • コンピュートをはじめ、ネットワーク、イメージ共有、認証、 AMQP、データベースなどが分散される。 • Region やCell 2. 仮想マシンの分散 • ネットワーク、認証、AMQP、データベースはそのままに、 コンピュートだけが分散される。 • 分散の対象はコンピュートノード • Availability Zone (AZ) やHost Aggregate (AG) • 主にNovaに実装された機能 対象
  • 5. RegionOne RegionTwo ・Nova ・Glance ・Keystone など ・MySQL ・RabbitMQ ・Memcached Shared Nothing TopCell nova-api Glance Keystone nova-cell DB Child Cells1 AMQP nova-cell Child Cells2 AMQP Grandchild Cells AMQP DB AMQP DB nova- scheduler AZ1 AZ2 compute compute compute compute compute compute compute compute AG1 AG3 AG2
  • 6. AvailabiltyZoneの概要 • 管理者が明示的に指定する • ユーザは定義済みのAZを利用し、仮想マシンの配置先を指定する。 • OpenStackクラスタ(リージョン)内での仮想マシンの配置を ユーザが選択できるようにする。 • 例えば、ラック単位、フロア単位、データセンター単位 3F (AZ3) 2F (AZ2) 第2DC RACK1 (AZ22A) 第2DC RACK2 (AZ22B)
  • 7. HostAggregateの概要 • 管理者が明示的に指定する。 • リージョン内で仮想マシンの配置に法則を与える。 • どのマシンに配置するかをユーザは意識をしない。 • インスタンスタイプを決めるだけで良い。 • 例えば、「チープなサーバ群とハイスペックなサーバ群の分割」 や「ハイパーバイザでの分割」 AG1 AG2 AG3 KVM: ロースペック KVM: ハイペック VMWare
  • 8. Novaの設定 • AvailabilityZibe, HostAggregateはどちらもスケジューラを利用する。 • スケジューラのフィルタを設定することで利用可能になる。 • nova.conf内、scheduler_default_filtersを設定 • 初期値 • 変更 • 初期値のComputeCapabilitiesFilterを指定しているとHostAggregate設定 時エラーとなる。 scheduler_default_filters=RetryFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,AvailabilityZoneFilter scheduler_default_filters=RetryFilter,RamFilter,ComputeFilter,ImagePropertiesFilter,AvailabilityZoneFilter,AggregateInstanceExtraSpecsFilter
  • 9. Novaの設定 • nova.conf内でAvailabilityZone, HostAggregateの設定に関わる オプションは以下の通り パラメータ 初期値 説明 internal_service_availability_zone internal インターナルサービスのデフォルトゾーン nova-consoleauthなどのデフォルトゾーン名 default_availability_zone nova コンピュートノードのデフォルトゾーン名 default_schedule_zone (なし) ゾーンを指定していない場合に指定されるゾーン名 nova boot 時、ゾーンを指定しなければこのゾーンが 利用される ゾーンが複数ある場合、ゾーン名を指定しないとエ ラーになる cinder_cross_az_attach true コンピュートノードが所属するゾーンとcinder- volumeが所属するゾーンが異なった場合、Attache を許可/拒否する true:Attacheを許可する false: Attacheを拒否する
  • 11. HostAggregateの利用 • HostAggregateを利用するためのコマンドについて解説を行う。 • 全ての操作はadmin roleを持ったユーザで行う。 • 一般ユーザは設定・参照を行えない。 $ nova aggregate-list ERROR: Policy doesn‘t allow compute_extension:aggregatesto be performed. (HTTP 403) (Request-ID: req-c56d3e53-231c-41d3-8a4c-80d8a1cb48aa) $ nova aggregate-list +----+---------+-------------------+ | Id | Name | Availability Zone | +----+---------+-------------------+ | 1 | ag1-web | None | +----+---------+-------------------+ 一般 admin
  • 12. zone name: nova HostAggregateの利用 • 参考に以下のような構成でHostAggregateを作成する。 • Web用AGとDB用AGを作成し、それぞれのHostAggregateに2 台のコンピュートノードを紐付ける。 ag1-web ag1-db com001 com002 com003 com004
  • 13. nova コマンドによる設定(1/6) • 任意のHostAggregateを作成する • usage: nova aggregate-create <name> [<availability-zone>] • ここではWeb用HostAggregateとDB用HostAggregateを作成する $ nova aggregate-create ag1-web $ nova aggregate-create ag1-db +----+---------+-------------------+-------+----------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+-------+----------+ | 1 | ag1-web | None | [] | {} | | 2 | ag1-db | None | [] | {} | +----+---------+-------------------+-------+----------+
  • 14. nova コマンドによる設定(2/6) • 作成したHostAggregateとホストを紐付ける • usage: nova aggregate-add-host <aggregate> <host> • ここでは、AG ID(AGNameでも可)とホスト名を指定する。 • ホスト名はnova-manage service list で表示されるホスト名 $ nova aggregate-add-host 1 com001 $ nova aggregate-add-host 1 com002 $ nova aggregate-add-host 2 com003 $ nova aggregate-add-host 2 com004 +----+---------+-------------------+------------------------+----------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+------------------------+----------+ | 1 | ag1-web | None | [u'com001', u'com002'] | {} | | 2 | ag1-db | None | [u'com003', u'com004'] | {} | +----+---------+-------------------+------------------------+----------+ ※ nova aggregate-detailsの結果を参考に出力した
  • 15. nova コマンドによる設定(3/6) • HostAggregateを識別するためのメタデータを設定する • usage: nova aggregate-set-metadata <aggregate> <key=value> [<key=value> ...] $ nova aggregate-set-metadata 1 web=true $ nova aggregate-set-metadata 2 db=true Aggregate 2 has been successfully updated. +----+---------+-------------------+------------------------+-------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+------------------------+-------------------+ | 1 | ag1-web | None | [u'com001', u'com002'] | {u'web': u'true'} | | 2 | ag1-db | None | [u'com003', u'com004'] | {u'db': u'true'} | +----+---------+-------------------+------------------------+-------------------+
  • 16. nova コマンドによる設定(4/6) • HostAggregateの詳細情報を表示する • usage: nova aggregate-details <aggregate> $ nova aggregate-details ag1-web $ nova aggregate-details ag1-db +----+---------+-------------------+------------------------+-------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+------------------------+-------------------+ | 1 | ag1-web | None | [u'com001', u'com002'] | {u'web': u'true'} | | 2 | ag1-db | None | [u'com003', u'com004'] | {u'db': u'true'} | +----+---------+-------------------+------------------------+-------------------+ ※出力をまとめている。実際は指定したHostAggregateのみを表示する。
  • 17. nova コマンドによる設定(5/6) • HostAggregate用のFlavorを作成する • usage: nova flavor-create [--ephemeral <ephemeral>] [--swap <swap>] [--rxtx-factor <factor>] [--is-public <is-public>] <name> <id> <ram> <disk> <vcpus>
  • 18. nova コマンドによる設定(5/6) $ nova flavor-create ag1.web 6 1024 10 1 $ nova flavor-create ag1.db 7 1024 20 1 +----+---------+-----------+------+-----------+------+-------+-------------+-----------+ | ID | Name | Memory_MB| Disk | Ephemeral | Swap | VCPUs | RXTX_Factor| Is_Public| +----+---------+-----------+------+-----------+------+-------+-------------+-----------+ | 6 | ag1.web | 1024 | 10 | 0 | | 1 | 1.0 | True | | 7 | ag1.db | 1024 | 20 | 0 | | 1 | 1.0 | True | +----+---------+-----------+------+-----------+------+-------+-------------+-----------+ $ nova flavor-list +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | ID | Name | Memory_MB| Disk | Ephemeral | Swap | VCPUs | RXTX_Factor| Is_Public| +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| | 6 | ag1.web | 1024 | 10 | 0 | | 1 | 1.0 | True | | 7 | ag1.db | 1024 | 20 | 0 | | 1 | 1.0 | True | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
  • 19. nova コマンドによる設定(6/6) • 作成したHostAggregateとFlavorを関連付ける。 • AG:メタデータとFlavorのキー同士を関連付けることができる。 • usage: nova flavor-key <flavor> <action> <key=value> [<key=value> ...] • Flavorを選択すると同時に定義したHostAggregateを利用する ように設定を行う。 • Flavorにkeyをセットすることで、ユーザがFlavorを指定するだけで事 前に定義したHostAggregateが自動的に選択されるようになる。 • このkeyはHostAggregateのメタデータと比較が行われる。 $ nova flavor-key 6 set web=true $ nova flavor-key 7 set db=true
  • 20. nova コマンドによる設定(6/6) $ nova flavor-show 6 +----------------------------+-------------------+ | Property | Value | +----------------------------+-------------------+ | name | ag1.web | | ram | 1024 | | OS-FLV-DISABLED:disabled| False | | vcpus| 1 | | extra_specs| {u'web': u'true'} | | swap | | | os-flavor-access:is_public| True | | rxtx_factor| 1.0 | | OS-FLV-EXT-DATA:ephemeral| 0 | | disk | 10 | | id | 6 | +----------------------------+-------------------+ $ nova flavor-show 7 +----------------------------+-------------------+ | Property | Value | +----------------------------+-------------------+ | name | ag1.db | | ram | 1024 | | OS-FLV-DISABLED:disabled| False | | vcpus| 1 | | extra_specs| {u'db': u'true'} | | swap | | | os-flavor-access:is_public| True | | rxtx_factor| 1.0 | | OS-FLV-EXT-DATA:ephemeral| 0 | | disk | 20 | | id | 7 | +----------------------------+-------------------+
  • 21. インスタンスの起動 • 作成したFlavorを指定することで任意のHostAggregateを指定 できるようになる。 • ただし、ユーザからはHostAggregate(起動させるコンピュー トノード)を意識することはできず、あくまでFlavorを選択して いるだけに過ぎない。 $ nova boot --flavor ag1.web--image IMAGE_UUID --num-instances 10 --security-groups default --nicNW_UUID cirros $ sudo nova-manage vm list 2> /dev/null instance node type state cirros-afa67382-7fc2-43b8-afbd-e2c42f972a96 com002 ag1.webactive cirros-dabf3e5c-e501-4c3a-98f8-24ea13711a3a com001 ag1.webactive cirros-dd5441e6-2e66-4dca-8fb4-77552a8a37a8 com002 ag1.webactive (省略) ・・・ ・・・ ・・・
  • 22. nova コマンドによる設定(参考) • 作成したHostAggregateを削除する。 • usage: nova aggregate-remove-host <aggregate> <host> • 以下の順番でHostAggregateに関係する設定を削除する 1. Flavor削除する 2. HostAggregateとホストの関連付けを解除する 3. HostAggregate削除する
  • 24. AailabilityZoneの利用 • AvailabilityZoneを利用するためのコマンドについて解説を行う。 • 設定は管理者権限を持つユーザで行う。 • 一般ユーザは一部の情報について参照だけが行える。 • AvailabilityZoneはNovaインストール時に、 • internal_service_availability_zoneで定義されたゾーンが作成される。 • default_availability_zoneで定義されたゾーンがデフォルトで作成される。 internal_service_availability_zone (internal) nova-cert, nova-conductor, nova-scheduler, nova- consoleauth など default_availability_zone (nova) nova-compute
  • 25. AailabilityZoneの利用 • nova boot時、自動的に選択されるゾーンは default_schedule_zoneで指定する。 • 存在しないゾーンを指定しているまたはゾーンを指定していない場合 はインスタンス作成時にエラーとなる。 • NovaのAvailabilityZoneとCinderのAvailabilityZoneが異なっ てもボリュームをアタッチできるようにするには cinder_cross_az_attach=trueを指定する
  • 26. AailabilityZoneの利用 $ nova availability-zone-list +------+-----------+ | Name | Status | +------+-----------+ | nova | available | +------+-----------+ 一般
  • 27. AailabilityZoneの利用 $ nova availability-zone-list +-----------------------+----------------------------------------+ | Name | Status | +-----------------------+----------------------------------------+ | internal | available | | |-ctrl001 | | | | |-nova-conductor | enabled :-) 2014-08-06T06:13:40.000000 | | | |-nova-cert | enabled :-) 2014-08-06T06:13:42.000000 | | | |-nova-consoleauth| enabled :-) 2014-08-06T06:13:43.000000 | | | |-nova-scheduler | enabled :-) 2014-08-06T06:13:43.000000 | | nova | available | | |-com003 | | | | |-nova-compute | enabled :-) 2014-08-06T06:13:38.000000 | | |-com002 | | | | |-nova-compute | enabled :-) 2014-08-06T06:13:40.000000 | | |-com001 | | | | |-nova-compute | enabled :-) 2014-08-06T06:13:39.000000 | | |-com004 | | | | |-nova-compute | enabled :-) 2014-08-06T06:13:45.000000 | +-----------------------+----------------------------------------+ admin
  • 28. ag-zone02 ag-zone01 AailabilityZoneの利用 • 参考に以下のような構成でAvailabilityZoneを作成する。 • 2つのAvailabilityZoneを作成し、それぞれのAvailabilityZone に2台のコンピュートノードを紐付ける。 com001 com002 com003 com004 ag1-az1 ag2-az2
  • 29. nova コマンドによる設定(1/2) • AvailabilityZoneを定義する • usage: nova aggregate-create <name> [<availability-zone>] • HostAggregate作成時、HostAggregate名とあわせて AvailabilityZone名を指定することでAvailabilityZoneが作成される。 • AvailabilityZoneの作成にaggregate-createを利用しているが、 これはAvailabilityZoneの機能がHostAggregateに統合された ためである。
  • 30. nova コマンドによる設定(1/2) $ nova aggregate-create ag1-az1 ag-zone01 $ nova aggregate-create ag2-az2 ag-zone02 $ nova aggregate-list +----+---------+-------------------+ | Id | Name | Availability Zone | +----+---------+-------------------+ | 3 | ag1-az1 | ag-zone01 | | 4 | ag2-az2 | ag-zone02 | +----+---------+-------------------+
  • 31. nova コマンドによる設定(2/2) • 作成したHostAggregateとホストを紐付ける • usage: nova aggregate-add-host <aggregate> <host> • ここでは、AG ID(AGNameでも可)とホスト名を指定する。 • ホスト名はnova-manage service list で表示されるホスト名 $ nova aggregate-add-host 3 com001 $ nova aggregate-add-host 3 com002 $ nova aggregate-add-host 4 com003 $ nova aggregate-add-host 4 com004
  • 32. nova コマンドによる設定(2/2) $ nova aggregate-details 3 $ nova aggregate-details 4 +----+---------+-------------------+------------------------+--------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+------------------------+--------------------------------------+ | 3 | ag1-az1 | ag-zone01 | [u'com001', u'com002'] | {u'availability_zone': u'ag-zone01'} | | 4 | ag2-az2 | ag-zone02 | [u'com003', u'com004'] | {u'availability_zone': u'ag-zone02'} | +----+---------+-------------------+------------------------+--------------------------------------+ ※出力をまとめている。実際は指定したHostAggregateのみを表示する
  • 33. nova コマンドによる設定(2/2) $ nova availability-zone-list +-----------------------+----------------------------------------+ | Name | Status | +-----------------------+----------------------------------------+ | internal | available | | |-ctrl001 | | | | |-nova-conductor | enabled :-) 2014-01-16T07:26:41.000000 | | | |-nova-cert | enabled :-) 2014-01-16T07:26:36.000000 | | | |-nova-consoleauth| enabled :-) 2014-01-16T07:26:36.000000 | | | |-nova-scheduler | enabled :-) 2014-01-16T07:26:36.000000 | | ag-zone01 | available | | |-com002 | | | | |-nova-compute | enabled :-) 2014-01-16T07:26:41.000000 | | |-com001 | | | | |-nova-compute | enabled :-) 2014-01-16T07:26:40.000000 | | ag-zone02 | available | | |-com003 | | | | |-nova-compute | enabled :-) 2014-01-16T07:26:39.000000 | | |-com004 | | | | |-nova-compute | enabled :-) 2014-01-16T07:26:36.000000 | +-----------------------+----------------------------------------+
  • 34. インスタンスの起動 • HostAggregateとは異なり、flavorは関係しない。 • ただし、Zone を指定する必要がある。 $ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone01cirros $ sudo nova-manage vm list 2> /dev/null instance node (省略) zone cirros-0cf0c695-2797-4c86-8daf-78f951735b9e com002 ・・・ag-zone01 cirros-37d253bd-24e1-49d5-89e5-4e16fd2d45a3 com001・・・ag-zone01 cirros-5b433557-7812-4c78-90f9-262b3c062563 com002・・・ag-zone01 cirros-1623d65b-1359-4284-a737-b96e02baaa89 com001 ・・・ag-zone01
  • 35. インスタンスの起動 $ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone02cirros $ sudo nova-manage vm list 2> /dev/null instance node (省略) zone cirros-57e139aa-664b-439b-846a-2319885fe7e5 com004・・・ag-zone02 cirros-7507c166-d0dc-4e27-a1ff-1f730922383f com003 ・・・ag-zone02 cirros-be65cc97-fd7e-433c-bf9f-7ea44f0169e5 com004 ・・・ag-zone02 cirros-79bee77d-90bf-44f7-a656-6360d25c368f com003 ・・・ag-zone02 • ゾーンを指定しない場合は、default_schedule_zoneで指定したゾーン が自動的に選択される。 • 存在しないゾーンを指定した場合やdefault_schedule_zoneで指定した ゾーンが存在しない場合はエラーとなる。
  • 37. AvailabilityZoneをまたがるHostAggregateの利用方法 • HostAggregateはAvailabilityZoneをまたがることもできる。 • FavorでHostAggregateを指定しつつ、AvailabilityZoneを指 定することで、指定したAvailabilityZone内で定義されている HostAggregateにだけインスタンスを配置することができる。
  • 38. AvailabilityZoneをまたがるHostAggregateの利用方法 • 以下のような構成でAvailabilityZoneとHostAggregateを作成する。 • 2つのAvailabilityZoneを作成し、それぞれのAvailabilityZoneに2台 のコンピュートノードを紐付ける。 • HostAggregate(ag1-web)を作成し、全ノードと紐付ける。 ag-zone02 ag-zone01 com001 com002 com003 com004 ag1-az01 ag2-az02 ag1-web
  • 39. novaコマンドによる設定(1/4) • 1つのHostAggregateを作成する。 • 2つのAvailabilityZoneを作成する。 $ nova aggregate-create ag1-az01 ag-zone01 $ nova aggregate-create ag2-az02 ag-zone02 $ nova aggregate-create ag1-web
  • 40. nova コマンドによる設定(2/4) • HostAggregate識別用のメタデータを付与する。 • Flavorを作成し、HostAggregateと紐付ける。 $ nova aggregate-set-metadata 5 web=true Aggregate 5 has been successfully updated. +----+---------+-------------------+-------+-------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+---------+-------------------+-------+-------------------+ | 5 | ag1-web | None | [] | {u'web': u'true'} | +----+---------+-------------------+-------+-------------------+ $ nova flavor-create ag1.web 6 1024 10 1
  • 41. nova コマンドによる設定(3/4) • HostAggregateの状態を確認する。 $ nova aggregate-details 5 $ nova aggregate-details 6 $ nova aggregate-details 7 +----+----------+-------------------+-------+--------------------------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+----------+-------------------+-------+--------------------------------------+ | 5 | ag1-web | None | [] | {u'web': u'true'} | | 6 | ag1-az01 | ag-zone01 | [] | {u'availability_zone': u'ag-zone01'} | | 7 | ag2-az02 | ag-zone02 | [] | {u'availability_zone': u'ag-zone02'} | +----+----------+-------------------+-------+--------------------------------------+ ※出力をまとめている。実際は指定したHostAggregateのみを表示する
  • 42. nova コマンドによる設定(4/4) • HostAggregateとホストを関連付ける $ nova aggregate-add-host 5 com001 $ nova aggregate-add-host 5 com002 $ nova aggregate-add-host 5 com003 $ nova aggregate-add-host 5 com004 $ nova aggregate-add-host 6 com001 $ nova aggregate-add-host 6 com002 $ nova aggregate-add-host 7 com003 $ nova aggregate-add-host 7 com004
  • 43. nova コマンドによる設定(4/4) $ nova aggregate-details 5 $ nova aggregate-details 6 $ nova aggregate-details 7 +----+----------+-------------------+----------------------------------------------+--------------- -----------------------+ | Id | Name | Availability Zone | Hosts | Metadata | +----+----------+-------------------+----------------------------------------------+--------------- -----------------------+ | 5 | ag1-web | None | [u'com001', u'com002', u'com003', u'com004'] | {u'web': u'true'} | | 6 | ag1-az01 | ag-zone01 | [u'com001', u'com002'] | {u'availability_zone': u'ag-zone01'} | | 7 | ag2-az02 | ag-zone02 | [u'com003', u'com004'] | {u'availability_zone': u'ag-zone02'} | +----+----------+-------------------+----------------------------------------------+--------------- -----------------------+
  • 44. novaコマンドによる設定(4/4) $ nova availability-zone-list +-----------------------+----------------------------------------+ | Name | Status | +-----------------------+----------------------------------------+ | internal | available | | |-ctrl001 | | | | |-nova-conductor | enabled :-) 2014-08-06T08:08:31.000000 | | | |-nova-cert | enabled :-) 2014-08-06T08:08:38.000000 | | | |-nova-consoleauth| enabled :-) 2014-08-06T08:08:38.000000 | | | |-nova-scheduler | enabled :-) 2014-08-06T08:08:39.000000 | | ag-zone01 | available | | |-com002 | | | | |-nova-compute | enabled :-) 2014-08-06T08:08:31.000000 | | |-com001 | | | | |-nova-compute | enabled :-) 2014-08-06T08:08:31.000000 | | ag-zone02 | available | | |-com003 | | | | |-nova-compute | enabled :-) 2014-08-06T08:08:30.000000 | | |-com004 | | | | |-nova-compute | enabled :-) 2014-08-06T08:08:37.000000 | +-----------------------+----------------------------------------+
  • 45. インスタンスの起動 • Flavor: ag1.web と合わせてZone: ag-zone01 を指定した場 合はag1.web で定義されたホストかつag-zone01に属すホス トのどこかにインスタンスが作成される。 $ nova boot --flavor ag1.web--image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWORK_UUID --availability-zone ag-zone01cirros $ sudonova-manage vmlist 2> /dev/null instance node type zone cirros-9cf59ffe-2a31-48c4-b081-e2b732004b70 com002 ag1.webag-zone01 cirros-f283608c-14f0-4da0-a02f-8147f7c044c6 com001 ag1.webag-zone01 cirros-9594b32a-6ff8-43db-ada3-106494bc3b85 com002 ag1.webag-zone01 cirros-03861c7d-a356-4e88-9acb-f1980e2ea942 com001 ag1.webag-zone01 • 指定したHostAggregateが存在しないAvailabilityZoneを選択 すると起動時エラーとなる。
  • 47. CinderにおけるAvailabilityZone • CinderでもAvailabilityZoneが利用できる。 • ただし、Nova程多くのことができるわけではない。 • 過去にNovaからForkした時の引き継いだものが残っているだけ? • Cinder AvailabilityZoneはコマンドから作成することができな い。 • サービス認識時にcinder.conf内storage_availability_zone(初期値: nova)に指定されたものが作成される。 • 後から変更できるかどうかは不明。 • データベースに向けてupdate文を直接実行する必要がある。?
  • 48. Cinderの設定 パラメータ 初期値 説明 default_availability_zone (なし) ボリューム作成時、AvailabilityZoneを指定して いない場合にデフォルトで指定されるゾーン名。 storage_availability_zone nova cinder-volumeが所属するAvailabilityZone。 サービス認識時に自動的に作成される。 コマンド等で後から変更はできない。 • cinder.conf内でAvailabilityZoneの設定に関わるオプションは 以下の通り
  • 49. AvailabilityZoneの確認 • ノード: vol001 のstorage_availability_zoneにvol001を指定 した場合の出力は以下の通り $ cinder availability-zone-list +--------+-----------+ | Name | Status | +--------+-----------+ | vol001 | available | +--------+-----------+ $ sudocinder-manage host list 2> /dev/null host zone vol001 vol001
  • 50. ボリュームの作成 • cinder create の際、アベイラビリティゾーンを指定すること で狙ったゾーンに対してボリューム作成をすることができる。 $ cinder create --availability-zone vol0011 $ cinder show 7775727e-8ee5-417f-91a5-f680d2b2ff34 +---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone| vol001| |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| | id | 7775727e-8ee5-417f-91a5-f680d2b2ff34 | | metadata | {} | | size | 1 | |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| | status | available | | volume_type| None | +---------------------+--------------------------------------+
  • 51. ボリュームの作成 • --availability-zoneで指定したゾーンが存在しない場合はエ ラーとなる。 • Horizonを使用した場合、AvailabilityZoneの指定ができずエ ラーになる。
  • 53. Nova・CinderのAvailabiltyZone連携 • NovaとCinderのAvailabilityZoneが連携できる機能はただ1つ。 • インスタンスが所属するAvailabilityZoneと ボリュームが所属するAvailabilityZoneが異なった場合、 アタッチを許可するか、拒否するか。だけである。 • 設定はnova.confで行う。 パラメータ 初期値 説明 cinder_cross_az_attach true コンピュートノードが所属するゾーンとcinder- volumeが所属するゾーンが異なった場合、Attache を許可/拒否する true:Attacheを許可する false: Attacheを拒否する
  • 54. Nova・CinderのAvailabiltyZone連携 • cidner_cross_az_attache=trueの場合 • それぞれのAvailabilityZoneを評価しない。すべてAttache可能。 Zone01 Zone02 Zone01 Zone02 Nova Cinder Attach
  • 55. Nova・CinderのAvailabiltyZone連携 • cidner_cross_az_attache=falseの場合 • それぞれのAvailabilityZoneを評価し、ゾーンが異なる場合はエラーとなる。 • [Wed Aug 06 07:43:19.809457 2014] [:error] [pid1647:tid 140731145422592] Recoverable error: Invalid volume: Instance and volume not in same availability_zone(HTTP 400) (Request-ID: req-f8dba15b-6617-4500-ba3c-089c41154943) Zone01 Zone02 Zone01 Zone02 Nova Cinder Attach
  • 57. 今後期待する機能 • AvailabilityZoneの柔軟性向上 • AvailabilityZone単位で活性化/非活性化 • 大規模障害時など、対象AvailabilityZoneへのアクセスを禁止する等 • プロジェクト単位で見えるAvailabilityZoneを指定 • AvailabilityZone単位のQuota設定 • Cinderに全うなAvailabilityZone機能実装を! • AvailabilityZone単位で利用するネットワークを選択する(Neutron 連携)