介紹負載平衡請求不均衡的可能原因和排查方法。
可能原因
負載平衡請求不均衡可能有以下幾種原因:
- ECS執行個體請求串連數較少。
- 不同ECS執行個體的效能不同導致請求不均衡。
說明 ECS執行個體記憶體使用量情況不能準確的判斷請求轉寄是否均衡。
- 開啟了會話保持功能 。
配置了會話保持,當訪問Server Load Balancer執行個體的用戶端又很少時,容易導致不均衡,尤其在使用少量用戶端對負載平衡進行測試的時候。例如TCP監聽,開啟了會話保持(四層是基於來源地址做會話保持),使用一台用戶端對Server Load Balancer執行個體進行壓測,就會導致不均衡。
- ECS健全狀態檢查異常 。
後端伺服器ECS的健康建狀態異常會導致不均衡,尤其在壓測的時候容易忽略後端伺服器ECS的健全狀態檢查狀態,如果有後端伺服器ECS健全狀態檢查失敗或者健全狀態檢查狀態經常跳躍(好到壞,又從壞到好,反覆變化)必然會導致不均衡。
- TCP Keepalive保持長串連 。
後端伺服器ECS有些開啟了TCP Keepalive保持長串連,而有些又沒有開啟,則串連會在保持長串連的後端伺服器上堆積,造成不均衡。
排查和解決方案
- 查看後端各台ECS的權重是否相同。
- 在相關時間段內是否有健全狀態檢查失敗或波動現象,尋找波動的原因;或者健全狀態檢查沒有配置正確的響應碼2xx和3xx,導致了健全狀態檢查顯示正常,但後端服務有異常。
- 是否同時使用了加權最小串連數(WLC)調度方式和會話保持,如果是,嘗試改為加權輪詢(WRR)演算法和會話保持。