

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

# ロードバランサーが生成した Cookie を使用したスティッキーセッション
<a name="alb-cookies-stickiness"></a>

ロードバランサーが生成した Cookie で 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)します。

  トラフィックが最初にインスタンスにルーティングされた後、後続のトラフィックは指定された期間、その EC2 インスタンスに維持されます。

**テンプレート：** CloudFormation テンプレート `stickysessionslb.yml` ([サンプルコードの .zip ファイル](samples/stickiness.zip)に含まれる) を使用して、ロードバランサーが生成した Cookie でスティッキーセッションを試します。

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

以下のシナリオでは、ロードバランサーが生成した Cookie でスティッキーセッションを使用します。
+ PHP ウェブサーバー
+ ログ、ショッピングカート、チャット会話などの一時的なセッションデータを保持するサーバー

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

関連するコードの変更は、維持タイプを に設定`lb_cookie`し、期間を 10 秒に設定するターゲットグループ設定にあります。


****  

|  |  | 
| --- |--- |
| basic.yml | stickysessionslb.yml | 
| <pre>TG1:<br />   Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'<br />   Properties:<br />     Name: TG1<br />     Protocol: HTTP<br />     Port: 80<br />     TargetType: instance<br />     Targets:<br />       - Id: !Ref Instance1<br />       - Id: !Ref Instance2<br />VpcId: !Ref CustomVPC</pre> | <pre>TG1:<br />   Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'<br />   Properties:<br />     Name: TG1<br />     Protocol: HTTP<br />     Port: 80<br />     TargetType: instance<br />     Targets:<br />       - Id: !Ref Instance1<br />       - Id: !Ref Instance2<br />     VpcId: !Ref CustomVPC<br />     TargetGroupAttributes:<br />       - Key: stickiness.enabled<br />         Value: true<br />       - Key: stickiness.type<br />         Value: lb_cookie<br />       - Key: stickiness.lb_cookie.duration_seconds<br />Value: 10</pre> | 

## ステップ
<a name="alb-cookies-steps"></a>

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

1. CloudFormation テンプレート`stickysessionslb.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 - TG1 **のいずれかが表示されます。

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

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

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

ウェブページをロードするインスタンスは、ページテキストに反映されているように、10 秒以内は同じままにする必要があります。約 10 秒後、維持が解放され、送信先インスタンスが変更される可能性があります。

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