アベイラビリティーゾーン

アベイラビリティーゾーン

アベイラビリティーゾーンを使うと、DHCP、 L3、ファイアウォールなどのサービスを実行するネットワークノードをグルーピングできます。アベイラビリティーゾーンは、ネットワークノード上のエージェントの属性として定義されます。ユーザーはリソースをアベイラビリティーゾーンに関連付けることで、リソースの可用性を高めることができます。

ユースケース

アベイラビリティーゾーンはネットワークリソースの可用性を高めるために使用されます。オペレーターは、異なる電源供給源に接続されたネットワークノードを別々のアベイラビリティーゾーンにグルーピングし、可用性を確保しながらリソースの割り当てを行うように設定します。これにより、ネットワークリソースは異なるアベイラビリティーゾーンに割り当てられます。

必要な拡張機能

コアプラグインは availability_zone 拡張をサポートしている必要があります。また、ネットワークをアベイラビリティーゾーンに基いて割り当てを行うには、コアプラグインが network_availability_zone 拡張もサポートしている必要があります。ルーターをアベイラビリティーゾーンに基いて割り当てを行うには、ルーターサービスプラグインが router_availability_zone 拡張をサポートしている必要があります。

$ openstack extension list --network -c Alias -c Name
+---------------------------+---------------------------+
| Name                      | Alias                     |
+---------------------------+---------------------------+
...
| Network Availability Zone | network_availability_zone |
...
| Availability Zone         | availability_zone         |
...
| Router Availability Zone  | router_availability_zone  |
...
+---------------------------+---------------------------+

エージェントのアベイラビリティーゾーン

availability_zone 属性は dhcp-agentl3-agent で定義できます。各エージェントでアベイラビリティーゾーンを定義するには、 /etc/neutron/dhcp_agent.ini/etc/neutron/l3_agent.ini[AGENT] セクションで値を設定します。

[AGENT]
availability_zone = zone-1

エージェントのアベイラビリティーゾーンを確認するには、以下のようにします。

$ openstack network agent show 116cc128-4398-49af-a4ed-3e95494cd5fc
+---------------------+---------------------------------------------------+
| Field               | Value                                             |
+---------------------+---------------------------------------------------+
| admin_state_up      | UP                                                |
| agent_type          | DHCP agent                                        |
| alive               | True                                              |
| availability_zone   | zone-1                                            |
| binary              | neutron-dhcp-agent                                |
| configurations      | dhcp_driver='neutron.agent.linux.dhcp.Dnsmasq',   |
|                     | dhcp_lease_duration='86400',                      |
|                     | log_agent_heartbeats='False', networks='2',       |
|                     | notifies_port_ready='True', ports='6', subnets='4 |
| created_at          | 2016-12-14 00:25:54                               |
| description         | None                                              |
| heartbeat_timestamp | 2016-12-14 06:20:24                               |
| host                | ankur-desktop                                     |
| id                  | 116cc128-4398-49af-a4ed-3e95494cd5fc              |
| started_at          | 2016-12-14 00:25:54                               |
| topic               | dhcp_agent                                        |
+---------------------+---------------------------------------------------+

$ openstack network agent show 9632309a-2aa4-4304-8603-c4de02c4a55f
+---------------------+-------------------------------------------------+
| Field               | Value                                           |
+---------------------+-------------------------------------------------+
| admin_state_up      | UP                                              |
| agent_type          | L3 agent                                        |
| alive               | True                                            |
| availability_zone   | zone-1                                          |
| binary              | neutron-l3-agent                                |
| configurations      | agent_mode='legacy', ex_gw_ports='2',           |
|                     | external_network_bridge='', floating_ips='0',   |
|                     | gateway_external_network_id='',                 |
|                     | handle_internal_only_routers='True',            |
|                     | interface_driver='openvswitch', interfaces='4', |
|                     | log_agent_heartbeats='False', routers='2'       |
| created_at          | 2016-12-14 00:25:58                             |
| description         | None                                            |
| heartbeat_timestamp | 2016-12-14 06:20:28                             |
| host                | ankur-desktop                                   |
| id                  | 9632309a-2aa4-4304-8603-c4de02c4a55f            |
| started_at          | 2016-12-14 00:25:58                             |
| topic               | l3_agent                                        |
+---------------------+-------------------------------------------------+

アベイラビリティーゾーン対応スケジューラー

ネットワークスケジューラー

/etc/neutron/neutron.confnetwork_scheduler_driverAZAwareWeightScheduler を設定すると、 Networking サービスはアベイラビリティーゾーンに基いてネットワークの割り当てを行います。

network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
dhcp_load_type = networks

Networking サービスは、選択されたゾーン内のいずれかのエージェントに WeightScheduler によりネットワークの割り当てを行います。

ルータースケジューラー

/etc/neutron/neutron.confrouter_scheduler_driverAZLeastRoutersScheduler を設定すると、 Networking サービスはアベイラビリティーゾーンに基いてルーターの割り当てを行います。

router_scheduler_driver = neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler

Networking サービスは、選択されたゾーン内のいずれかのエージェントに LeastRouterScheduler によりルーターの割り当てを行います。

アベイラビリティーゾーンを使った高可用性の実現

Networking サービスは、ルーターに対する高可用性と、ネットワークの DHCP サービスに対する高可用性と耐障害性を持ちますが、アベイラビリティーゾーンはこれとは異なる保護レイヤーを提供し、 Networking サービスのデプロイメントを別々の故障ドメインに区分けするものです。異なるアベイラビリティーゾーンにまたがって HA ノードをデプロイすることで、ゾーン全体に渡る障害が発生した場合でも、ネットワークサービスが利用可能な状態になることを保証できます。

このセクションでは、L3 と DHCP に対するアベイラビリティーゾーンと組み合わせて高可用性を実現する方法を説明します。アベイラビリティーゾーンについては上記のオプションを設定しているものとします。

L3 の高可用性

L3 の高可用性を実現するには /etc/neutron/neutron.conf で以下のオプションを設定します。

l3_ha = True
max_l3_agents_per_router = 3

HA ルーターは、ルーター作成時に指定したアベイラビリティーゾーンに作成されます。

DHCP の高可用性

DHCP の高可用性を実現するには /etc/neutron/neutron.conf で以下のオプションを設定します。

dhcp_agents_per_network = 2

DHCP サービスは、ネットワーク作成時に指定したアベイラビリティーゾーンに作成されます。

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.