FUJITSU Cloud Service K5
IaaS 設計・構築ガイド(デザインパターン・実装サンプル集)

マルチAZ接続パターン


要求事項

システムの可用性を、論理的に高めるだけではなく データセンターレベルで可用性を維持したい、
といった要求事項に対応するパターンです。



対応するK5デザインパターン概要

K5では、環境レベルでの物理的な信頼性を高める方式として、以下の 2種類のロケーションサービスがあります。

リージョン地域 を分ける方式
地域的な災害対策(DR)に活用します
アベイラビリティ
ゾーン(AZ)
リージョン内で物理的に完全に独立した環境を分ける方式
ファシリティの故障時の影響を最小限にとどめます

このパターンでは、リージョン内でアベイラビリティゾーン(AZ)を分ける構成を採用した場合に、
個々のAZに設置したネットワークを低遅延のネットワークで接続して1つのシステムとして使用できるようにする、
AZ間のネットワーク設定について記載します。



構造 (イメージ図)



実装サンプル

1.事前準備

 (1) 内部ネットワーク、サブネット、セキュリティグループ、仮想サーバの作成(ポータル)

  • 2つのAZで、内部ネットワーク、サブネット、仮想サーバを作成してください。
  • セキュリティグループを作成してください。(セキュリティグループはAZの指定は不要です。)
  • セキュリティグループは、2つのAZ間で必要な通信が行えるよう設定してください。
    例として、セキュリティグループ "SG_Multi_AZ" 内で ping を通すような場合は、以下となります。

    • K5ポータルにログインしIaaSポータルを選択します。
    • 「ネットワーク」⇒「セキュリティグループ」画面で、
      セキュリティグループ "SG_Multi_AZ" の「アクション」から「ルール管理」をクリックします。
    • 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
    • 「ルールの追加」画面で、以下のルールを追加します。
ルール
方向
接続先セキュリティグループIPバージョン
ALL ICMP受信セキュリティグループSG_Multi_AZIPv4
ALL ICMP送信セキュリティグループSG_Multi_AZIPv4



 (2) 各種値の取得

  • API使用時に、2つのAZとも、以下の値が必要となります。
    ポータルで仮想サーバ等を作成した際に、合わせて取得してください。
項目
設定値
内容
AZ1用AZ2用
AZ名称"jp-east-1a""jp-east-1b""jp-east-1a", "jp-east-1b" 等
内部ネットワークID(生成されたID)(生成されたID)それぞれのAZで生成されたID
サブネットID(生成されたID)(生成されたID)それぞれのAZで生成されたID
サブネット"192.168.1.0/24""192.168.20.0/24"サンプルで左記を使用
サブネットのデフォルトゲートウェイIP"192.168.1.1""192.168.20.1"サンプルで左記を使用
セキュリティグループID(生成されたID)AZ間の通信制御用セキュリティグループID



 (3) 各種値の決定

  • AZ間接続をAPIで設定する際に、以下を決めておく必要があります。
項目
設定値
内容
AZ1用AZ2用
ネットワークコネクター名称"demo-nwc"サンプルで左記を使用
コネクターエンドポイント名称"demo-nwcep-az1""demo-nwcep-az2"サンプルで左記を使用
ポート名称"demo-port-az1""demo-port-az2"サンプルで左記を使用
ポート作成時のIPアドレス"192.168.1.100""192.168.20.100"サンプルで左記を使用



2.ネットワークコネクターの作成

 (1) ネットワークコネクターの作成

  以下のAPIに、設定項目(json)を設定し、実行してください。

  • 設定項目(json)
項目
設定値
内容
$NAME"demo-nwc"ネットワークコネクター名称(任意)
  • 実行API

curl -s -X POST $NETWORK/v2.0/network_connectors -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"network_connector":{ "name": "'$NAME'"}}' | jq .



 (2) ネットワークコネクターの確認

  • 実行API

curl -s -X GET $NETWORK/v2.0/network_connectors -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .



3.コネクターエンドポイントの作成

 (1) コネクターエンドポイントの作成

  以下のAPIに、設定項目(json)を設定し、AZ1、AZ2でそれぞれ実行してください。

  • 設定項目(json)
項目
設定値
内容
AZ1用AZ2用
$NAME"demo-nwcep-az1""demo-nwcep-az2"コネクターエンドポイント名称(任意)
$NETCON_ID(生成されたID)生成されたネットワークコネクターのID
$EP_TYPE"availability_zone""availability_zone":K5内接続
$AZ"jp-east-1a""jp-east-1b""jp-east-1a"、"jp-east-1b" 等
  • 実行API

curl -s -X POST $NETWORK/v2.0/network_connector_endpoints -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"network_connector_endpoint":{ "name": "'$NAME'", "network_connector_id": "'$NETCON_ID'", "endpoint_type": "'$EP_TYPE'", "location": "'$AZ'"}}' | jq .



 (2) 作成したコネクターエンドポイントの確認

  • 実行API

curl -s -X GET $NETWORK/v2.0/network_connector_endpoints -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .



4.port作成

  以下のAPIに、設定項目(json)を設定し、AZ1、AZ2でそれぞれ実行してください。

  • 設定項目(json)
項目
設定値
内容
AZ1用AZ2用
$PORT_NAME"demo-port-az1""demo-port-az2"ポート名称(任意)
$NETWORK_ID(生成されたID)(生成されたID)それぞれのAZの内部ネットワークID
$SUBNET_ID(生成されたID)(生成されたID)それぞれのAZのサブネットID
$FIXED_IP_ADDRESS"192.168.1.100""192.168.20.100"サンプルで左記を使用
$SG_ID(生成されたID)セキュリティグループID
$AZ"jp-east-1a""jp-east-1b""jp-east-1a"、"jp-east-1b" 等
  • 実行API

curl -s $NETWORK/v2.0/ports -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"port":{"network_id": "'$NETWORK_ID'", "name": "'$PORT_NAME'", "availability_zone": "'$AZ'", "fixed_ips": [{"subnet_id": "'$SUBNET_ID'", "ip_address": "'$FIXED_IP_ADDRESS'"}], "security_groups": ["'$SG_ID'"] }}' | jq .



5.コネクターエンドポイントにポートをアタッチ

  設定項目(REST API)で生成したAPIに、設定項目(json)を設定し、AZ1、AZ2でそれぞれ実行してください。

  • 設定項目(REST API)
項目
内容
$NETCON_EP_IDそれぞれのAZで作成したコネクターエンドポイントID
  • 設定項目(json)
項目
内容
$PORT_IDそれぞれのAZで作成したポートID
  • 実行API

curl -s -X PUT $NETWORK/v2.0/network_connector_endpoints/$NETCON_EP_ID/connect -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"interface": {"port_id": "'$PORT_ID'"}}' | jq .



6.サブネットの更新

  対向のAZ向けのルーティング情報を仮想サーバが取得できるよう、サブネットの情報を更新します。
  設定項目(REST API)で生成したAPIに、設定項目(json)を設定し、AZ1、AZ2でそれぞれ実行してください。

  • 設定項目(REST API)
項目
内容
$SUBNET_ID_AZ1AZ1のサブネットID
$SUBNET_ID_AZ2AZ2のサブネットID
  • 設定項目(json)
項目(AZ1)内容
$SUBNET_AZ1AZ1用:192.168.1.0/24
$DEFAULT_GATEWAY_IP_AZ1AZ1用:192.168.1.1
$FIXED_IP_ADDRESS_AZ1AZ1用:192.168.1.100
$HOST_ROUTES_AZ1{\"nexthop\":\"$FIXED_IP_ADDRESS_AZ1\",\"destination\":\"$SUBNET_AZ2\"},{\"nexthop\":\"$DEFAULT_GATEWAY_IP_AZ1\",\"destination\":\"0.0.0.0/0\"}
項目(AZ2)内容
$SUBNET_AZ2AZ2用:192.168.20.0/24
$DEFAULT_GATEWAY_IP_AZ2AZ2用:192.168.20.1
$FIXED_IP_ADDRESS_AZ2AZ2用:192.168.20.100
$HOST_ROUTES_AZ2{\"nexthop\":\"$FIXED_IP_ADDRESS_AZ2\",\"destination\":\"$SUBNET_AZ1\"},{\"nexthop\":\"$DEFAULT_GATEWAY_IP_AZ2\",\"destination\":\"0.0.0.0/0\"}
  • 設定項目の展開例(json)
    APIを実行する前に、項目に設定された内容を確認してください。
    正しく設定できれば、項目の $HOST_ROUTES_AZ1 や $HOST_ROUTES_AZ2 には、以下の内容が格納されます。
項目
設定の展開例
$HOST_ROUTES_AZ1{\"nexthop\":\"192.168.1.100\",\"destination\":\"192.168.20.0/24\"},
{\"nexthop\":\"192.168.1.1\",\"destination\":\"0.0.0.0/0\"}
$HOST_ROUTES_AZ2{\"nexthop\":\"192.168.20.100\",\"destination\":\"192.168.1.0/24\"},
{\"nexthop\":\"192.168.20.1\",\"destination\":\"0.0.0.0/0\"}
  • 実行API (AZ1用)

curl -i $NETWORK/v2.0/subnets/$SUBNET_ID_AZ1 -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"subnet": { "host_routes": ['$HOST_ROUTES_AZ1'] }}'

  • 実行API (AZ2用)

curl -i $NETWORK/v2.0/subnets/$SUBNET_ID_AZ2 -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"subnet": { "host_routes": ['$HOST_ROUTES_AZ2'] }}'



7.仮想サーバの再起動

  サブネットの更新後に、仮想サーバをそれぞれ再起動してください。



メリット・効果

AZ間の接続を利用した場合のメリット・効果は以下の通りです。

  • 専用の回線を敷設することなくAZ間で通信可能
  • サービスの可用性を高める、AZ間での冗長構成を設定可能



注意事項

•本パターンは2017年6月時点のK5(IaaS)で動作検証しています。

*AZ間接続は同一プロジェクトにのみ設定可能です。

*ネットワークコネクターはプロジェクトに対して 1つ、コネクターエンドポイントはAZに対して 1つ設定可能です。

*コネクターエンドポイントで接続したネットワーク以外のルーティングは行えません。

*AZ間で接続するサブネットは、同一のサブネットにすることは出来ません。



その他

複数セグメントでマルチAZ接続

複数のセグメントをマルチAZ接続で接続したい場合は、以下の図のように、コネクターエンドポイントに複数のセグメントを接続します。



関連資料

  • FUJITSU Cloud Service K5 マニュアル
    http://jp.fujitsu.com/solutions/cloud/k5/document/
    • サービスご紹介資料
    • IaaS 機能説明書
    • IaaS サービスポータルユーザーズガイド
    • IaaS APIユーザーズガイド
    • IaaS APIリファレンスマニュアル
    • IaaS HEATテンプレート解説書

(2017年6月検証)