負載平衡(SLB)從系統設計、產品配置等多個方面提供了可用性保障。此外,您可以根據業務需求,配合使用Alibaba Cloud DNS等產品實現跨地域容災。

SLB系統的高可用

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

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

最佳實務:

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

單SLB執行個體的高可用

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

说明 負載平衡的主備可用性區域是可用性區域等級的容災。只有當主可用性區域整體不可用時,如機房整體斷電、機房出口光纜中斷等,負載平衡才會切換到備可用性區域。而並非某個執行個體出現故障,就切換到備可用性區域。

最佳實務:

  1. 為了更好的利用負載平衡的主備可用性區域機制,建議您在支援主備可用性區域的地域建立Server Load Balancer執行個體,即在購買Server Load Balancer執行個體時選擇可用性區域類型為多可用性區域的地域。
  2. 當您選擇SLB的主備可用性區域時,可以根據ECS執行個體的可用性區域分布進行選擇。大部分ECS執行個體位於哪個可用性區域,就將哪個可用性區域選擇為SLB的主可用性區域,以獲取最小的訪問延遲。

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

多SLB執行個體的高可用

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

最佳實務:

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

後端ECS執行個體的高可用

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

開啟健康檢查功能後,當後端某個ECS執行個體健康檢查出現異常時,負載平衡會自動將新的請求分發到其他健康檢查正常的ECS執行個體上;而當該ECS執行個體恢複正常運行時,負載平衡會將其自動回復到負載平衡服務中。

最佳實務:

為了使健康檢查功能正常運作,您需要開啟並正確配置健康檢查。