9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Route53】「ゾーンシフト」を活用してAZ障害からトラフィックを素早く回避させよう【ARC】

Last updated at Posted at 2023-01-03

はじめに

re:Invent2022にて、Route53のApplication Recovery Controller(ARC)の新機能として「ゾーンシフト(zonal shift)」が発表されました(プレビュー)。AZ障害発生時に、ELBへのトラフィックを問題のあるAZからルーティングを回避させることが出来る優れものです。

※2023/1/11にGAとなりました!

Route53 Application Recovery Controllerとは

  • Route53のARCは以下の3つの機能を提供
    • 準備状況チェック
      • リソースの準備状況を監視します
    • ルーティング制御
      • マルチリージョンアプリケーションのフェイルオーバーのためにトラフィックを再ルーティング
    • ゾーンシフト
      • マルチAZアプリケーションをAZの問題から回復

ゾーンシフトがサポートするリソース

Route53のARCは現在、NLBALBのゾーンシフトをサポートしています。
※開始方法はELBかRoute53 ARCのいずれかのコンソール上で可能

Route53 ARCの場合

スクリーンショット_2023-01-04_0_30_18.png

ELBの場合

スクリーンショット_2023-01-04_0_32_03.png

Route53 ARCでゾーンシフトとリソースを操作するため条件

  • ゾーンシフトは、クロスゾーン負荷分散ではサポートされない
  • AWS Global AcceleratorのアクセラレータのエンドポイントであるALBではサポートされない
  • ALBがNLBのターゲットである場合、NLBからゾーンシフトを開始する必要あり
  • ゾーンシフトは、AWSサービスによってRoute53 ARCに登録されたマネージドリソースである必要あり
  • リソースとゾーンシフトは開始するAZ或いはリージョンにデプロイする必要あり
  • リソースでゾーンシフトを使用するためのIAMアクセス許可が必要あり

ゾーンシフトの有効期限

全てのゾーンシフトは開始時に有効期限(最大3日)を設定する必要があります。ゾーンシフトを更新する事で新たな有効期限を設定可能です。

  • 設定範囲として以下が用意されていました。
    • 6時間
    • 12時間
    • 1日
    • 3日
    • カスタム(1分~3日)

ゾーンシフトのベストプラクティス

  • キャパシティプランニングと事前スケーリング
    • ゾーンシフトによって特定AZへのトラフィックのルーティングを回避させた場合に、ターゲットであるインスタンス或いはコンテナリソースがリクエストを処理する為に、事前にリソースに余裕を持たせる。
  • 事前にゾーンシフトを開始するテスト
    • AZからトラフィックが移動することを定期的にテストする
  • 全てのAZが正常にトラフィックを処理していることを確認
    • 平常時にロードバランサーのターゲットが正常であり、リージョン内のAZでトラフィックをアクティブに処理していることを確認
  • DRにデータプレーンAPI操作を使用
    • 高速で信頼性の高い復旧が重要な場合は、データプレーン操作の方が適している為、AWS CLIかAPIを推奨。
  • 一時的にのみゾーンシフトを使用してトラフィックを移動
    • 問題を修正するための措置を講じたらすぐに、アプリケーションのリソースを復元する

CLIによるゾーンシフト操作

参照

オプション 概要
--away-from トラフィックがリソースから移動されるAZのID
東京リージョンの場合は、apne1-az4apne1-az1apne1-az2
--comment コメント
--expires-in 有効期限
--resource-identifier ゾーンシフトに含めるリソースの識別子で、リソースのARN

マッピング確認

※ゾーンIDとAZ名はアカウントによってマッピングが異なります。自身の環境でどのゾーンIDでゾーンシフトを開始するべきかを確認するには、以下コマンドを実行してください。

aws ec2 describe-availability-zones \
  --region ap-northeast-1 \
  --query 'AvailabilityZones[].{RegionName:RegionName, ZoneName:ZoneName, ZoneId:ZoneId}' \
  --output table

マッピングコマンド結果例

----------------------------------------------------
|             DescribeAvailabilityZones            |
+----------------+-------------+-------------------+
|   RegionName   |   ZoneId    |     ZoneName      |
+----------------+-------------+-------------------+
|  ap-northeast-1|  apne1-az4  |  ap-northeast-1a  |
|  ap-northeast-1|  apne1-az1  |  ap-northeast-1c  |
|  ap-northeast-1|  apne1-az2  |  ap-northeast-1d  |
+----------------+-------------+-------------------+

ゾーンシフト開始

リソース:nlb
対象ゾーン:apne1-az1
有効期限:5分

$aws arc-zonal-shift start-zonal-shift \
      --resource-identifier="arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:loadbalancer/net/xxxxx/xxxxxxxxxxxx" \
      --away-from="apne1-az1" \
      --expires-in="5m" \
      --comment="Shifting traffic away from apne1-az1"

コマンド結果

{
    "awayFrom": "apne1-az1",
    "comment": "Shifting traffic away from apne1-az1",
    "expiryTime": "2023-01-03T16:41:34+00:00",
    "resourceIdentifier": "arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:loadbalancer/net/xxxxxx/xxxxxxxxxxxx",
    "startTime": "2023-01-03T16:36:34+00:00",
    "status": "ACTIVE",
    "zonalShiftId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
}

コンソールで確認

スクリーンショット_2023-01-04_1_37_50.png
sample-nlbをリソースとしてゾーンシフトがapne1-az1(ap-northeast-1c)を対象に開始しているのが分かりますね。時間が経過した関係で残り4分となっている事も確認できました。※時間が5分経過するとコンソールから自動で削除されました。

さいごに

今回はRoute53 ARCの新機能ゾーンシフトについて調査しました。AZ障害発生時に素早く簡単に問題AZへのルーティングを回避させてアプリケーションを守る事ができるので覚えておいて損はないかと思います。GA後に余裕があったらベストプラクティスにあるように実際にテストして備えておくと、いざという時落ち着いて対処出来る様になるので是非取り入れていきたいですね。

参照

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?