Application Load Balancer (ALB) は、ゾーン間の負荷分散をサポートし、単一ゾーンの負荷分散によって引き起こされるリソースのボトルネックを防ぎます。 ただし、金融の定量的取引やリアルタイム通信など、レイテンシに敏感なビジネスシナリオでは、ゾーン間の負荷分散により、不要なネットワークレイテンシが発生する可能性があります。 このような場合、ゾーン間の負荷分散を無効にして、リージョンの単一ゾーン内にリクエストを分散するようにALBを構成することで、ビジネスのリクエストアクセス速度を向上させることができます。
概要
デフォルトでは、ALBインスタンスでゾーン間負荷分散が有効になっています。 着信リクエストは、同じリージョン内のすべてのゾーンにデプロイされているバックエンドサービスに配信されます。 ALBインスタンスに関連付けられたバックエンドサーバーグループのゾーン間の負荷分散を無効にすると、リクエストは単一のゾーンにデプロイされたバックエンドサービスに分散されます。
ALBサービスのゾーン間負荷分散を無効にする前に、適切なリソースを持つバックエンドサーバーが各ゾーンで使用可能であることを確認してください。 ビジネスへの望ましくない影響を避けるため、無効にする前にこの機能の仕組みを理解してください。
メリット
レイテンシの削減: 単一のゾーン内でリクエストを分散すると、ゾーン間のデータ転送によるネットワークのレイテンシがなくなり、ビジネスのリクエストアクセス速度が向上します。
適用シナリオ
レイテンシに敏感なシナリオ:
金融取引: 集中的な定量取引は、迅速なトランザクション処理を可能にするために低レイテンシを必要とする。 これにより、トランザクションの失敗やタイムアウトのリスクが軽減されます.
リアルタイム通信: ビデオ会議とインスタントメッセージングは、シームレスでスムーズなユーザーエクスペリエンスのために低レイテンシを必要とします。
モノのインターネット (IoT): 迅速なデータ分析とリクエストへの迅速な応答を可能にするために、リアルタイムのデータ収集には低遅延が必要です。 これは、データ収集システムの全体的な効率及び精度を改善する。
制限事項
ゾーン間負荷分散が無効になっているサーバーグループは、標準およびWAF対応のALBインスタンスにのみ関連付けることができます。 基本ALBインスタンスに関連付けることはできません。
ゾーン間の負荷分散が無効になっている場合、Session Persistenceは有効にできません。
IPタイプのサーバーグループの場合、リモートIPが有効になっている場合、ゾーン間の負荷分散を無効にすることはできません。
このパラメーターは、Function Computeタイプのサーバーグループでは使用できません。
シナリオ例
企業が中国 (杭州) リージョンに高可用性ビジネスを展開し、デフォルトでゾーン間の負荷分散が有効になっています。 ビジネスの変革により、同社は現在、レイテンシに関する要件が高くなっています。
この場合、会社はゾーン間の負荷分散を無効にして、ALBがリージョンの単一ゾーンにデプロイされたバックエンドサービスにのみリクエストを配信できるようにします。 このようにして、ネットワークの待ち時間を減らすことができ、会社のビジネスの要求アクセス速度を上げることができます。
前提条件
標準ALBインスタンスは、中国 (杭州) リージョンの複数のゾーンに作成されます。 この例では、ALBインスタンスはゾーンHとゾーンKに作成されます。詳細については、「ALBインスタンスの作成」をご参照ください。
サーバーグループが作成されます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
Elastic Compute Service (ECS) インスタンスECS01およびECS02が、ALBインスタンスに関連付けられたサーバーグループに追加されます。 ECS01はゾーンHに、ECS02はゾーンKにデプロイされています。どちらのインスタンスにもアプリケーションサービスがデプロイされています。
リスナーはALBインスタンスに設定され、作成されたサーバーグループはALBインスタンスに関連付けられます。 詳細については、「HTTPリスナーの追加」、「HTTPSリスナーの追加」、および「QUICリスナーの追加」をご参照ください。
ドメイン名が登録され、ドメイン名のインターネットコンテンツプロバイダ (ICP) 番号が取得され、カスタムドメイン名をALBインスタンスのドメイン名にマッピングするようにCNAMEレコードが構成されます。 詳細については、「ジェネリックドメイン名の登録」、「ICP登録プロセス」、および「ALBインスタンスへのCNAMEレコードの追加」をご参照ください。
手順
ステップ1: クロスゾーン負荷分散を無効にする
この手順では、サーバーグループが作成されている状態で、ゾーン間の負荷分散を無効にするようにサーバーグループの構成を変更する方法について説明します。 サーバーグループを作成していない場合は、作成時にゾーン間の負荷分散を無効にできます。
ALB コンソールにログインします。
[サーバーグループ] ページで、管理するサーバーグループを見つけ、サーバーグループIDをクリックします。
[詳細] ページの [基本情報] セクションで、[基本情報の変更] をクリックします。
[基本情報の変更] ダイアログボックスで、[詳細設定] をクリックし、[ゾーン間ロードバランシング] をオフにして、[保存] をクリックします。
(オプション) ステップ2: クロスゾーンロードバランシングが無効になっていることを確認
このステップは、構成変更が有効かどうかを検証するだけです。 ステップ3は、構成変更後の実際のネットワーク待ち時間をテストします。
ALBインスタンスの [インスタンスの詳細] ページの [ゾーン] タブで、ゾーンHとゾーンKのElastic IPアドレス (EIP) をそれぞれコピーします。
ブラウザを使用して、
http://<EIP of Zone H>
などのZone HのEIPにアクセスします。 ブラウザを複数回更新します。 ゾーンHにデプロイされたバックエンドサーバーECS01のみにアクセスできます。ブラウザを使用して、
http://<EIP of Zone K>
などのゾーンKのEIPにアクセスします。 ブラウザを複数回更新します。 ゾーンKにデプロイされたバックエンドサーバーECS02のみにアクセスできます。
ステップ3: ネットワーク遅延のテスト
テスト結果は地域および地帯によって変わるかもしれません。 あなたのビジネスの実際のテスト結果が勝ちます。 この例では、パケット遅延がチェックされる。
ドイツ (フランクフルト) リージョンにテストクライアントとしてインターネット向けインスタンスECS03を作成します。 テストに使用できる既存のサーバーがある場合は、作成する必要はありません。
テストクライアントECS03にログインし、次のコマンドを実行してアクセス遅延をテストします。
curl http://www.example.com -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"
関与するパラメータは次のとおりです。
time_connect: 接続時間。 TCP接続を確立するために消費される時間。 単位は秒です。
time_starttransfer: データ転送時間。 クライアントがバックエンドサーバーにリクエストを送信してから、最初のバイトがクライアントに送信されるまでの時間。 単位は秒です。
time_total: 合計接続時間です。 クライアントがバックエンドサーバーにリクエストを送信してから、クライアントがバックエンドサーバーから最後のバイトを受信するまでの時間。 単位は秒です。
クロスゾーン負荷分散が有効になっている場合の応答時間:
ゾーン間負荷分散が無効になっている場合の応答時間:
テスト結果は、クロスゾーン負荷分散が無効になった後、接続時間、データ転送時間、および合計接続時間がすべて短縮されることを示しています。
よくある質問
ゾーン間の負荷分散を無効にした後、503ステータスコードが表示されるのはなぜですか。
考えられる理由は、ALBインスタンスに関連付けられているサーバーグループでは、ALBインスタンスがデプロイされている特定のゾーンでバックエンドサーバーを使用できないためです。 ALBインスタンスにはリクエストを転送するバックエンドサーバーがないため、503のステータスコードが返されます。
ゾーン間の負荷分散を無効にした後、セッション維持機能を有効にできないのはなぜですか?
セッション持続性を有効にすると、ALBインスタンスが1つのゾーンから受信したリクエストは、別のゾーンのバックエンドサーバーに常に転送されます。 ゾーン間の負荷分散を無効にすると、セッションの永続化を実装できません。
ALBサービスのどのゾーンにもデプロイされていないバックエンドサーバーのヘルスチェックステータスを教えてください。
ALBインスタンスのクロスゾーンロードバランシングが無効になった後、ALBサービスのどのゾーンにもデプロイされていないバックエンドサーバーはUnusedとして宣言されます。
関連ドキュメント
ALBが利用可能なリージョンとゾーンについては、「ALBが利用可能なリージョンとゾーン」をご参照ください。
設定の問題が発生した場合は、「ALBに関するFAQ」をご参照ください。
ヘルスチェックの異常が発生した場合は、「ALBヘルスチェックの問題のトラブルシューティング」をご参照ください。
APIを呼び出してサーバーグループを作成する方法については、「CreateServerGroup」をご参照ください。
バックエンドサーバーの設定を更新するためのAPIの呼び出しについては、「UpdateServerGroupServersAttribute」をご参照ください。
APIを呼び出してサーバーグループを一覧表示する方法については、「ListServerGroups」をご参照ください。
ヘルスチェックステータスを照会するAPI操作の呼び出しについては、「GetListenerHealthStatus」をご参照ください。