NECネッツエスアイ

Amazon Route 53 Application Recovery Controller のゾーンシフトの導入前検証

こんにちは、運用開発グループの森です。

現在、私が担当しているサービスにおいて、AZ 障害が発生した場合には、Amazon Route 53 Application Recovery Controller のゾーンシフト機能を利用し、障害が発生した AZ をサービスから切り離すことを検討しています。この機能を導入することで、期待通りにサービスから切り離されるまでの時間を検証しました。

ゾーンシフトとは

詳細については参照先をご確認いただければと思いますが、以下が概要です。

  • AZ でのアプリケーション障害からの迅速な回復に役立つ
  • ALB と NLB をサポート
  • クロスゾーン負荷分散がオフになっている ALB、NLBで利用可
  • ゾーンシフトは追加料金なしで使用可
  • 東京リージョンは GA
  • 他リージョンの詳細は以下参照
https://aws.amazon.com/jp/about-aws/whats-new/2023/01/general-availability-amazon-route-53-application-recovery-controller-zonal-shift/

検証

まず、クロスゾーン負荷分散がオフになっている ALB を用意します。今回は東京リージョンで、ap-northeast-1a と ap-northeast-1c の二つの AZ でクロスゾーン負荷分散がオフになっている ALB を用意しました。

なお、ALB のクロスゾーン負荷分散は ALB の設定からではなく、ALB に関連付けされているターゲットグループから設定します。

ALB を準備しましたので、ALB の A レコードを確認してみます。ALB の DNS 名の A レコードは以下のとおり2件となり、各 AZ 毎に割り当てられた ENI の A レコードであることが分かります。

$ dig demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
52.197.222.49
54.65.113.167

$ dig ap-northeast-1a.demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
52.197.222.49

$ dig ap-northeast-1c.demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
54.65.113.167

それでは早速、ap-northeast-1a を切り離します。以下の画面にあるように、Start zonal shift を押します。

次にゾーンシフトに必要な情報を入力します。

  • Select the Availability Zone: 切り離したい AZ を選択
  • Expires in: ゾーンシフトが実施されている期間を選択
  • Comment: コメント
  • Acknowledge: アプリケーションの処理量が減ることを理解してチェック

機能の目的を考えれば当然なのですが、無期限にゾーンシフトをし続けることは不可のようです。今回は以下のように入力し、最後に confirm を押して実行しました。

何度かゾーンシフトを試してみたところ、マネジメントコンソールには即時でゾーンシフトされていることが反映されますが、DNS に反映されるまでには1分以上処理に時間がかかっていることが分かりました。

ゾーンシフトした後の結果を確認します。

$ dig demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
54.65.113.167

$ dig ap-northeast-1a.demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
52.197.222.49

$ dig ap-northeast-1c.demo-183677942.ap-northeast-1.elb.amazonaws.com A +short
54.65.113.167

ALB の DNS 名の A レコードは1件のみで、ap-northeast-1c の値のみが設定されていることが分かります。ALB の DNS 名の A レコードから ap-northeast-1a の値が返却されないため、障害のある AZ への新規リクエストが流入しないようになります。

ゾーンシフトの振る舞いが分かりましたので、ゾーンシフトを戻してみます。以下のように、Cancel zonal shift を押し、次の画面で Confirm を押して実行します。

キャンセルについてもマネジメントコンソールには即時で反映されますが、DNS レコードへの反映には1分以上かかることが分かりました。

まとめ

ゾーンシフトを利用することで障害のある AZ をサービスから切り離すことが簡単に実現できることが分かりました。

2AZ 構成を採用していた場合、ゾーンシフトした際に処理量が減ってしまうことも考えられるため、AZ 障害時にゾーンシフトを必ず利用する必要性は低いと考えています。ただし、障害点を切り離してサービスの回復を優先する場合には、有効な手段であると思います。そのため、随時利用できるようにマニュアルを整備しました。

DNS レコードへの反映がもう少し早いことを期待していましたが、この点については今後のアップデートに期待したいところです。

参考リンク

1.https://aws.amazon.com/jp/about-aws/whats-new/2023/01/general-availability-amazon-route-53-application-recovery-controller-zonal-shift/

2.https://aws.amazon.com/jp/blogs/networking-and-content-delivery/rapidly-recover-from-application-failures-in-a-single-az/

3.https://docs.aws.amazon.com/elasticloadbalancing/latest/application/zonal-shift.html

関連記事

TOP