みなさん、こんばんは。サニービュー事業部の小寺です。
re:Invent期間中のアップデートの中でも、Elastic Load Balancingのアップデートについてお伝えします!
ELBに4つの機能が追加されているので、一つずつ解説します!
1.pplication Load Balancer (ALB) でのクロスゾーン負荷分散の無効化
こちらは、少し前のアップデートです。
ALBで、NLBの既存の機能と同様に、クロスゾーンの負荷分散をオフにする機能が追加されました。デフォルトでは負荷分散がオンだったのが、今回オフにできるようになりました。
そもそも、クロスゾーン負荷分散とは、複数のAZで起動しているターゲットノード(EC2インスタンス)の台数に偏りがある場合でもトラフィックを均等に各ターゲットノードに分散する機能のことです。
本アップデートのクロスゾーン負荷分散を無効化にすると、ALBはロードバランサーノードと同じアベイラビリティー ゾーン (AZ) 内のEC2ターゲットにトラフィックをルーティングします。
なんとなく負荷分散して冗長性を担保した方が良さそうですが、この無効化機能はバックグラウンドでアプリの自動スケーリングするのに役立ち、確実にターゲットアプリケーションが AZ ごとにスケーリングされます、とのことです。
設定を無効化するには該当ロードバランサーを選び、「Attributes」タブから変更します。

2.Network Load Balancer (NLB) ヘルスチェックの改善
NLBのヘルスチェック機能が改善されました。EC2ターゲットが正常もしくは異常になるまでのヘルスチェック応答の数をカウントして、設定することができるようになりました。今までは対応できなかったALBのような細かいヘルスチェック設定が可能です。
設定するには、NLBのターゲットグループの「Health Check」タブから確認します。

「Edit(編集)」をクリックすると、「Advanced Health Checking」で設定ができます。

3.ALB/NLBの正常ターゲット数が設定可能に
AZ内の ALB および NLB で正常なターゲットの最小数またはパーセンテージのしきい値を設定できるようになりました。正常なターゲット数が設定されたしきい値を下回ると、ロード バランサーは障害のある AZ 内のターゲットへのルーティングを自動的に停止します。
閾値を下回ると以下のようなアクションを設定する事が出来るようになっています。
- DNSフェイルオーバ
- ルーティングフェイルオーバ
設定自体はターゲットグループの「Attributes」タグから対応できます。デフォルトではクロスゾーンの負荷分散はONのままになっているかと思うので、一度オフにして試す必要がありそうです。

先ほどの(Edit)編集ボタンをクリックすると、クロスゾーン負荷分散の設定ができるので、まずはオフにします。その次に、正常性のターゲット数かパーセンテージが設定できます。

4.ALB/NLBのゾーンシフト(2022年11月29日発表時点プレビュー版)
Amazon Route 53 Application Recovery Controller のアップデートとしてゾーンシフト機能が追加されました。ARC使用すると、障害のある1つの AZを切り離して利用することができるようになります。この機能は、クロスゾーン負荷分散がオフになっている ALB および NLB を使用する、ゾーンごとに設計されたアプリケーション向けです。
3 つの AZ で実行され、クロスゾーン負荷分散がオフになっている Web サービスを例にして考えると、NLB の各ゾーン エンドポイントでモニタリングを行っているため、各 AZ にヒットするリクエストの成功率とレイテンシがモニタリングできます。Amazon CloudWatch ダッシュボードを見れば、AZ ごとのメトリクスに基づいて、AZ1 と AZ2 ではレイテンシーが変化せず公称値 (~60 ミリ秒) であるのに対し、AZ3 では同様のレイテンシーの上昇が見られることがわかります。レイテンシーの上昇の根本的な原因はまだわかりませんが、問題が AZ3 のレプリカに含まれていることを強く示す兆候があります。リクエストは成功し続けているため、ヘルスチェックはパスしていますが、このような遅延がアプリケーション利用者に影響を及ぼす可能性はありますよね。

1 つの AZのルーティングを削除しても、まだコンピューティング容量が余裕っていう場合は、AZ3 から他のAZ1,2にアクセスさせることで、まず最初に例として挙げた遅延問題からリカバリーできます。
ゾーンシフトを開始すると、利用者のトラフィックを AZ3へ行かないようにします。その結果、AZ3 ロードバランサーのヘルス チェックが強制的に失敗し、その IP が DNS からキャンセルされます。その後、新しい接続は他の AZ のみにいきます。数分あれば既存の接続から再接続まで問題なくいけそうです。

対象リージョン
上記でご紹介した1~3のGAになっている機能について、全商用リージョンで利用が可能です。
4のプレビュー版は、以下リージョンで利用が可能です。
・AWS US West (Oregon)
・US East (Northern Virginia)
・US East (Ohio)
・Europe (Ireland)
・Europe (Frankfurt)
・Europe (Stockholm)
・Asia Pacific (Tokyo)
・Asia Pacific (Sydney)
・Asia Pacific (Jakarta)
まとめ
ELBのアップデート内容について、ご紹介いたしました。プレビュー版の場合は、GAになるときに仕様が変わるケースも多いですが、何かの参考になれば幸いです。
