Application Load Balancer の加重ターゲットグループを登録しようと考えています。
解決策
Application Load Balancer のターゲットグループに異なる重みを割り当てると、トラフィックを比例的に分散できます。
ターゲットグループを作成する
Application Load Balancer に登録するターゲットグループを作成するには、次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- Amazon EC2 インスタンスが配置されている AWS リージョンを選択します。
- ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。
- 最初のターゲットグループを作成するには、次の手順を実行します。
[ターゲットグループを作成] を選択します。
[ターゲットグループ名] でターゲットグループの名前を指定します。
ターゲットグループのプロトコル、ポート、仮想プライベートクラウド (VPC) を設定します。
[作成] を選択します。
[インスタンス] では、1 つ以上のインスタンスを選択します。
インスタンスのポートを指定します。
[保留中として以下を含める] を選択し、[ターゲットグループを作成] を選択します。
- 加重ターゲットグループを設定するには、ターゲットグループを 2 つ以上作成する必要があります。ステップ 4 を繰り返して 2 番目のターゲットグループを作成します。
Application Load Balancer を作成する
重要: 使用したい Application Load Balancer がある場合は、「リスナールールを設定し、重みを割り当てる」セクションに進んでください。Application Load Balancer を作成するには、次の手順を実行します。
- ナビゲーションペインの [ロードバランシング] で [ロードバランサー] を選択します。
- [ロードバランサーの作成] を選択します。
- [ロードバランサータイプの選択] で [Application Load Balancer] を選択し、[作成] を選択します。
- Application Load Balancer の作成ウィザードで次の手順を実行します。
ロードバランサーの名前を入力します。
[インターネット向け] または [内部] を選択します。
[IP アドレスタイプ] を選択します。
使用する VPC および、2 つ以上のアベイラビリティーゾーンを選択します。
[セキュリティグループ] でセキュリティグループを選択するか、作成します。
[リスナーとルーティング] では、デフォルトの HTTP リスナーをポート 80 のままにします。
- [ルーティングの設定] ページで次の手順を実行します。
[ターゲットグループ] では、[既存のターゲット] を選択します。
[名前] では、最初に作成したターゲットグループを選択します。
[次へ: ターゲットを登録] を選択します。
- [ターゲットの登録] ページで、登録したインスタンスが [登録済みインスタンス] に表示されていることを確認します。
注: ターゲットを変更する場合は、Target Groups コンソールに戻ります。[ターゲットの登録] ページでは確認のみを行えます。
- [レビュー] ページで [作成] を選択します。
- Application Load Balancer の作成後、[閉じる] を選択します。
- 作成ウィザードが閉じると、ロードバランサーページに戻ります。ロードバランサーのリストから新しいロードバランサーを選択します。
リスナールールを設定し、重みを割り当てる
ターゲットグループに重みを割り当てるには、次の手順を実行して Application Load Balancer にリスナールールを設定します。
- [リスナー] タブで [ルールの表示/編集] を選択します。
- [ルールを編集] を選択します。
- [転送先] の横にある [編集] を選択します。
- 先ほど作成した 2 番目のターゲットグループを追加します。
- ターゲットグループの重みを 0 ~ 999 の範囲で入力します。
- [チェックマーク] を選択し、[更新] を選択します。
- (オプション) ターゲットグループがスティッキーである場合は、[グループレベルのスティッキネス] を設定します。
注: グループレベルのスティッキネスを設定する際、ルーティングされたリクエストはセッション期間中、ターゲットグループに残ります。デフォルトの値は 1 時間です。セッション期間が終了すると、ロードバランサーはターゲットグループの重みに基づいてリクエストを分散します。
Application Load Balancer は、ターゲットグループの重みに基づいてトラフィックを分散します。グループ内のすべてのターゲットがヘルスチェックに合格しなかった場合も、Application Load Balancer は別のグループにフェイルオーバーしません。バランサーは、異常のあるターゲットにトラフィックをルーティングし続けます。フェイルオーバーメカニズムに加重ターゲットグループを使用することは、おすすめしません。
最初のターゲットの重みが 70% で、2 番目のターゲットが 30% の場合、ほとんどのリクエストは最初のターゲットグループから行われます。
コマンド例:
for X in seq 6; do curl -so -i /dev/null -w "" http://FINAL-721458494.us-east-2.elb.amazonaws.com; done
出力例:
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
この例では、T1 は最初のターゲットグループ (重み: 70%) からの応答を表し、T2 は 2 番目のターゲットグループからの応答 (重み: 30%) を表します。
2 番目のターゲットの重みを 70%、最初のターゲットを 30% に設定すると、ほとんどのリクエストは 2 番目のターゲットグループから行われます。
コマンド例:
for X in seq 7; do curl -so -i /dev/null -w "" http://FINAL-721458494.us-east-2.elb.amazonaws.com; done
出力例:
<h1> This is T2 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
この例では、T2 は 2 番目のターゲットグループ (重み: 70%) からの応答を、T1 は最初のターゲットグループ (重み: 30%) からの応答を表します。実際のロードバランサー名を入力してください。