負載均衡(Server Load Balancer)是將訪問流量根據轉發策略分發到后端多台雲服務器(ECS實例)的流量分發控制服務。負載均衡擴展了應用的服務能力,增強了應用的可用性。
概述
負載均衡通過設置虛擬服務地址,將添加的同一地域的多台ECS實例虛擬成一個高性能、高可用的后端服務池,並根據轉發規則,將來自客戶端的請求分發給后端服務器池中的ECS實例。
負載均衡默認檢查雲服務器池中的ECS實例的健康狀態,自動隔離異常狀態的ECS實例,消除了單台ECS實例的單點故障,提高了應用的整體服務能力。此外,負載均衡還具備抗DDoS攻擊的能力,增強了應用服務的防護能力。
組成部分
負載均衡由以下三個部分組成:
- 負載均衡實例 (Server Load Balancer instances)
一個負載均衡實例是一個運行的負載均衡服務,用來接收流量並將其分配給后端服務器。要使用負載均衡服務,您必須創建一個負載均衡實例,並至少添加一個監聽和兩台ECS實例。
- 監聽 (Listeners)
監聽用來檢查客戶端請求並將請求轉發給后端服務器。監聽也會對后端服務器進行健康檢查。
- 后端服務器(Backend Servers)
一組接收前端請求的ECS實例。您可以單獨添加ECS實例到后端服務器池,也可以通過虛擬服務器組或主備服務器組來批量添加和管理。
產品優勢
- 高可用
采用全冗余設計,無單點,支持同城容災。搭配DNS可實現跨地域容災,可用性高達99.95%。
根據應用負載進行彈性擴容,在流量波動情況下不中斷對外服務。
- 可擴展
您可以根據業務的需要,隨時增加或減少后端服務器的數量,擴展應用的服務能力。
- 低成本
與傳統硬件負載均衡系統高投入相比,成本可下降60%。
- 安全
結合雲盾,可提供5Gbps的防DDoS攻擊能力。
- 高並發
集群支持億級並發連接,單實例提供千萬級並發能力。
負載均衡基礎架構是采用集群部署,提供四層(TCP協議和UDP協議)和七層(HTTP和HTTPS協議)的負載均衡,可實現會話同步,以消除服務器單點故障,提升冗余,保證服務的穩定性。
負載均衡作為流量轉發服務,將來自客戶端的請求通過負載均衡集群轉發至后端服務器,后端服務器再將響應通過內網返回給負載均衡。
基礎架構說明
阿里雲當前提供四層和七層的負載均衡服務。
- 四層采用開源軟件LVS(Linux Virtual Server)+ keepalived的方式實現負載均衡,並根據雲計算需求對其進行了個性化定制。
- 七層采用Tengine實現負載均衡。Tengine是由淘寶網發起的Web服務器項目,它在Nginx的基礎上,針對有大訪問量的網站需求,添加了很多高級功能和特性。
如下圖所示,各個地域的四層負載均衡實際上是由多台LVS機器部署成一個LVS集群來運行的。采用集群部署模式極大地保證了異常情況下負載均衡服務的可用性、穩定性與可擴展性。
LVS集群內的每台LVS都會進行會話,通過組播報文同步到該集群內的其它LVS機器上,從而實現LVS集群內各台機器間的會話同步。如下圖所示,當客戶端向服務端傳輸三個數據包后,在LVS1上建立的會話A開始同步到其它LVS機器上。圖中實線表示現有的連接,圖中虛線表示當LVS1出現故障或進行維護時,這部分流量會走到一台可以正常運行的機器LVS2上。因而負載均衡集群支持熱升級,並且在機器故障和集群維護時最大程度對用戶透明,不影響用戶業務。
負載均衡的應用場景為高訪問量的業務,提高應用程序的可用性和可靠性。
應用於高訪問量的業務
如果您的應用訪問量很高,您可以通過配置監聽規則將流量分發到不同的ECS實例上。此外,您可以使用會話保持功能將同一客戶端的請求轉發到同一台后端ECS,提高訪問效率。
擴展應用程序
您可以根據業務發展的需要,隨時添加和移除ECS實例來擴展應用系統的服務能力,適用於各種Web服務器和App服務器。
消除單點故障
您可以在負載均衡實例下添加多台ECS實例。當其中一部分ECS實例發生故障后,負載均衡會自動屏蔽故障的ECS實例,將請求分發給正常運行的ECS實例,保證應用系統仍能正常工作。
同城容災 (多可用區容災)
為了提供更加穩定可靠的負載均衡服務,阿里雲負載均衡已在各地域部署了多可用區以實現同地域容災。當主可用區出現機房故障或不可用時,負載均衡仍然有能力在非常短的時間內(大約30s中斷)切換到另外一個備可用區恢復服務能力;當主可用區恢復時,負載均衡同樣會自動切換到主可用區提供服務。
使用負載均衡時,您可以將負載均衡實例部署在支持多可用區的地域以實現同城容災。此外,建議您結合自身的應用需要,綜合考慮后端服務器的部署。如果您的每個可用區均至少添加了一台ECS實例,那么此種部署模式下的負載均衡服務的效率是最高的。
如下圖所示,在負載均衡實例下綁定不同可用區的ECS實例。正常情況下,用戶訪問流量將同時轉發至主、備可用區內的ECS實例;當可用區A發生故障時,用戶訪問流量將只轉發至備可用區內的ECS實例。此種部署既可以避免因為單個可用區的故障而導致對外服務的不可用,也可以通過不同產品間可用區的選擇來降低延遲。
如果您采取如下圖所示的部署方案,即在負載均衡實例的主可用區下綁定多台ECS實例,而在備可用區沒有任何ECS實例。當主可用區發生故障時會造成業務中斷,因為備可用區沒有ECS實例來接收請求。這樣的部署方式很明顯是以犧牲高可用性為代價來獲取低延時。
跨地域容災
您可以在不同地域下部署負載均衡實例,並分別掛載相應地域內不同可用區的ECS。上層利用雲解析做智能DNS,將域名解析到不同地域的負載均衡實例服務地址下,可實現全局負載均衡。當某個地域出現不可用時,暫停對應解析即可實現所有用戶訪問不受影響。