こんにちは、小寺です。
NLBの可用性とパフォーマンスが改善されました。
https://aws.amazon.com/about-aws/whats-new/2023/10/aws-nlb-availability-performance-capabilities/
AZのDNS アフィニティとは
アベイラビリティゾーン(AZ)のDNSアフィニティについて、お聞きになったことがありますか。
障害などの影響を受けているアベイラビリティーゾーンへのリクエストを停止するためには、アベイラビリティーゾーンの独立性 (AZI) もしくは、アベイラビリティーゾーンのアフィニティとも呼ばれる内容を実装することが必要です。
AZI を実装するには 例えば、Application Load Balancer (ALB)、Classic Load Balancer (CLB)、および Network Load Balancer (NLB) (NLB では、クロスゾーン負荷分散はデフォルトで無効) のクロスゾーン負荷分散を無効にする必要があります。
ただ、クロスゾーン負荷分散を無効にすることで全てが解決するわけではありません。
クロスゾーン負荷分散を無効にすることで、各AZにあるインスタンスの数に関係なく、トラフィックは正常な各アベイラビリティーゾーンに均等に分配されます。リソースや Auto Scaling グループの数が不均衡な場合、他よりもリソースの少ないアベイラビリティーゾーンのリソースに一層負荷がかかってしまうこともあるのです。
アップデート内容
NLBは、アベイラビリティーゾーンのDNS アフィニティをサポートするようになりました。異常なターゲットに対する接続の終了と、デフォルトでの UDP 接続の終了を無効にします。
・可用性ゾーン DNS アフィニティ
NLBのDNSを解決しているクライアントが、同じアベイラビリティ ゾーン (AZ) でロード バランサーの IP アドレスを受け取るようにDNSを解決します。
このアップデートにより、顧客はゾーンごとに独立したアプリケーション スタックを構築し、遅延を削減することでアプリケーションのパフォーマンスが向上できます。冗長性の確保には、複数のAZにまたがってアプリケーションを構築することも可能です。
・異常なターゲットの接続終了を無効にできる
NLB は、デフォルトでヘルスチェックに失敗したターゲットへの接続終了を行うことができます。ヘルスチェックに失敗したターゲットへのアクティブな接続を維持するか終了するかを選べます。
デフォルトの NLB 動作を無効にすることで、障害発生時のクライアント再接続を行わないことで、
・デフォルトのUDP接続終了
NLBは、本アップデート後に新しく作成された UDP ターゲット グループに対して、登録解除タイムアウトの終了時にデフォルトで UDP 接続を終了するようになりました。
アップデート前までは、UDP接続がオープンのままで、その結果、アプリケーション用に大規模な接続プールを維持し、オーバーヘッドが生じる原因の一つでした。
本アップデートにより、長期間残ってしまったUDP接続を正常に終了でき、アプリケーションのパフォーマンスが向上します。