

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ターゲットグループの維持
<a name="target-group-stickiness"></a>

ターゲットグループの維持で Application Load Balancer を使用する場合：
+ Application Load Balancer は、[ターゲットグループの重](https://aws.amazon.com/premiumsupport/knowledge-center/elb-make-weighted-target-groups-for-alb/)みを使用して、ターゲットグループ間で受信トラフィックのバランスをとる方法を決定します。
+ デフォルトでは、Application Load Balancer はラウンドロビンメソッド[を使用して、送信先ターゲットグループの EC2 インスタンスにリクエストをルーティング](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm)します。

**テンプレート：** CloudFormation テンプレート `targetgroupstickiness.yml` ([サンプルコードの .zip ファイル](samples/stickiness.zip)に含まれる) を使用して、ターゲットグループの維持を試します。

## 一般的なユースケース
<a name="tg-stickiness-use-cases"></a>

これらのシナリオでは、ターゲットグループの維持を使用します。
+ ロードバランサーには複数のターゲットグループが割り当てられており、クライアントからのトラフィックは、そのターゲットグループ内のインスタンスに一貫してルーティングする必要があります。
+ ブルー/グリーンデプロイ。

## basic.yml からのコード変更
<a name="tg-stickiness-code-changes"></a>

リスナーに 1 つの変更が加えられました。Application Load Balancer のデフォルトアクションを変更し、維持設定で同じ重みの 2 つのターゲットグループ (`TG1` と `TG2`) を指定しました。


****  

|  |  | 
| --- |--- |
| basic.yml | targetgroupstickiness.yml | 
| <pre>Listener1:<br />  Type: 'AWS::ElasticLoadBalancingV2::Listener'<br />  Properties:<br />    LoadBalancerArn: !Ref ALB<br />    Protocol: HTTP<br />    Port: 80<br />    DefaultActions:<br />      - TargetGroupArn: !Ref TG1<br />        Type: forward</pre> | <pre>Listener1:<br />  Type: 'AWS::ElasticLoadBalancingV2::Listener'<br />  Properties:<br />    LoadBalancerArn: !Ref ALB<br />    Protocol: HTTP<br />    Port: 80<br />    DefaultActions:<br />      - ForwardConfig:<br />          TargetGroups:<br />            - TargetGroupArn: !Ref TG1<br />              Weight: 1<br />            - TargetGroupArn: !Ref TG2<br />              Weight: 1<br />          TargetGroupStickinessConfig:<br />              DurationSeconds: 10<br />              Enabled: true<br />        Type: forward</pre> | 

## ステップ
<a name="tg-stickiness-steps"></a>

**メモ**  
NAT ゲートウェイには少額のコストがかかります。
複数の EC2 インスタンスは、1 つの EC2 インスタンスよりも速く無料利用枠の時間を消費します。

1. CloudFormation テンプレート`targetgroupstickiness.yml`をラボ環境にデプロイします。

1. ターゲットグループインスタンスのヘルスステータスが**初期**から**正常**に変わるまで待ちます。

1. HTTP (TCP/80) を使用して、ウェブブラウザの Application Load Balancer URL に移動します。

   例: `http://alb-123456789.us-east-1.elb.amazonaws.com/`

   ウェブページには、**インスタンス 1 - TG1**、**インスタンス 2 - TG1**、**インスタンス 3 - TG2**、または**インスタンス 4 - TG2 **のいずれかが表示されます。

1. ページを複数回更新します。

## 期待される結果
<a name="tg-stickiness-results"></a>

**注記**  
この例の CloudFormation テンプレートは、維持期間を 10 秒間に設定します。

ウェブページをロードするインスタンスは、ページテキストに反映されているように、10 秒以内にターゲットグループ (TG1 または TG2) 内に留まる必要があります。

約 10 秒後、維持が解放され、ターゲットグループインスタンスセットが変更される可能性があります。

## 仕組み
<a name="tg-stickiness-how"></a>
+ この例では、4 つの EC2 インスタンスが 2 つのターゲットグループに分割され、ターゲットグループごとに 2 つのインスタンスがあります。EC2 インスタンスには Apache ウェブサーバー (`httpd`) がインストールされており、各 EC2 インスタンスの`index.html`ページテキストは区別できるようにハードコーディングされています。
+ Application Load Balancer は、有効期限を指定して、送信先ターゲットグループに対するユーザーのセッションのバインディングを作成します。
+ ページを再ロードすると、Application Load Balancer はバインディングが存在し、有効期限が切れていないかどうかを確認します。
  + バインディングの有効期限が切れているか、存在しない場合、Application Load Balancer はルーティングロジックを実行し、送信先ターゲットグループを決定します。
  + バインドの有効期限が切れていない場合、Application Load Balancer はトラフィックを同じターゲットグループにルーティングしますが、必ずしも同じ EC2 インスタンスにルーティングするわけではありません。