919
windows
同一客戶端訪問多個負載均衡實例失敗或超時__異常排查_負載均衡-阿裏雲
應用場景
將相同ECS同時掛載在多個負載均衡實例的後端,並在這些負載均衡實例下創建相同的後端端口的四層監聽。在這種場景下,用戶用同一台客戶端去同時訪問這些負載均衡實例時,有時會出現失敗或超時。
架構圖
如上圖所示,用戶有兩個負載均衡實例SLB1和SLB2,分別有兩個TCP監聽,其前端端口不一致,但後端端口一致,並且這兩個監聽後端掛載了相同的雲服務器ECS。當一個用戶Client去訪問這兩個SLB實例時,訪問可能會失敗。
具體原因
- 四層 (TCP協議) 負載均衡會對用戶的訪問流量在入方向做DNAT
- 當客戶端訪問SLB1時,CIP:CPORT->VIP1:VPORT1的連接在到達後端ECS的時候,會被轉換成CIP:CPORT->DIP:DPORT。
- 當客戶端訪問SLB2時,CIP:CPORT->VIP2:VPORT2的連接在到達後端ECS的時候,也會被轉換成CIP:CPORT->DIP:DPORT;
兩條TCP連接的序列號和TCP狀態在後端服務器上互相幹擾,導致建連失敗,即Client建立的兩條連接在後端服務器上變成了同樣的五元組TCP:CIP:CPORT:DIP:DPORT
注⚠:
CIP: Client IP (客戶端IP);
VIP1: 負載均衡實例SLB1的IP地址;
VIP2: 負載均衡實例SLB2的IP地址;
VPORT1: 負載均衡實例SLB1的監聽前端端口;
VPORT2: 負載均衡實例SLB2的監聽前端端口;
DIP: 後端服務器的IP地址;
DPORT: 後端服務器的端口;
解決思路
在這樣的場景下,需要在後端服務器上避免出現同樣的五元組,因協議類型固定為TCP,則需要調整後麵的四元組組成。
1.避免CIP衝突: 如果後端服務是HTTP服務,可將其中一個SLB實例的四層監聽切換為七層監聽,七層SLB監聽通過HTTP頭部的X-Forward-For字段獲取客戶端源地址,二者不會產生衝突;另外,使用不同的Client訪問這兩個監聽也可避免此問題出現。
2.避免CPORT衝突: 在Client發起針對VIP1、 VIP2的TCP建連請求時,指定源端口CPORT進行訪問(如訪問VIP1時使用CPORT範圍是10000 – 29999,訪問VIP2時使用CPORT範圍是30000 – 49999)。
3.避免DIP衝突:即避免同一個後端服務器掛載在多個SLB實例後麵。
4.避免DPORT衝突:如果後端服務非HTTP服務,則可將其中一個SLB實例四層監聽的後端服務器服務端口修改,也可以避免該問題。
最後更新:2016-12-20 19:37:08
上一篇:
部署負載均衡集群支持會話同步__常見問題_負載均衡-阿裏雲
下一篇:
curl正常但健康檢查異常__異常排查_負載均衡-阿裏雲
擴容XFS磁盤 (Linux)__擴容磁盤概覽_磁盤_用戶指南_雲服務器 ECS-阿裏雲
LogSearch-報警__Getting-Started_日誌服務-阿裏雲
容器服務監控__雲服務監控_用戶指南_雲監控-阿裏雲
擴容__購買磁盤_購買指南_雲服務器 ECS-阿裏雲
基於OSS的移動開發__接入OSS_開發人員指南_對象存儲 OSS-阿裏雲
多路輸入輸出示例__示例程序_MapReduce_大數據計算服務-阿裏雲
案例__規則引擎_規則引擎-阿裏雲
推薦引擎__數加產品概覽_數加平台介紹-阿裏雲
性能壓測注意事項__快速入門_雲數據庫 HybridDB-阿裏雲
連接數據庫實例__快速入門_雲數據庫 HybridDB-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲