58
AvailabilityZone and HostAggrigate (Havanaの場合) 1発書いたきり確認してないです。間違ってたらごめん。 @ishikawa84g

AvailabilityZoneとHostAggregate

Embed Size (px)

Citation preview

AvailabilityZoneand

HostAggrigate(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

TopCellnova-api

Glance

Keystone

nova-cellDB

Child Cells1AMQP

nova-cell

Child Cells2

AMQP

Grandchild CellsAMQP

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-listERROR: Policy doesn‘t allow compute_extension:aggregates to 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(AG Nameでも可)とホスト名を指定する。

• ホスト名は 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=trueAggregate 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 --nic NW_UUID cirros

$ sudo nova-manage vm list 2> /dev/nullinstance node type state cirros-afa67382-7fc2-43b8-afbd-e2c42f972a96 com002 ag1.web activecirros-dabf3e5c-e501-4c3a-98f8-24ea13711a3a com001 ag1.web activecirros-dd5441e6-2e66-4dca-8fb4-77552a8a37a8 com002 ag1.web active

(省略)・・・・・・・・・

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-zone02ag-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(AG Nameでも可)とホスト名を指定する。

• ホスト名は 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 --nic net-id=NETWORK_UUID --availability-zone ag-zone01 cirros

$ sudo nova-manage vm list 2> /dev/nullinstance node (省略) zonecirros-0cf0c695-2797-4c86-8daf-78f951735b9e com002 ・・・ ag-zone01cirros-37d253bd-24e1-49d5-89e5-4e16fd2d45a3 com001 ・・・ ag-zone01cirros-5b433557-7812-4c78-90f9-262b3c062563 com002 ・・・ ag-zone01cirros-1623d65b-1359-4284-a737-b96e02baaa89 com001 ・・・ ag-zone01

インスタンスの起動$ nova boot --flavor m1.tiny --image IMAGE_UUID --num-instances 10 --security-groups default --nic net-id=NETWORK_UUID --availability-zone ag-zone02 cirros

$ sudo nova-manage vm list 2> /dev/nullinstance node (省略) zonecirros-57e139aa-664b-439b-846a-2319885fe7e5 com004 ・・・ ag-zone02cirros-7507c166-d0dc-4e27-a1ff-1f730922383f com003 ・・・ ag-zone02cirros-be65cc97-fd7e-433c-bf9f-7ea44f0169e5 com004 ・・・ ag-zone02cirros-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-zone02ag-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=trueAggregate 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 --nic net-id=NETWORK_UUID --availability-zone ag-zone01 cirros$ sudo nova-manage vm list 2> /dev/nullinstance node type zonecirros-9cf59ffe-2a31-48c4-b081-e2b732004b70 com002 ag1.web ag-zone01cirros-f283608c-14f0-4da0-a02f-8147f7c044c6 com001 ag1.web ag-zone01cirros-9594b32a-6ff8-43db-ada3-106494bc3b85 com002 ag1.web ag-zone01cirros-03861c7d-a356-4e88-9acb-f1980e2ea942 com001 ag1.web ag-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 novacinder-volumeが所属するAvailabilityZone。サービス認識時に自動的に作成される。コマンド等で後から変更はできない。

• cinder.conf内でAvailabilityZoneの設定に関わるオプションは以下の通り

AvailabilityZoneの確認• ノード: vol001 の storage_availability_zoneにvol001を指定した場合の出力は以下の通り

$ cinder availability-zone-list+--------+-----------+| Name | Status |+--------+-----------+| vol001 | available |+--------+-----------+

$ sudo cinder-manage host list 2> /dev/nullhost zonevol001 vol001

ボリュームの作成• cinder create の際、アベイラビリティゾーンを指定することで狙ったゾーンに対してボリューム作成をすることができる。

$ cinder create --availability-zone vol001 1$ 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 CinderAttach

Nova・CinderのAvailabiltyZone連携• cidner_cross_az_attache=falseの場合• それぞれのAvailabilityZone を評価し、 ゾーンが異なる場合はエラーとなる。

• [Wed Aug 06 07:43:19.809457 2014] [:error] [pid 1647: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 CinderAttach

今後期待する機能

今後期待する機能• AvailabilityZoneの柔軟性向上

• AvailabilityZone単位で活性化/非活性化• 大規模障害時など、対象AvailabilityZoneへのアクセスを禁止する等

• プロジェクト単位で見えるAvailabilityZoneを指定• AvailabilityZone単位のQuota設定

• Cinderに全うなAvailabilityZone機能実装を!

• AvailabilityZone単位で利用するネットワークを選択する(Neutron連携)

おしまい