問題描述
使用阿里雲Server Load Balancer時,會話保持的功能不生效。
問題原因
可能的問題原因如下:
Server Load Balancer的監聽配置中未開啟會話保持功能。
會話保持時間設定過小。
使用HTTP/HTTPS監聽,當後端伺服器返回4XX的HTTP狀態代碼時,報文中無法插入會話保持所需的Cookie,導致會話保持失效。
使用HTTP/HTTPS監聽,當後端伺服器返回302重新導向的HTTP狀態代碼時,會話保持中的
SERVERID
字串將被改變,導致會話保持失效。
解決方案
如何檢查負載平衡會話保持不生效問題:
登入阿里雲管理主控台,進入Server Load Balancer的執行個體管理頁面,確認監聽選項卡中會話保持狀態為已開啟。如果狀態為關閉,請參見添加TCP監聽,開啟會話保持功能。
檢查是否調整過會話保持的逾時時間。如果逾時時間設定過小,可能會導致會話保持失敗。可以嘗試使用預設逾時時間或者適當增加逾時時間,同時觀察會話保持狀態。關於如何觀察會話保持狀態,請參見如何使用curl命令測試CLB會話保持的有效性。
在瀏覽器端捕抓請求與響應的回複資訊,或使用抓包軟體分析是否存在如下報文。如果存在如下報文,則建議改用TCP監聽。因為TCP監聽是通過源用戶端的IP地址進行會話保持的。您還可以在後端Web程式中插入Cookie,並對其進行判斷,以確保會話保持的有效性。
302重新導向的報文:負載平衡植入Cookie時,如果後端ECS執行個體返回302重新導向的報文,將改變會話保持中的
SERVERID
字串,導致會話保持失效。4XX響應碼的報文:負載平衡無法在4XX響應碼的報文中插入會話保持所需的Cookie。
相關文檔
適用於
Server Load Balancer