Alibaba Cloud マルチゾーン設計 #4 SLB編

Alibaba Cloud 東京リージョンのマルチゾーン化に主要プロダクト(ECS/RDS/SLB)が対応しました。 構成を具体的に考えてみたいと思います。

今回はECSによるWebフロントエンド、RDSによるMySQLバックエンド、それをSLBでインターネットに公開するシステムを想定します。マルチゾーンでゾーンレベルの障害に対応できることが前提条件です。 以下のようなイメージです。

マルチゾーン構成におけるSLBの設計および考慮ポイントを紹介します。

「Alibaba Cloud マルチゾーン設計」は以下の5つの記事から構成されています。


#4 SLB編

マルチゾーンで冗長化を行う場合のSLBの検討ポイントは以下でしょうか。

  • 購入時にSLBのプライマリのZoneが決まる
  • RDS内にもSLBが構成される
  • マルチゾーンのSLBの切り替わりタイミング
  • Elstic IP アドレスの利用

Point#1 購入時にSLBのプライマリのZoneが決まる

マルチゾーン構成時、SLBのプライマリのZoneは購入時に決まります。また、購入後に変更することは出来ません。 Zone間通信では約1msの遅延が発生するため、通信遅延をできる限り無くすには同じZone内で処理を完結させる必要があります。

イメージは以下の感じです。

SLBのマルチゾーンの話は以下記事も参照。

Point#2 RDS内にもSLBが構成される

RDSをマルチゾーン環境でハイアベイラビリティ構成とした場合、内部で自動的にSLBが展開されています。 このSLBの設定、管理操作は行えません。

Point#1同様にSLBのプライマリのZoneを意識する必要があります。 また、どのZoneがプライマリとなるかはRDS購入のタイミングで決定します。後から変更することは出来ません。

適当にSLBやRDSを購入してしまうと、以下の感じでZoneまたぎの通信が発生してしまいます。

Point#3 マルチゾーンのSLBの切替わりタイミング

SLBのプライマリインスタンスの配備ゾーンは購入時に決定し、購入後は変更出来ないことを何度か説明してきました。 では、このSLBインスタンスはどのような時に切り替わるのでしょうか?

公式ドキュメントに説明がありました。

より安定した、信頼性の高いサービスを提供できるよう、SLB は多くのリージョンにおいて複数のゾーンに配備されています。アクティブゾーンが利用できなくなると、SLB はすばやく (30 秒以内) スタンバイゾーンに切り替えてサービスを再開します。なお、アクティブゾーンが再び利用できるようになると、SLB は自動的にアクティブゾーンに切り戻します。

注意 ゾーンレベルでの耐障害性には、アクティブゾーンとスタンバイゾーンを用意します。Alibaba Cloud では、インスタンスの障害ではなく、稼働していたゾーンが停電や光ケーブルの故障により利用できないと検知された場合にのみ、スタンバイゾーンに切り替わります。

https://jp.alibabacloud.com/help/doc-detail/67915.htm?spm=a21mg.p38356.b99.5.41cf5013ldncdy

ポイントとしては以下です。 

  • SLBインスタンスの切替えは、ゾーンレベルでの障害時にのみ発生する
  • ゾーン障害とはゾーンの停電や光ケーブルの故障などでゾーンが利用できない状態
  • SLBインスタンスレベルの不具合では切替えは発生しない
  • 切り替え時間は30秒
  • 障害発生ゾーンが正常化すると自動的にSLBインスタンスを切り戻し

1つ目のゾーンレベルでの障害時にのみ切替わるということが最重要ポイントですね。 SLBインスタンスレベルでサービス不能やスローダウンが起こっても切替わらず、また、手動でセカンダリ側のSLBインスタンスへの切り替えも出来ないということになります。

SLBインスタンスレベルの障害に備える場合は、SLBの冗長化セットを複数準備することになります。 また、複数のSLBへの振り分けはGlobal Traffic Managerで行います。Global Traffice Managerではヘルスチェック機能を持っています。以下図中のSLB#1が応答しない場合、SLB#2だけにトラフィックをルーティングすることが可能となります。

Point#4 Elstic IP アドレスの利用

SLBインスタンスは追加料金なしでパブリックIPアドレス(グローバルIPアドレス)を持っています。 ただ、このパブリックIPアドレスは購入したインスタンスに固有のものとなるため、インスタンスを買い替えた場合はパブリックIPアドレスを引き継ぐことは出来ません。 

解決策はElastic IP アドレスの利用です。 Elastic IP アドレスはSLBやECSに紐づけて利用するもので、SLBインスタンスを変更した場合にも紐づけを変えることで継続して同じパブリックIPアドレスの利用を可能にします。 その他、SLBの仕様等でどうしても解決出来ない問題が発生した場合、ECSにElastic IPアドレスを紐づけることでClientsからの接続性を確保することが出来ます。

サービス提供側の視点だけで考えれば、パブリックIPアドレスを変える場合、DNSのAレコードのRRを変更するだけの簡単な作業です。Alibaba Cloud DNSを利用していればTTL(キャッシュ)も短時間(最短1秒!)も指定できるので大きな問題は無いように思えます。

しかし、Clients側の視点で考えると、Clientsのネットワーク側でFirewallやプロキシ、Webフィルタリングに個別のアクセスルール(SLBインスタンスのパブリックIPをホワイトリストへ追加)を追加するケースもあります。 Clientsが接続するパブリックIPが変わらないことにメリットはあります。

課金の話として、Elastic IPアドレスは従量課金です。ECSで利用する場合には課金は発生しないのですが(ECSが起動中という条件あり)、SLBインスタンスに紐づける場合は従量課金が発生します。

注意
EIP アドレスを VPC の ECS インスタンスにバインドする場合、EIP アドレス保持料は無料です。 ただし、SLB インスタンスと NAT ゲートウェイの場合、保持料は請求されます。

https://jp.alibabacloud.com/help/doc-detail/72142.htm?spm=a21mg.l28256.a3.6.4f62483fR0CSji

まとめ

  • マルチゾーンで冗長化されたSLBインスタンスのプライマリのZoneは購入時に決まります
  • プライマリのZoneを購入後に変更することは出来ません
  • RDSをマルチゾーンでハイアベイラビリティ構成した場合、RDSの中でSLBが自動的に構成されます
  • RDSの中のSLBのプライマリのZoneは購入時に指定したVSwitchのZoneとなりこちらも購入後に変更は出来ません
  • SLBインスタンスの切り替わりのタイミングはZoneレベルの障害時のみです。 インスタンスレベルの障害では切り替わりません
  • システムの拡張や変更が見込まれる、予測できない場合はElastic IP アドレスの利用も検討しましょう