control distribution of virtual machines
Post on 10-Jun-2015
9.005 Views
Preview:
TRANSCRIPT
1
2013.6.28日本 OpenStack ユーザ会 @irix_jp
openstackOpen source software to build public and private clouds.
JOSUG 13th Study
仮想マシンの分散を制御する
2
自己紹介
● @irix_jp
● 日本 OpenStack ユーザ会 会長● クラウド利用促進機構 技術アドバイザー● RedHat 認定アーキテクト
● 某 SIer 勤務● OSS を使ったクラウドサービスの企画・開発
3
Grizzly 時点の OpenStack
● 分散環境を制御するための2つの視点● OpenStack そのものの分散
● 仮想マシンの分散
4
Grizzly 時点の OpenStack
● 分散環境を制御するための 4 つの手段● OpenStack そのものの分散
– Region– Cell
● 仮想マシンの分散– Availability Zone– Host Aggregate
5
Grizzly 時点の OpenStack
● 分散環境を制御するための 4 つの手段● OpenStack そのものの分散
– Region– Cell
● 仮想マシンの分散– Availability Zone– Host Aggregate
ここが主題
6
分散環境の考慮点
● OpenStack の分散を考える上で重要な項目● AMQP ブローカー・・・メッセージの交換範囲● データベース・・・構成管理情報の共有範囲
● 仮想マシンの分散を考える上で重要な項目● スケジューラー( nova-scheduler )
7
● まずは 4 つの手法のおさらい
8
Region
● 異なる 2 つの OpenStack クラスタの操作窓口を一元化するためのもの● メッセージ交換も構成管理情報も共有しない
– MySQL の複製機能等で共有させることもできる
Horzionで定義 Keystone で定義|----------------------------------+-----------+-------------------------------------------------|| id | region | publicurl ||----------------------------------+-----------+-------------------------------------------------|| 13d5e2ec04b7477c993a574b9dba14f1 | RegionOne | http://192.168.1.111:5000/v2.0 || 1f5e76c949c14b41baeb024b20c599f7 | RegionOne | http://192.168.1.111:8080/v1/AUTH_$(tenant_id)s || 6be0db9b56294d44b33c2c2e1cd9e4a8 | RegionOne | http://192.168.1.111:8773/services/Cloud || 973dad1531f04d4e9c9a9b85c98808d0 | RegionOne | http://192.168.1.111:8774/v2/$(tenant_id)s || 9bfc854b8fd24c808160dcb1367c5cbb | RegionOne | http://192.168.1.111:9696/ || d2108c60933343c0ad680562238b9f53 | RegionOne | http://192.168.1.111:9292 || f164fecb28484ce38ffaaa69497fdbef | RegionOne | http://192.168.1.111:8776/v1/$(tenant_id)s || 7fa3739ab8054cf7b612f5427cbfa897 | RegionTwo | http://192.168.1.222:5000/v2.0 || e38690360a2848ec91c28cde8101393c | RegionTwo | http://192.168.1.222:8080/v1/AUTH_$(tenant_id)s || cf05c1f5f3c04b3899af14b8e2edf08d | RegionTwo | http://192.168.1.222:8773/services/Cloud || 1b80b77ce5b64483ad84887d8ca1bf13 | RegionTwo | http://192.168.1.222:8774/v2/$(tenant_id)s || 558b80356f094534be3cbe087e70d257 | RegionTwo | http://192.168.1.222:9696/ || 95b0a65d26d3448a83daf7b817337a0b | RegionTwo | http://192.168.1.222:9292 || ea527718c5fb45c1aa5977aa94262593 | RegionTwo | http://192.168.1.222:8776/v1/$(tenant_id)s |+----------------------------------+-----------+-------------------------------------------------+
9
Cell
● OpenStack クラスタ(リージョン)内に、複数のAMQP ブローカーと、データベースを持つための仕組み● 主に負荷の分散を目的● 大規模な OpenStack 環境を想定した機能
– コンピューティングノード 10,000 台 / リージョンくらい??
● Grizzly 時点で Nova のみの実験的実装– Newtron(Quantum), Cinder 等は未対応
10
Host Aggregate
● OpenStack クラスタ内での仮想マシンの配置に管理者が法則を与える● 例) HyperVisor 種別、マシンスペック等● 管理者が定義するだけ、ユーザは意識しない
11
Availability Zone
● OpenStack クラスタ内での仮想マシンの配置をユーザが選択できるようにする● 例)ラック間、マシンルーム間、 DC 間 等々● 管理者が定義し、ユーザは指定するだけ
● Host Aggregate をベースとした機能– Folsom までは、別の機能として実装されていた。
12
分散環境
AMQP
nova-api
keystone
AMQP
DB
computenova-cell
scheduler
nova-cell
glance
AMQP
AMQP
DB DB
computecomputecomputecomputecomputecompute
computecomputecomputecomputecomputecompute
nova-api
AMQP DB
keystone
scheduler glance
compute
Child Cells1 Child Cells2
Grandchild Cells
Top CellRegion 1 Region 2
Shared Nothing
horizon
AG1 AG2 AG3 AG4AZ1 AZ2
scheduler
13
使い方
● Host Aggregate● Availability Zone
14
Scheduler
● これらの管理をするのは全部、スケジューラー。● スケジューラーに様々なフィルターを適用すること
で、仮想マシンの配置をコントロールできる。
nova.conf(for nova-schduler)
scheduler_default_filters = AggregateInstanceExtraSpecsFilter,AvailabilityZ
oneFilter,RamFilter,ComputeFilter
スケジューラーの設定に関しては
http://goo.gl/qTikE
15
Host Aggregate
$ source openrc admin admin
$ nova aggregate-list+----+------+-------------------+| Id | Name | Availability Zone |+----+------+-------------------++----+------+-------------------+
$ source openrc demo demo
$ nova aggregate-listERROR: Policy doesn't allow compute_extension:aggregates to be performed. (HTTP 403) (Request-ID: req-134ee1c2-2b1b-4a5c-a500-431964dc3490)
管理者 一般ユーザ
16
Availability Zone
$ source openrc admin admin
$ nova availability-zone-list+-------------------------+----------------------------------------+| Name | Status |+-------------------------+----------------------------------------+| internal | available || |- devstack1.opst.ne.jp | || | |- nova-conductor | enabled :-) 2013-06-23T06:12:06.000000 || | |- nova-consoleauth | enabled :-) 2013-06-23T06:12:04.000000 || | |- nova-scheduler | enabled :-) 2013-06-23T06:12:04.000000 || | |- nova-cert | enabled :-) 2013-06-23T06:12:12.000000 || nova | available || |- devstack1.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack8.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack3.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack9.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack2.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:06.000000 || |- devstack5.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack4.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack6.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 || |- devstack7.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T06:12:10.000000 |+-------------------------+----------------------------------------
$ source openrc demo demo
$ nova availability-zone-list+------+-----------+| Name | Status |+------+-----------+| nova | available |+------+-----------+
管理者 一般ユーザ
nova.conf(grizzly)
default_availability_zone=nova
nova.conf(folsom)
node_availability_zone=nova
17
Aggregate 想定環境
Openstack controller
compute1
compute2
compute3
compute4
compute5
compute6
compute7
compute8
compute9
CPU 12core 24core 36core
Mem 24GB 48GB 64GB
Disk SATA SAS Array SSD Array
Web用 AP用 DB用
18
Host Aggregate の定義
$ nova aggregate-create ag1-web+----+---------+-------------------+-------+----------+| Id | Name | Availability Zone | Hosts | Metadata |+----+---------+-------------------+-------+----------+| 5 | ag1-web | None | | |+----+---------+-------------------+-------+----------+
$ nova aggregate-create ag2-ap+----+--------+-------------------+-------+----------+| Id | Name | Availability Zone | Hosts | Metadata |+----+--------+-------------------+-------+----------+| 6 | ag2-ap | None | | |+----+--------+-------------------+-------+----------+
$ nova aggregate-create ag3-db+----+--------+-------------------+-------+----------+| Id | Name | Availability Zone | Hosts | Metadata |+----+--------+-------------------+-------+----------+| 7 | ag3-db | None | | |+----+--------+-------------------+-------+----------+
web サーバ用
APサーバ用
DBサーバ用
19
Host Aggregate へホスト追加■ホストの追加 $ nova aggregate-add-host 5 devstack1.opst.ne.jp $ nova aggregate-add-host 5 devstack2.opst.ne.jp $ nova aggregate-add-host 5 devstack3.opst.ne.jp■識別子を設定 $ nova aggregate-set-metadata 5 webserver01=true
ホストの追加 $ nova aggregate-add-host 6 devstack4.opst.ne.jp $ nova aggregate-add-host 6 devstack5.opst.ne.jp $ nova aggregate-add-host 6 devstack6.opst.ne.jp■識別子の設定 $ nova aggregate-set-metadata 6 apserver01=true
ホストの追加 $ nova aggregate-add-host 7 devstack7.opst.ne.jp $ nova aggregate-add-host 7 devstack8.opst.ne.jp $ nova aggregate-add-host 7 devstack9.opst.ne.jp■識別子の設定 $ nova aggregate-set-metadata 7 dbserver01=true
20
Host Aggregate へホスト追加
|----+---------+-------------------+---------------------------+---------------------------|| Id | Name | Availability Zone | Hosts | Metadata ||----+---------+-------------------+---------------------------+---------------------------|| 5 | ag1-web | None | [u'devstack1.opst.ne.jp', | {u'webserver01': u'true'} || | | | u'devstack2.opst.ne.jp', | || | | | u'devstack3.opst.ne.jp'] | ||----+---------+-------------------+---------------------------+---------------------------|| 6 | ag2-ap | None | [u'devstack4.opst.ne.jp', | {u'apserver01': u'true'} || | | | u'devstack5.opst.ne.jp', | || | | | u'devstack6.opst.ne.jp'] | ||----+---------+-------------------+---------------------------+---------------------------|| 7 | ag3-db | None | [u'devstack7.opst.ne.jp', | {u'dbserver01': u'true'} || | | | u'devstack8.opst.ne.jp', | || | | | u'devstack9.opst.ne.jp'] | ||----+---------+-------------------+---------------------------+---------------------------|
21
Flavor との関連付け
$ nova flavor-create ag1.webserver 100 512 0 1$ nova flavor-key 100 set webserver01=true
$ nova flavor-create ag1.apserver 101 512 0 1$ nova flavor-key 100 set apserver01=true
$ nova flavor-create ag1.dbserver 102 512 0 1$ nova flavor-key 100 set dbserver01=true
$ nova flavor-list+-----+---------------+-----------+------+-----------+------+-------+-------------+-----------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |+-----+---------------+-----------+------+-----------+------+-------+-------------+-----------+| 100 | ag1.webserver | 512 | 0 | 0 | | 1 | 1.0 | True || 101 | ag1.apserver | 512 | 0 | 0 | | 1 | 1.0 | True || 102 | ag1.dbserver | 512 | 0 | 0 | | 1 | 1.0 | True || 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True || 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True || 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True || 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True || 42 | m1.nano | 64 | 0 | 0 | | 1 | 1.0 | True || 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True || 84 | m1.micro | 128 | 0 | 0 | | 1 | 1.0 | True |+-----+---------------+-----------+------+-----------+------+-------+-------------+-----------+
22
Flavor との関連付け
$ nova flavor-show 100+----------------------------+---------------------------+| Property | Value |+----------------------------+---------------------------+| name | ag1.webserver || ram | 512 || OS-FLV-DISABLED:disabled | False || vcpus | 1 || extra_specs | {u'webserver01': u'true'} || swap | || os-flavor-access:is_public | True || rxtx_factor | 1.0 || OS-FLV-EXT-DATA:ephemeral | 0 || disk | 0 || id | 100 |+----------------------------+---------------------------+
23
仮想マシンの起動
$ for i in {1..9}; do nova boot --flavor ag1.apserver --image cirros-0.3.1-x86_64-uec ap0${i}; done
$ nova list+--------------------------------------+------+--------+------------+-------------+----------------------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+------+--------+------------+-------------+----------------------+| 7a893de6-559f-4a9c-ac3d-9a66a6525c66 | ap01 | ACTIVE | None | Running | private=172.24.17.3 || d798ade7-844e-4f77-850b-a9c55c657e98 | ap02 | ACTIVE | None | Running | private=172.24.17.4 || b6590d4e-a0d7-4500-99d0-167525156212 | ap03 | ACTIVE | None | Running | private=172.24.17.5 || 837b2f81-9aa0-403c-b7f9-d8992211f68b | ap04 | ACTIVE | None | Running | private=172.24.17.6 || 95d9d8d0-a085-4d02-8bad-973213b64c96 | ap05 | ACTIVE | None | Running | private=172.24.17.7 || 2c4bc17e-b3f0-49f3-ac76-58e677f14bac | ap06 | ACTIVE | None | Running | private=172.24.17.8 || 6af465cf-cafc-498b-a937-417911575316 | ap07 | ACTIVE | None | Running | private=172.24.17.9 || a92e1d08-bf7a-4749-8d57-1874cfdae49b | ap08 | ACTIVE | None | Running | private=172.24.17.10 || a8454436-5631-4b30-b4b7-815be628e167 | ap09 | ACTIVE | None | Running | private=172.24.17.11 |+--------------------------------------+------+--------+------------+-------------+----------------------+
$ nova-manage vm list
| instance | node | type | state ||----------+----------------------+--------------+--------|| ap01 | devstack4.opst.ne.jp | ag1.apserver | active || ap02 | devstack6.opst.ne.jp | ag1.apserver | active || ap03 | devstack5.opst.ne.jp | ag1.apserver | active || ap04 | devstack4.opst.ne.jp | ag1.apserver | active || ap05 | devstack6.opst.ne.jp | ag1.apserver | active || ap06 | devstack5.opst.ne.jp | ag1.apserver | active || ap07 | devstack4.opst.ne.jp | ag1.apserver | active || ap08 | devstack6.opst.ne.jp | ag1.apserver | active || ap09 | devstack5.opst.ne.jp | ag1.apserver | active |
指定した Host Aggregateに含まれたホストのみに配置される。
24
Host Aggregate まとめ
ag1-web
ag2-ap
compute1
compute2
compute3
compute4
compute5
compute6
compute7
compute8
compute9
ag3-db
{u'webserver01': u'true'}
{u'apserver01': u'true'}
{u'dbserver01': u'true'}
ag1.dbserver
ag1.apserver
ag1.webserver
{u'webserver01': u'true'}
{u'apserver01': u'true'}
{u'dbserver01': u'true'}
Host aggregate(管理者 )
Flavor(管理者 )
nova boot \ --flavor ag1.apserver \ --image cirros-0.3.1-x86_64-uec
● 管理者が Flavor とAggregate のキーを設定する。
● ユーザが指定した Flavor のキーに対応する Aggregate で仮想マシンが起動する。
● scheduler が振り分けを制御する。
● 用途ごとにスペックの異なる物理マシンへ配置したり、ハイパーバイザーが混在する環境での割り当てに利用する。
25
AZ 想定環境
Openstack controller
compute2
compute3
compute4
compute5
compute6 compute8
compute7 compute9
浅草 DC 渋谷 DC 上野 DC
26
Availability Zone の定義+-------------------------+----------------------------------------+| Name | Status |+-------------------------+----------------------------------------+| internal | available || |- devstack1.opst.ne.jp | || | |- nova-conductor | enabled :-) 2013-06-23T11:20:05.000000 || | |- nova-consoleauth | enabled :-) 2013-06-23T11:20:11.000000 || | |- nova-scheduler | enabled :-) 2013-06-23T11:20:05.000000 || | |- nova-cert | enabled :-) 2013-06-23T11:20:07.000000 || nova | available || |- devstack1.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack8.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack3.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack9.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack2.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack5.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack4.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack6.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 || |- devstack7.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:20:09.000000 |+-------------------------+----------------------------------------+
27
Availability Zone の定義
$ nova aggregate-create ag001-az001 az-tokyo-asakusa$ nova aggregate-create ag002-az002 az-tokyo-shibuya$ nova aggregate-create ag003-az003 az-tokyo-ueno
$ nova aggregate-list+----+-------------+-------------------+| Id | Name | Availability Zone |+----+-------------+-------------------+| 5 | ag1-web | None || 6 | ag2-ap | None || 7 | ag3-db | None || 8 | ag001-az001 | az-tokyo-asakusa || 9 | ag002-az002 | az-tokyo-shibuya || 10 | ag003-az003 | az-tokyo-ueno |+----+-------------+-------------------+
● Availability Zone は Host Aggregate をベースにして実装されている。
● Folsom までは完全に別機能。● host aggregate based availability zones● https://blueprints.launchpad.net/nova/+spec/aggregate-based-availability-zones
28
AZ へのホスト追加
● 方法は Host Aggregate と同一。
■ホストの追加 $ nova aggregate-add-host 8 devstack2.opst.ne.jp $ nova aggregate-add-host 8 devstack3.opst.ne.jp $ nova aggregate-add-host 8 devstack4.opst.ne.jp $ nova aggregate-add-host 8 devstack5.opst.ne.jp
$ nova aggregate-add-host 9 devstack6.opst.ne.jp $ nova aggregate-add-host 9 devstack7.opst.ne.jp
$ nova aggregate-add-host 10 devstack8.opst.ne.jp $ nova aggregate-add-host 10 devstack9.opst.ne.jp
29
AZ へのホスト追加
● 一つのホストを複数の Aggregate へ所属させることも可能。|----+-------------+-------------------+---------------------------+---------------------------------------------|| Id | Name | Availability Zone | Hosts | Metadata ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 5 | ag1-web | None | [u'devstack1.opst.ne.jp', | {u'webserver01': u'true'} || | | | u'devstack2.opst.ne.jp', | || | | | u'devstack3.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 6 | ag2-ap | None | [u'devstack4.opst.ne.jp', | {u'apserver01': u'true'} || | | | u'devstack5.opst.ne.jp', | || | | | u'devstack6.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 7 | ag3-db | None | [u'devstack7.opst.ne.jp', | {u'dbserver01': u'true'} || | | | u'devstack8.opst.ne.jp', | || | | | u'devstack9.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 8 | ag001-az001 | az-tokyo-asakusa | [u'devstack2.opst.ne.jp', | {u'availability_zone': u'az-tokyo-asakusa'} || | | | u'devstack3.opst.ne.jp', | || | | | u'devstack4.opst.ne.jp', | || | | | u'devstack5.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 9 | ag002-az002 | az-tokyo-shibuya | [u'devstack6.opst.ne.jp', | {u'availability_zone': u'az-tokyo-shibuya'} || | | | u'devstack7.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|| 10 | ag003-az003 | az-tokyo-ueno | [u'devstack8.opst.ne.jp', | {u'availability_zone': u'az-tokyo-ueno'} || | | | u'devstack9.opst.ne.jp'] | ||----+-------------+-------------------+---------------------------+---------------------------------------------|
30
AZ へのホスト追加+-------------------------+----------------------------------------+| Name | Status |+-------------------------+----------------------------------------+| nova | available || |- devstack1.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:19.000000 || az-tokyo-asakusa | available || |- devstack3.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || |- devstack2.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || |- devstack5.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || |- devstack4.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || az-tokyo-ueno | available || |- devstack9.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || |- devstack8.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || az-tokyo-shibuya | available || |- devstack6.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 || |- devstack7.opst.ne.jp | || | |- nova-compute | enabled :-) 2013-06-23T11:45:17.000000 |+-------------------------+----------------------------------------+
31
AZ 指定での仮想マシン起動
$ nova availability-zone-list+------------------+-----------+| Name | Status |+------------------+-----------+| nova | available || az-tokyo-asakusa | available || az-tokyo-ueno | available || az-tokyo-shibuya | available |+------------------+-----------+
$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm01$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm02$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm03$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm04$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm05$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm06
$ nova list+--------------------------------------+-----------+--------+------------+-------------+---------------------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+-----------+--------+------------+-------------+---------------------+| 38a845b0-df6f-4b86-a52e-46ef9a1c269b | ueno-vm01 | ACTIVE | None | Running | private=172.24.17.2 || fa214a65-414a-4b47-a526-83116a73dda5 | ueno-vm02 | ACTIVE | None | Running | private=172.24.17.3 || 44c687b9-d89e-4497-a3d9-d277ee7af02c | ueno-vm03 | ACTIVE | None | Running | private=172.24.17.4 || c260af46-cc11-4a7c-96e2-4f39786a8972 | ueno-vm04 | ACTIVE | None | Running | private=172.24.17.5 || 4444d731-1f6a-4baa-9228-298297d1e726 | ueno-vm05 | ACTIVE | None | Running | private=172.24.17.6 || be9ef87b-eb5a-4dd5-b8c9-a1c779704790 | ueno-vm06 | ACTIVE | None | Running | private=172.24.17.7 |+--------------------------------------+-----------+--------+------------+-------------+---------------------+
32
AZ 指定での仮想マシン起動
$ nova-manage vm list
| instance | node | type | state ||-----------+----------------------+---------+--------|| ueno-vm01 | devstack9.opst.ne.jp | m1.tiny | active || ueno-vm02 | devstack8.opst.ne.jp | m1.tiny | active || ueno-vm03 | devstack9.opst.ne.jp | m1.tiny | active || ueno-vm04 | devstack8.opst.ne.jp | m1.tiny | active || ueno-vm05 | devstack9.opst.ne.jp | m1.tiny | active || ueno-vm06 | devstack8.opst.ne.jp | m1.tiny | active |
Availability Zoneを指定しない場合、 schedulerに設定されたデフォルト zoneが利用される
指定した Availability Zoneに含まれたホストのみに配置される。
default_schedule_zone=nova
nova.conf(nova-api)
33
Availability Zone まとめ
compute2
compute3
compute4
compute5
compute6
compute7
compute8
compute9
Availability Zone(管理者 )
● 管理者が Availability Zone を定義する。
● ユーザはゾーンを指定して仮想マシンを起動する。
● scheduler が振り分けを制御する。
● Availability Zone は DB/AMQP が共有できる範囲での分散を制御する。
● 近隣の DC単位、敷地内の建物単位、ラック単位など。
az-tokyo-asakusa
az-tokyo-shibuya
az-tokyo-ueno
$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec --availability-zone az-tokyo-ueno ueno-vm01
34
組合せ
● Aggregate と AZ を組合せて利用することも可能
compute2
compute3
compute4
compute6
compute7
compute8
compute5 compute9
Host Aggerageag-hadoop
Availability Zoneaz-rack01
Availability Zoneaz-rack02
35
Aggregate/AZ の定義
■Aggregateと AZの作成$ nova aggregate-create ag-hadoop$ nova aggregate-create ag0001-az-rack01 az-rack01$ nova aggregate-create ag0002-az-rack02 az-rack02
■Aggregateにキーを設定$ nova aggregate-set-metadata 11 hadoop01=true
■Flavorの作成とキーの設定$ nova flavor-create h1.hadoop 200 512 0 1$ nova flavor-key 200 set hadoop01=true
■作成した Aggregateと AZ(抜粋$ nova aggregate-list+----+------------------+-------------------+| Id | Name | Availability Zone |+----+------------------+-------------------+| 11 | ag-hadoop | None || 12 | ag0001-az-rack01 | az-rack01 || 13 | ag0002-az-rack02 | az-rack02 |+----+------------------+-------------------+
36
Aggregate/AZ の定義|----+------------------+-------------------+---------------------------+--------------------------------------|| Id | Name | Availability Zone | Hosts | Metadata ||----+------------------+-------------------+---------------------------+--------------------------------------|| 11 | ag-hadoop | None | [u'devstack2.opst.ne.jp', | {u'hadoop01': u'true'} || | | | u'devstack3.opst.ne.jp', | || | | | u'devstack4.opst.ne.jp', | || | | | u'devstack7.opst.ne.jp', | || | | | u'devstack6.opst.ne.jp', | || | | | u'devstack8.opst.ne.jp'] | ||----+------------------+-------------------+---------------------------+--------------------------------------|| 12 | ag0001-az-rack01 | az-rack01 | [u'devstack2.opst.ne.jp', | {u'availability_zone': u'az-rack01'} || | | | u'devstack3.opst.ne.jp', | || | | | u'devstack4.opst.ne.jp'] | ||----+------------------+-------------------+---------------------------+--------------------------------------|| 13 | ag0002-az-rack02 | az-rack02 | [u'devstack6.opst.ne.jp', | {u'availability_zone': u'az-rack02'} || | | | u'devstack7.opst.ne.jp', | || | | | u'devstack8.opst.ne.jp'] | ||----+------------------+-------------------+---------------------------+--------------------------------------|
37
Aggregate/AZ の定義 nova |- devstack1.opst.ne.jp | |- nova-compute | az-tokyo-asakusa |- devstack2.opst.ne.jp | |- nova-compute |- devstack3.opst.ne.jp | |- nova-compute |- devstack4.opst.ne.jp | |- nova-compute |- devstack5.opst.ne.jp | |- nova-compute | az-tokyo-shibuya |- devstack6.opst.ne.jp | |- nova-compute |- devstack7.opst.ne.jp | |- nova-compute | az-tokyo-ueno |- devstack8.opst.ne.jp | |- nova-compute |- devstack9.opst.ne.jp | |- nova-compute |
| az-rack01 |- devstack2.opst.ne.jp | |- nova-compute |- devstack3.opst.ne.jp | |- nova-compute |- devstack4.opst.ne.jp | |- nova-compute | az-rack02 |- devstack6.opst.ne.jp | |- nova-compute |- devstack7.opst.ne.jp | |- nova-compute |- devstack8.opst.ne.jp | |- nova-compute
*見やすいように加工しています。
38
仮想マシンの起動$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop01$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop02$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop03$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop04$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop05$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop06$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop07$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop08$ nova boot --flavor h1.hadoop --image cirros-0.3.1-x86_64-uec --availability-zone az-rack02 hadoop09
|----------+----------------------+-----------+--------|| instance | node | type | state ||----------+----------------------+-----------+--------|| hadoop01 | devstack6.opst.ne.jp | h1.hadoop | active || hadoop02 | devstack8.opst.ne.jp | h1.hadoop | active || hadoop03 | devstack7.opst.ne.jp | h1.hadoop | active || hadoop04 | devstack6.opst.ne.jp | h1.hadoop | active || hadoop05 | devstack8.opst.ne.jp | h1.hadoop | active || hadoop06 | devstack7.opst.ne.jp | h1.hadoop | active || hadoop07 | devstack6.opst.ne.jp | h1.hadoop | active || hadoop08 | devstack8.opst.ne.jp | h1.hadoop | active || hadoop09 | devstack7.opst.ne.jp | h1.hadoop | active ||----------+----------------------+-----------+--------|
指定した Host Aggregateに含まれたホストのみに配置される。
39
まとめ
● OpenStack そのものの分散を制御したい時には● Region or Cell
● 仮想マシンの分散を制御したい時には、● Availability Zone or Host Aggregate
● Availability Zone はユーザが仮想マシンの配置を管理する。
● Host Aggregate は管理者が仮想マシンの分散に法則を与える。– 組み合わせることも可能
top related