本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用應用程式型 Cookie 的黏性工作階段
當您搭配應用程式型 Cookie 使用 Application Load Balancer 時:
-
Application Load Balancer 使用目標群組權重
來判斷如何在目標群組之間平衡傳入流量。 -
根據預設,Application Load Balancer 會使用循環配置方法來將請求路由至目的地目標群組中的 EC2 執行個體。
-
流量最初路由至 EC2 執行個體後,EC2 執行個體應用程式回應應包含自訂應用程式 Cookie,該 Cookie 會與自動化 Application Load Balancer Cookie 一起傳回用戶端。
-
如果用戶端傳送傳回應用程式 Cookie 和 Application Load Balancer Cookie,後續流量將黏附至 EC2 執行個體。
-
以應用程式為基礎的 Cookie 在設定的持續時間不使用後過期。
範本:使用 AWS CloudFormation 範本 stickysessionsapp.yml
(包含在範例程式碼 .zip 檔案中) 來嘗試使用應用程式型 Cookie 的黏性工作階段。
常用案例
當您想要在這些案例中進行其他控制時,請使用黏性工作階段搭配應用程式產生的 Cookie:
-
PHP Web 伺服器
-
維護臨時工作階段資料的伺服器,例如日誌、購物車或聊天對話
來自 basic.yml 的程式碼變更
唯一的程式碼變更是在目標群組組態中。我們已將黏性組態新增至 Application Load Balancer 和目標群組屬性。應用程式 Cookie 持續時間已指定,目標群組已啟用應用程式 Cookie 黏性。
basic.yml |
stickysessionsapp.yml |
|
|
步驟
備註
-
NAT 閘道會產生很小的成本。
-
多個 EC2 執行個體使用免費方案時數的速度會比單一 EC2 執行個體快。
-
在
stickysessionslb.yml
實驗室環境中部署 CloudFormation 範本。 -
等到目標群組執行個體的運作狀態從初始變更為正常運作。
-
使用 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。
-
多次重新整理頁面。
預期結果
注意
此範例中的 CloudFormation 範本已將黏性設定為持續 10 秒。有效的黏性持續時間組態介於 1 秒到 1 週之間。
載入網頁的執行個體應保持不變,如頁面文字所示。
黏性持續時間不會重新整理,但是根據 EC2 執行個體所產生之應用程式 Cookie 在 Application Load Balancer 中設定的過期時間。
範例 1:等待 5 秒以重新整理頁面。將載入相同的執行個體,並再重新整理黏性 10 秒。
範例 2:等待超過 10 秒以重新載入頁面。應用程式 Cookie 會過期,而您會被路由到不同的 EC2 執行個體。這個新執行個體會產生另一個應用程式 Cookie,持續時間為 10 秒。
運作方式
-
在此範例中,EC2 執行個體已安裝 Apache Web 伺服器 (
httpd
)。httpd.conf
檔案設定為將靜態Set-Cookie
值傳回用戶端 (您的 Web 瀏覽器)。Set-Cookie
值硬式編碼為TESTCOOKIE=<somevalue>
。 -
開啟瀏覽器的檢查元素選項,選擇網路索引標籤,然後選擇 Get 方法,以載入頁面。您將看到 Cookie 索引標籤。
-
瀏覽器是一種用戶端應用程式,會自動設定 ,以使用伺服器
Set-Cookie
回應中收到的 Cookie 傳回任何後續更新至伺服器。 -
當您重新載入頁面時,初始頁面載入中收到的 Cookie 會自動傳回 Application Load Balancer。
-
如果 Cookie 已過期 (亦即,自上次呼叫後已經過 10 秒),Application Load Balancer 會使用新的邏輯來判斷要將流量路由到哪個 EC2 執行個體。
-
如果 Cookie 尚未過期,Application Load Balancer 會將流量路由到相同的 EC2 執行個體。
-