

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 目標群組黏性
<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>

已對接聽程式進行單一變更：我們修改了 Application Load Balancer 預設動作，以指定兩個同等權重的目標群組 (`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 執行個體比單一 EC2 執行個體更快地使用您的免費方案時數。

1. 在`targetgroupstickiness.yml`實驗室環境中部署 CloudFormation 範本。

1. 等到目標群組執行個體的運作狀態從**初始**變更為**正常運作**。

1. 使用 HTTP (TCP/80) 導覽至 Web 瀏覽器中的 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>
+ 在此範例中，四個 EC2 執行個體會分割為兩個目標群組，每個目標群組有兩個執行個體。EC2 執行個體已安裝 Apache Web 伺服器 (`httpd`)，且每個 EC2 執行個體上的`index.html`頁面文字都經過硬式編碼以區分。
+ Application Load Balancer 會建立使用者工作階段對目的地目標群組的繫結，並具有過期時間。
+ 當您重新載入頁面時，Application Load Balancer 會檢查繫結是否存在且尚未過期。
  + 如果繫結已過期或不存在，Application Load Balancer 會執行其路由邏輯並決定目的地目標群組。
  + 如果繫結尚未過期，Application Load Balancer 會將流量路由至相同的目標群組，但不一定會路由至相同的 EC2 執行個體。