再聊負載均衡SLB的主備可用區和高可用部署最佳實踐
1.概述
阿裏雲負載均衡SLB的主備可用區提供了多個層級的高可用,可閱讀《負載均衡SLB高可用的四個層次》。但很多用戶常常在下單選購時,對可用區的選擇感到困惑。到底如何選擇SLB的主備可用區,如何搭配不同可用區的ECS,來構建高可靠應用係統呢?客官請聽下文分解。
首先,我們要搞清楚一個事實,負載均衡SLB的可用區設計的初衷,是用來抵禦可用區(機房)級別的重大災情的,比如機房整體掉電,機房出口光纜中斷等,即當某個可用區整體不可用時,備可用區才派上用場,也就是說隻在上述情況下,SLB的主備可用區才會發生倒換。而並非用戶的某個實例出現故障,就會自動發生主備倒換的,這是一個很典型的誤區。
那麼主備可用區應該如何選擇比較合適呢?對於SLB的主可用而言,主要看用戶的ECS主要分布在那個可用區,SLB的主可用區和ECS的主可用區保持一致,將獲得最小的訪問延遲,但是我們並不推薦用戶將所有後端ECS都放置與同一可用區中,這是因為一旦可用區出現災情,用戶所有的後端服務器全部都無法提供正常服務,應用係統就徹底癱瘓了。
下文我們分別針對單SLB實例和多SLB實例場景,介紹高可用部署的最佳實踐。
2.單SLB實例場景下的高可用部署建議
SLB實例主可用區選擇可用區A,備可用區選擇可用區B,大部分ECS部署在可用區A,另外一少部分ECS部署在可用區B。這裏為之所以將大部分ECS放置與可用區A,而少部分ECS放置於可用區B,是因為SLB絕大部分時間都是主可用區實例在工作(畢竟可用區級別的災情是非常罕見的),而SLB和ECS處於同一可用區時,擁有最小的訪問延遲;同時部署一小部分ECS與可用區B是為了萬一出現了可用區A整體不可訪問的情況時,可用區B還有ECS可以維持係統的正常工作。而如果所有的ECS都部署在可用區A,那麼一旦出現可用區災情時,整體服務就不可用了。
以上介紹的是單SLB實例的高可靠部署方案,雖然用戶隻購買了一個SLB實例,但是由於SLB本身提供了主備可用區的冗餘,因此基本上消除了係統中的單點故障,對於一般的係統應用而言,這樣的部署方案已經可以基本滿足高可用需求。
但是對於特別重要的業務,對可用性要求極高的業務,單SLB實例的部署方案顯得不足了,原因就是上麵提到的,隻有可用區整體不可用時,才會發生SLB主備切換,因為配置不正確、網絡攻擊或其他異常因素導致的用戶實例不可用,這是由於不滿足可用區整體不可用的條件,因此並不會觸發主備切換動作,此時用戶的業務就有可能受損了,對於這類用戶而言,我們建議使用不同可用區多SLB實例的部署方案,詳見下文。
3.多SLB實例場景下的高可用部署建議
對係統可用性要求特別高的用戶,建議用戶在可用區A和可用區B分別購買SLB實例,同樣ECS也分別在可用區A和可用區B購買,將可用區A和可用區B的ECS分都掛載於不同可用區的SLB實例後端,前端再使用全球負載均衡(雲解析DNS)進行調度,用戶通過域名來訪問服務。這樣部署的好處如下,不論是可用區級別的故障,還是用戶SLB實例級別的故障,或者是後端ECS的故障,係統都具備容災能力,另外由於前端使用了雲解析DNS,在遇到訪問量突增時,還可以通過橫向擴展SLB實例來提升係統的整體處理能力,另外隨著企業的逐步發展,還可以通過在異地部署SLB和ECS來實現多地多活的雲上業務架構,因此該方案是對係統高可用要求非常高的用戶首選部署方案。
參考閱讀:
《負載均衡SLB高可用的四個層次》
《結合雲解析實現跨地域負載均衡》
最後更新:2017-11-14 12:34:00