Application Load Balancer の加重ターゲットグループを登録しようと考えています。その方法を教えてください。
簡単な説明
ロードバランサーに登録されたターゲットグループを使用して、トラフィックを Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、IP アドレスや AWS Lambda 関数に転送できます。加重ルーティングを使用すると、アプリケーションの異なるバージョン間でトラフィックを切り替えることができます。この設定により、アプリケーションへのトラフィックの分散を制御できます。リスナールールの転送アクションに複数のターゲットグループを追加し、各グループの重みを指定できます。この機能は、Blue-Green デプロイによく使われます。
解決方法
ターゲットグループの作成
1. Amazon EC2 コンソールを開きます。
2. ナビゲーションバーで、EC2 インスタンス用に選択した AWS リージョンを選択します。
3. ナビゲーションペインの [ロードバランシング] の下で、[ターゲットグループ] を選択します。
4. 最初のターゲットグループを作成します。
[ターゲットグループの作成] を選択します。
[ターゲットグループ名] で、ターゲットグループの名前を指定します。
ターゲットグループのプロトコル、ポート、Virtual Private Cloud (VPC) を設定します。
[作成] を選択します。
[インスタンス] で、1 つ以上のインスタンスを選択します。
インスタンスのポートを指定します。
[登録済みに追加] を選択し、[保存] を選択します。
5. ステップ 4 を繰り返して、2 番目のターゲットグループを作成します。
Application Load Balancer の作成 (まだ作成していない場合)。
1. ナビゲーションペインの [ロードバランシング] の下で、[ロードバランサー] を選択します。
2. [ロードバランサーの作成] をクリックします。
3. [ロードバランサータイプの選択] で、[Application Load Balancer] を選択します。
4. 続ける を選択します。
5. Application Load Balancer の作成のステップを完了します。
6. [ルーティングの設定] のステップを完了します。
[ターゲットグループ] で、[既存のターゲット] を選択します。
[名前] で、作成した最初のターゲットグループを選択します。
[次へ: ターゲットの登録] を選択します。
7. [ターゲットの登録] ページで、ターゲットグループに登録したインスタンスが [登録済みインスタンス] の下に表示されていることを確認します。ここでは、ターゲットグループに登録されているターゲットを変更することはできません。
8. [確認] ページで、[作成] を選択します。
9. ロードバランサーが正常に作成されたことが通知されたら、[閉じる] を選択します。
10. 新しく作成したロードバランサーを選択します。
リスナールールを設定し、ターゲットグループに重みを追加する
1. [リスナー] タブで、[ルールの表示/編集] を選択します。
2. [ルールの編集] (鉛筆アイコン) を選択します。
3. [転送先] オプションの横にある [編集] を選択します。
4. 他のターゲットグループを追加します。
5. ターゲットグループの重み値を入力します。この値は 0~999 の数値である必要があります。
6. [チェックマーク] を選択し、[更新] を選択します。
7. (オプション) ターゲットグループが維持されている場合は、[グループレベルの維持設定] を設定します。この設定を行うと、ルーティングされたリクエストは、セッションの期間中、ターゲットグループに残ります。デフォルト値は 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>
重みを切り替えて 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>