全部產品
Search
文件中心

Server Load Balancer:產品高可用

更新時間:Feb 28, 2024

負載平衡高可用是從系統設計、產品配置等多個方面提供了可用性保障。此外,您可以根據業務需求,配合使用Alibaba Cloud DNS等產品實現跨地區容災。多可用性區域高可用指標設計為99.99%,單可用性區域設計為99.90%。

CLB系統的高可用

Server Load Balancer執行個體採用叢集部署,可實現會話同步,以消除伺服器單點故障,提升冗餘,保證服務的穩定性。其中四層負載平衡通過LVS(Linux Virtual Server)+ keepalived的方式實現,七層負載平衡通過Tengine(淘寶網發起的Web伺服器專案,在Nginx的基礎上,針對有大訪問量的網站需求進行了最佳化)實現。

來自公網的請求通過等價多重路徑路由(ECMP)到達LVS叢集,LVS叢集內的每台LVS通過組播報文將會話同步到該叢集內的其它LVS機器上,從而實現LVS叢集內各台機器間的會話同步。同時,LVS叢集會對Tengine叢集進行健全狀態檢查,將異常機器從Tengine叢集移除,保證七層負載平衡的可用性。

最佳實務:

會話同步可以保證長串連不受叢集內伺服器故障的影響,但是對於短串連或串連未觸發會話同步規則時(未完成三向交握),叢集內的伺服器故障仍可能會影響使用者請求。為了防止叢集中某台機器故障導致的會話中斷,您可以在商務邏輯中加入重試機制,降低對使用者訪問造成的影響。

單CLB執行個體的高可用

為了向廣大使用者提供更穩定可靠的負載平衡服務,阿里雲負載平衡已在大部分地區部署了多可用性區域以實現同地區下的跨機房容災。當主可用性區域出現故障或不可用時,負載平衡有能力在非常短的時間內(約30秒)切換到備可用性區域並恢複服務;當主可用性區域恢複時,負載平衡同樣會自動切換到主可用性區域提供服務。

說明 負載平衡的主備可用性區域是可用性區域層級的容災。只有當主可用性區域整體不可用時,如機房整體斷電或者機房出口光纜中斷等,負載平衡才會切換到備可用性區域。而並非某個執行個體出現故障,就切換到備可用性區域。
最佳實務:
  1. 為了更好的利用負載平衡的主備可用性區域機制,建議您在支援主備可用性區域的地區建立Server Load Balancer執行個體,即在購買Server Load Balancer執行個體時選擇可用性區域類型為多可用性區域的地區。
  2. 當您選擇CLB的主備可用性區域時,可以根據ECS執行個體的可用性區域分布進行選擇。大部分ECS執行個體位於哪個可用性區域,就將哪個可用性區域選擇為CLB的主可用性區域,以擷取最小的訪問延遲。

    但是並不建議您將全部ECS執行個體都部署在一個可用性區域內,您也需要在CLB的備可用性區域部署少量ECS執行個體,以便在極端情況下(主可用性區域整體不可用時),切換到備可用性區域後仍舊可以正常處理負載平衡轉寄的請求。

    單SLB高可用

多CLB執行個體的高可用

如果您對可用性的要求特別高,Server Load Balancer執行個體自身的可用性保障機制可能無法滿足您的需求。例如當網路攻擊或配置錯誤等情況導致Server Load Balancer執行個體不可用時,由於未出現可用性區域級故障,不會觸發Server Load Balancer執行個體的可用性區域切換。此時,您可以建立多個CLB執行個體,通過Alibaba Cloud DNS對訪問進行調度,或通過全球負載平衡解決方案實現跨地區容災備份。

最佳實務:

您可以在一個地區內的多個可用性區域或多個地區內部署Server Load Balancer執行個體和後端ECS執行個體,然後使用Alibaba Cloud DNS對訪問進行調度。

multi-CLB

後端ECS執行個體的高可用

負載平衡通過健全狀態檢查來判斷後端ECS執行個體的可用性。健全狀態檢查機制提高了前端業務整體可用性,避免了後端ECS異常對總體服務的影響。

開啟健全狀態檢查功能後,當後端某個ECS執行個體健全狀態檢查出現異常時,負載平衡會自動將新的請求分發到其他健全狀態檢查正常的ECS執行個體上,而當該ECS執行個體恢複正常運行時,負載平衡會將其自動回復到負載平衡服務中。關於健全狀態檢查的詳細機制,請參見CLB健全狀態檢查工作原理

最佳實務:

為了使健全狀態檢查功能正常運作,您需要開啟並正確配置健全狀態檢查。具體的操作流程請參見配置和管理CLB健全狀態檢查