部分應用業務場景下需要保持用戶會話的狀態,例如購物車中的商品、登錄信息、用戶偏好設置、游戲應用等場景,如果用戶的請求被分發到不同的服務器,那么會話狀態就會丟失從而導致用戶體驗問題。當您開啟了ALB會話保持功能后,可以使來自同一客戶端的請求被轉發到同一臺后端服務器上,從而確保用戶的體驗和數據的一致性。
背景信息
默認情況下,ALB會將每個客戶端請求分別分發至不同的后端服務器上。當您開啟了會話保持功能后,會話保持可以使來自同一客戶端的請求被轉發至同一臺后端服務器上,方便后端服務器維護狀態信息及向客戶端提供持續體驗。
未開啟會話保持:同一客戶端的請求通過ALB可能會被分發至不同的后端服務器,在某些場景下,如登錄后端服務器獲取交互信息等場景,客戶端的請求可能需重新登錄后端服務器。
開啟會話保持:同一客戶端的請求通過ALB被分配至同一臺后端服務器,而非分配至不同的后端服務器,在某些場景下,如登錄后端服務器獲取交互信息等場景,避免了客戶端的請求需要重新登錄后端服務器。
ALB開啟會話保持后,需要選擇Cookie的處理方式,有植入Cookie和重寫Cookie兩種處理方式。
植入Cookie:客戶端第一次訪問時,ALB會在返回請求中植入Cookie(即ALB插入SERVERID和SERVERCORSID兩個cookie;SERVERCORSID是以SERVERID為基礎,且加入了samesite=None這個屬性),下次客戶端攜帶此Cookie訪問,負載均衡服務會將請求定向轉發給之前記錄到的后端服務器上。
說明會話保持植入Cookie方式自帶SameSite=None,無需用戶配置,可以有效解決ALB轉發規則中跨域(CORS)場景下瀏覽器無法保存Cookie的問題。
重寫Cookie:當ALB發現用戶自定義了Cookie,將會對原來的Cookie進行重寫,下次客戶端攜帶新的Cookie訪問,ALB會將請求定向轉發給之前記錄的后端服務器。
使用限制
服務器組類型為函數計算類型時,您無需配置會話保持。更多操作,請參見創建服務器組。
前提條件
步驟一:ALB配置會話保持
在頂部菜單欄處,選擇后端服務器組所屬的地域。
在左側導航欄,選擇
。在服務器組頁面,找到目標服務器組,在操作列單擊編輯基本信息。
在編輯基本信息對話框中,開啟會話保持。
開啟會話保持:打開開啟會話保持開關并選擇Cookie處理方式。
選擇植入Cookie,輸入會話保持超時時間,然后單擊保存。
選擇重寫Cookie,輸入Cookie名稱,然后單擊保存。
本文示例將Cookie名稱設置為
BACKEND_SERVER
,該名稱僅為示例,您可以自定義該名稱。
(可選)步驟二:后端服務器配置Cookie
當服務器組開啟會話保持,并且選擇的Cookie處理方式為重寫Cookie時,才需要在后端服務器中配置對應的Cookie。
遠程登錄ECS。具體操作,請參見ECS遠程連接操作指南。
根據不同的Web服務器配置Cookie。
說明不同的Web服務器對應的Cookie設置方法不同,以下列舉常見Web服務器的設置方法,請您根據實際情況選擇,如果您使用的Web服務器不在以下列表中,請您查閱對應的官方文檔獲取配置方法。
Nginx
此處以CentOS 7.9操作系統、Nginx 1.20.1 版本配置為例介紹。具體請以您實際使用的環境為準。
修改Nginx服務配置文件并保存,修改點可參考下方說明。執行
nginx -t
命令查看配置文件所在路徑,默認通常為/etc/nginx/nginx.conf
,具體請以實際環境為準。http { # ... server { listen 80; # BACKEND_SERVER是您配置重寫Cookie時輸入的Cookie名稱;value您可使用自定義字符串。 add_header Set-Cookie "BACKEND_SERVER=value"; # ... } }
執行以下命令重新加載Nginx的配置文件。
sudo nginx -s reload
Apache
此處以CentOS 7.9操作系統、Apache 2.4.6版本配置為例介紹。具體請以您實際使用的環境為準。
修改Apache服務配置文件并保存,修改點可參考下方說明。默認通常為
/etc/httpd/conf/httpd.conf
,具體請以實際環境為準。# ... Listen 80 # BACKEND_SERVER是您配置重寫Cookie時輸入的Cookie名稱;value您可使用自定義字符串。 Header always set Set-Cookie "BACKEND_SERVER=value" # ...
執行以下命令,重新加載Apache的配置文件,使以上改動生效。
sudo systemctl reload httpd.service
參考以上步驟,修改服務器組中其余后端服務器的配置。
步驟三:測試會話保持的有效性
在頂部菜單欄選擇地域。找到目標ALB實例,復制其對應的DNS名稱。
在瀏覽器中輸入DNS名稱,可訪問某個服務器,多次刷新頁面仍然訪問相同服務器。
例如您第一次訪問的是ECS01,則后續幾次刷新后均是訪問ECS01。
如果多次刷新頁面后在ECS01與ECS02之間切換,則會話保持配置不生效,請您檢查配置是否有誤再重新測試。
相關文檔
如果配置過程中遇到問題,您可參考ALB常見問題進行定位處理。
如果遇到健康檢查異常問題,您可參考ALB健康檢查異常排查方法。