Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AvailabilityZoneandHostAggrigate 
(Havanaの場合) 
1発書いたきり確認してないです。間違ってたらごめん。 
@ishikawa84g
はじめに 
• 
本資料作成にあたり日本OpenStackユーザ会会長中島倫明様 の資料を参考にさせていただきました。ありがとうございまし た。 
•http://www.slideshare.net/irix_jp/josug-13thstu...
もくじ 
• 
OpenStackにおける分散環境の区分 
• 
AvailabiltyZoneとHostAggregateの概要 
• 
Novaの設定 
• 
HostAggregateの利用方法 
• 
AvailabilityZoneの...
OpenStackにおける分散環境の区分 
1. 
OpenStackそのものの分散 
• 
複数のOpenStackが別サイトで存在する。 
• 
コンピュートをはじめ、ネットワーク、イメージ共有、認証、 AMQP、データベースなどが分散され...
RegionOne 
RegionTwo 
・Nova 
・Glance 
・Keystone 
など 
・MySQL 
・RabbitMQ 
・Memcached 
Shared Nothing 
TopCell 
nova-api 
Gla...
AvailabiltyZoneの概要 
• 
管理者が明示的に指定する 
• 
ユーザは定義済みのAZを利用し、仮想マシンの配置先を指定する。 
• 
OpenStackクラスタ(リージョン)内での仮想マシンの配置を ユーザが選択できるようにす...
HostAggregateの概要 
• 
管理者が明示的に指定する。 
• 
リージョン内で仮想マシンの配置に法則を与える。 
• 
どのマシンに配置するかをユーザは意識をしない。 
• 
インスタンスタイプを決めるだけで良い。 
• 
例えば...
Novaの設定 
• 
AvailabilityZibe, HostAggregateはどちらもスケジューラを利用する。 
• 
スケジューラのフィルタを設定することで利用可能になる。 
• 
nova.conf内、scheduler_defa...
Novaの設定 
• 
nova.conf内でAvailabilityZone, HostAggregateの設定に関わる オプションは以下の通り 
パラメータ 
初期値 
説明 
internal_service_availability_z...
HostAggregateの利用
HostAggregateの利用 
• 
HostAggregateを利用するためのコマンドについて解説を行う。 
• 
全ての操作はadmin roleを持ったユーザで行う。 
• 
一般ユーザは設定・参照を行えない。 
$ nova agg...
zone name: nova 
HostAggregateの利用 
• 
参考に以下のような構成でHostAggregateを作成する。 
• 
Web用AGとDB用AGを作成し、それぞれのHostAggregateに2 台のコンピュートノー...
nova コマンドによる設定(1/6) 
• 
任意のHostAggregateを作成する 
• 
usage: nova aggregate-create <name> [<availability-zone>] 
• 
ここではWeb用Ho...
nova コマンドによる設定(2/6) 
• 
作成したHostAggregateとホストを紐付ける 
• 
usage: nova aggregate-add-host <aggregate> <host> 
• 
ここでは、AG ID(AG...
nova コマンドによる設定(3/6) 
• 
HostAggregateを識別するためのメタデータを設定する 
• 
usage: nova aggregate-set-metadata <aggregate> <key=value> [<k...
nova コマンドによる設定(4/6) 
• 
HostAggregateの詳細情報を表示する 
• 
usage: nova aggregate-details <aggregate> 
$ nova aggregate-details ag...
nova コマンドによる設定(5/6) 
• 
HostAggregate用のFlavorを作成する 
• 
usage: nova flavor-create [--ephemeral <ephemeral>] [--swap <swap>]...
nova コマンドによる設定(5/6) 
$ nova flavor-create ag1.web 6 1024 10 1 
$ nova flavor-create ag1.db 7 1024 20 1 
+----+---------+--...
nova コマンドによる設定(6/6) 
• 
作成したHostAggregateとFlavorを関連付ける。 
• 
AG:メタデータとFlavorのキー同士を関連付けることができる。 
• 
usage: nova flavor-key <...
nova コマンドによる設定(6/6) 
$ nova flavor-show 6 
+----------------------------+-------------------+ 
| Property | Value | 
+----...
インスタンスの起動 
• 
作成したFlavorを指定することで任意のHostAggregateを指定 できるようになる。 
• 
ただし、ユーザからはHostAggregate(起動させるコンピュー トノード)を意識することはできず、あくまで...
nova コマンドによる設定(参考) 
• 
作成したHostAggregateを削除する。 
• 
usage: nova aggregate-remove-host <aggregate> <host> 
• 
以下の順番でHostAggr...
AailabilityZoneの利用
AailabilityZoneの利用 
• 
AvailabilityZoneを利用するためのコマンドについて解説を行う。 
• 
設定は管理者権限を持つユーザで行う。 
• 
一般ユーザは一部の情報について参照だけが行える。 
• 
Avai...
AailabilityZoneの利用 
• 
nova boot時、自動的に選択されるゾーンは default_schedule_zoneで指定する。 
• 
存在しないゾーンを指定しているまたはゾーンを指定していない場合 はインスタンス作成時...
AailabilityZoneの利用 
$ nova availability-zone-list 
+------+-----------+ 
| Name | Status | 
+------+-----------+ 
| nova |...
AailabilityZoneの利用 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| N...
ag-zone02 
ag-zone01 
AailabilityZoneの利用 
• 
参考に以下のような構成でAvailabilityZoneを作成する。 
• 
2つのAvailabilityZoneを作成し、それぞれのAvailabil...
nova コマンドによる設定(1/2) 
• 
AvailabilityZoneを定義する 
• 
usage: nova aggregate-create <name> [<availability-zone>] 
• 
HostAggreg...
nova コマンドによる設定(1/2) 
$ nova aggregate-create ag1-az1 ag-zone01 
$ nova aggregate-create ag2-az2 ag-zone02 
$ nova aggregat...
nova コマンドによる設定(2/2) 
• 
作成したHostAggregateとホストを紐付ける 
• 
usage: nova aggregate-add-host <aggregate> <host> 
• 
ここでは、AG ID(AG...
nova コマンドによる設定(2/2) 
$ nova aggregate-details 3 
$ nova aggregate-details 4 
+----+---------+-------------------+---------...
nova コマンドによる設定(2/2) 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| ...
インスタンスの起動 
• 
HostAggregateとは異なり、flavorは関係しない。 
• 
ただし、Zone を指定する必要がある。 
$ nova boot --flavor m1.tiny --image IMAGE_UUID -...
インスタンスの起動 
$ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security- groups default --nicnet-id=NETWO...
AvailabilityZoneをまたがる HostAggregateの利用方法
AvailabilityZoneをまたがるHostAggregateの利用方法 
• 
HostAggregateはAvailabilityZoneをまたがることもできる。 
• 
FavorでHostAggregateを指定しつつ、Avail...
AvailabilityZoneをまたがるHostAggregateの利用方法 
• 
以下のような構成でAvailabilityZoneとHostAggregateを作成する。 
• 
2つのAvailabilityZoneを作成し、それぞれ...
novaコマンドによる設定(1/4) 
• 
1つのHostAggregateを作成する。 
• 
2つのAvailabilityZoneを作成する。 
$ nova aggregate-create ag1-az01 ag-zone01 
$...
nova コマンドによる設定(2/4) 
• 
HostAggregate識別用のメタデータを付与する。 
• 
Flavorを作成し、HostAggregateと紐付ける。 
$ nova aggregate-set-metadata 5 w...
nova コマンドによる設定(3/4) 
• 
HostAggregateの状態を確認する。 
$ nova aggregate-details 5 
$ nova aggregate-details 6 
$ nova aggregate-d...
nova コマンドによる設定(4/4) 
• 
HostAggregateとホストを関連付ける 
$ nova aggregate-add-host 5 com001 
$ nova aggregate-add-host 5 com002 
$...
nova コマンドによる設定(4/4) 
$ nova aggregate-details 5 
$ nova aggregate-details 6 
$ nova aggregate-details 7 
+----+----------+...
novaコマンドによる設定(4/4) 
$ nova availability-zone-list 
+-----------------------+----------------------------------------+ 
| N...
インスタンスの起動 
• 
Flavor: ag1.web と合わせてZone: ag-zone01 を指定した場 合はag1.web で定義されたホストかつag-zone01に属すホス トのどこかにインスタンスが作成される。 
$ nova ...
Cinderにおける AvailabilityZone
CinderにおけるAvailabilityZone 
• 
CinderでもAvailabilityZoneが利用できる。 
• 
ただし、Nova程多くのことができるわけではない。 
• 
過去にNovaからForkした時の引き継いだものが...
Cinderの設定 
パラメータ 
初期値 
説明 
default_availability_zone 
(なし) 
ボリューム作成時、AvailabilityZoneを指定して いない場合にデフォルトで指定されるゾーン名。 
storage...
AvailabilityZoneの確認 
• 
ノード: vol001 のstorage_availability_zoneにvol001を指定 した場合の出力は以下の通り 
$ cinder availability-zone-list 
+...
ボリュームの作成 
• 
cinder create の際、アベイラビリティゾーンを指定すること で狙ったゾーンに対してボリューム作成をすることができる。 
$ cinder create --availability-zone vol0011...
ボリュームの作成 
• 
--availability-zoneで指定したゾーンが存在しない場合はエ ラーとなる。 
• 
Horizonを使用した場合、AvailabilityZoneの指定ができずエ ラーになる。
Nova・Cinderの AvailabiltyZone連携
Nova・CinderのAvailabiltyZone連携 
• 
NovaとCinderのAvailabilityZoneが連携できる機能はただ1つ。 
• 
インスタンスが所属するAvailabilityZoneと ボリュームが所属するAv...
Nova・CinderのAvailabiltyZone連携 
• 
cidner_cross_az_attache=trueの場合 
• 
それぞれのAvailabilityZoneを評価しない。すべてAttache可能。 
Zone01 
Z...
Nova・CinderのAvailabiltyZone連携 
• 
cidner_cross_az_attache=falseの場合 
• 
それぞれのAvailabilityZoneを評価し、ゾーンが異なる場合はエラーとなる。 
• 
[We...
今後期待する機能
今後期待する機能 
• 
AvailabilityZoneの柔軟性向上 
• 
AvailabilityZone単位で活性化/非活性化 
• 
大規模障害時など、対象AvailabilityZoneへのアクセスを禁止する等 
• 
プロジェクト...
おしまい
Upcoming SlideShare
Loading in …5
×

AvailabilityZoneとHostAggregate

6,305 views

Published on

OpenStack NovaとCinderのAZ,AGの話。

Published in: Technology
  • Be the first to comment

AvailabilityZoneとHostAggregate

  1. 1. AvailabilityZoneandHostAggrigate (Havanaの場合) 1発書いたきり確認してないです。間違ってたらごめん。 @ishikawa84g
  2. 2. はじめに • 本資料作成にあたり日本OpenStackユーザ会会長中島倫明様 の資料を参考にさせていただきました。ありがとうございまし た。 •http://www.slideshare.net/irix_jp/josug-13thstudyregionandazahcells-v2 • 本資料はHavana時点での検証をまとめたものです。Icehouse, Junoでは 本内容と動作・仕様が異なる場合があります。 • 分散環境の対象はAvailabilityZone, HostAggregateのみとし、Region, Cellについて対象外としています。
  3. 3. もくじ • OpenStackにおける分散環境の区分 • AvailabiltyZoneとHostAggregateの概要 • Novaの設定 • HostAggregateの利用方法 • AvailabilityZoneの利用方法 • AvailabilityZoneをまたがるHostAggregateの利用方法 • CinderにおけるAvailabilityZone • Nova・CinderのAvailabiltyZone連携 • 未検証の事項について • 今後期待する機能
  4. 4. OpenStackにおける分散環境の区分 1. OpenStackそのものの分散 • 複数のOpenStackが別サイトで存在する。 • コンピュートをはじめ、ネットワーク、イメージ共有、認証、 AMQP、データベースなどが分散される。 • Region やCell 2. 仮想マシンの分散 • ネットワーク、認証、AMQP、データベースはそのままに、 コンピュートだけが分散される。 • 分散の対象はコンピュートノード • Availability Zone (AZ) やHost Aggregate (AG) • 主にNovaに実装された機能 対象
  5. 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. 6. AvailabiltyZoneの概要 • 管理者が明示的に指定する • ユーザは定義済みのAZを利用し、仮想マシンの配置先を指定する。 • OpenStackクラスタ(リージョン)内での仮想マシンの配置を ユーザが選択できるようにする。 • 例えば、ラック単位、フロア単位、データセンター単位 3F (AZ3) 2F (AZ2) 第2DC RACK1 (AZ22A) 第2DC RACK2 (AZ22B)
  7. 7. HostAggregateの概要 • 管理者が明示的に指定する。 • リージョン内で仮想マシンの配置に法則を与える。 • どのマシンに配置するかをユーザは意識をしない。 • インスタンスタイプを決めるだけで良い。 • 例えば、「チープなサーバ群とハイスペックなサーバ群の分割」 や「ハイパーバイザでの分割」 AG1 AG2 AG3 KVM: ロースペック KVM: ハイペック VMWare
  8. 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. 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を拒否する
  10. 10. HostAggregateの利用
  11. 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. 12. zone name: nova HostAggregateの利用 • 参考に以下のような構成でHostAggregateを作成する。 • Web用AGとDB用AGを作成し、それぞれのHostAggregateに2 台のコンピュートノードを紐付ける。 ag1-web ag1-db com001 com002 com003 com004
  13. 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. 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. 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. 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. 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. 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. 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. 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. 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. 22. nova コマンドによる設定(参考) • 作成したHostAggregateを削除する。 • usage: nova aggregate-remove-host <aggregate> <host> • 以下の順番でHostAggregateに関係する設定を削除する 1. Flavor削除する 2. HostAggregateとホストの関連付けを解除する 3. HostAggregate削除する
  23. 23. AailabilityZoneの利用
  24. 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. 25. AailabilityZoneの利用 • nova boot時、自動的に選択されるゾーンは default_schedule_zoneで指定する。 • 存在しないゾーンを指定しているまたはゾーンを指定していない場合 はインスタンス作成時にエラーとなる。 • NovaのAvailabilityZoneとCinderのAvailabilityZoneが異なっ てもボリュームをアタッチできるようにするには cinder_cross_az_attach=trueを指定する
  26. 26. AailabilityZoneの利用 $ nova availability-zone-list +------+-----------+ | Name | Status | +------+-----------+ | nova | available | +------+-----------+ 一般
  27. 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. 28. ag-zone02 ag-zone01 AailabilityZoneの利用 • 参考に以下のような構成でAvailabilityZoneを作成する。 • 2つのAvailabilityZoneを作成し、それぞれのAvailabilityZone に2台のコンピュートノードを紐付ける。 com001 com002 com003 com004 ag1-az1 ag2-az2
  29. 29. nova コマンドによる設定(1/2) • AvailabilityZoneを定義する • usage: nova aggregate-create <name> [<availability-zone>] • HostAggregate作成時、HostAggregate名とあわせて AvailabilityZone名を指定することでAvailabilityZoneが作成される。 • AvailabilityZoneの作成にaggregate-createを利用しているが、 これはAvailabilityZoneの機能がHostAggregateに統合された ためである。
  30. 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. 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. 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. 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. 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. 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で指定した ゾーンが存在しない場合はエラーとなる。
  36. 36. AvailabilityZoneをまたがる HostAggregateの利用方法
  37. 37. AvailabilityZoneをまたがるHostAggregateの利用方法 • HostAggregateはAvailabilityZoneをまたがることもできる。 • FavorでHostAggregateを指定しつつ、AvailabilityZoneを指 定することで、指定したAvailabilityZone内で定義されている HostAggregateにだけインスタンスを配置することができる。
  38. 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. 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. 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. 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. 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. 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. 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. 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を選択 すると起動時エラーとなる。
  46. 46. Cinderにおける AvailabilityZone
  47. 47. CinderにおけるAvailabilityZone • CinderでもAvailabilityZoneが利用できる。 • ただし、Nova程多くのことができるわけではない。 • 過去にNovaからForkした時の引き継いだものが残っているだけ? • Cinder AvailabilityZoneはコマンドから作成することができな い。 • サービス認識時にcinder.conf内storage_availability_zone(初期値: nova)に指定されたものが作成される。 • 後から変更できるかどうかは不明。 • データベースに向けてupdate文を直接実行する必要がある。?
  48. 48. Cinderの設定 パラメータ 初期値 説明 default_availability_zone (なし) ボリューム作成時、AvailabilityZoneを指定して いない場合にデフォルトで指定されるゾーン名。 storage_availability_zone nova cinder-volumeが所属するAvailabilityZone。 サービス認識時に自動的に作成される。 コマンド等で後から変更はできない。 • cinder.conf内でAvailabilityZoneの設定に関わるオプションは 以下の通り
  49. 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. 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. 51. ボリュームの作成 • --availability-zoneで指定したゾーンが存在しない場合はエ ラーとなる。 • Horizonを使用した場合、AvailabilityZoneの指定ができずエ ラーになる。
  52. 52. Nova・Cinderの AvailabiltyZone連携
  53. 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. 54. Nova・CinderのAvailabiltyZone連携 • cidner_cross_az_attache=trueの場合 • それぞれのAvailabilityZoneを評価しない。すべてAttache可能。 Zone01 Zone02 Zone01 Zone02 Nova Cinder Attach
  55. 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
  56. 56. 今後期待する機能
  57. 57. 今後期待する機能 • AvailabilityZoneの柔軟性向上 • AvailabilityZone単位で活性化/非活性化 • 大規模障害時など、対象AvailabilityZoneへのアクセスを禁止する等 • プロジェクト単位で見えるAvailabilityZoneを指定 • AvailabilityZone単位のQuota設定 • Cinderに全うなAvailabilityZone機能実装を! • AvailabilityZone単位で利用するネットワークを選択する(Neutron 連携)
  58. 58. おしまい

×