阿里雲負載均衡SLB簡介

java領域佼佼者 發佈 2022-06-03T22:43:04.960801+00:00

什麼是負載均衡產品架構應用場景一、什麼是負載均衡負載均衡(Server Load Balancer)是將訪問流量根據轉發策略分發到後端多台雲伺服器(ECS實例)的流量分發控制服務。負載均衡擴展了應用的服務能力,增強了應用的可用性。

什麼是負載均衡

產品架構

應用場景

一、什麼是負載均衡

負載均衡(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上。因而負載均衡集群支持熱升級,並且在機器故障和集群維護時最大程度對用戶透明,不影響用戶業務。

入網流量路徑

對於入網流量,負載均衡會根據用戶在控制台或API上配置的轉發策略,對來自前端的訪問請求進行轉發和處理,數據流轉如下圖所示。

圖 1. 入網流量路徑

  1. TCP/UDP協議和HTTP/HTTPS協議的流量都需要經過LVS集群進行轉發。
  2. LVS集群內的每一台節點伺服器均勻地分配海量訪問請求,並且每一台節點伺服器之間都有會話同步策略,以保證高可用。如果相應的負載均衡實例服務埠使用的是四層協議(TCP或UDP),那麼LVS集群內每個節點都會根據負載均衡實例負載均衡策略,將其承載的服務請求按策略直接分發到後端ECS伺服器。如果相應的負載均衡實例服務埠使用的是七層HTTP協議,那麼LVS集群內每個節點會先將其承載的服務請求均分到Tengine集群,Tengine集群內的每個節點再根據負載均衡策略,將服務請求按策略最終分發到後端ECS伺服器。如果相應的負載均衡實例服務埠使用的是七層HTTPS協議,與上述HTTP處理過程類似,差別是在按策略將服務請求最終分發到後端ECS伺服器前,先調用Key Server進行證書驗證及數據包加解密等前置操作。

出網流量路徑

負載均衡SLB和後端ECS之間是通過內網進行通信的。

  • 如果ECS僅僅處理來自負載均衡的請求,可以不購買公網帶寬(ECS公網IP/彈性公網IP/NAT網關等)。
  • 如果需要直接通過後端ECS對外提供服務,或後端ECS有訪問外網的需求, 那麼需要相應的配置或購買ECS公網IP/彈性公網IP/NAT網關等服務。
  • ECS的公網流量訪問路徑如下圖所示。
  • 圖 2. 出網流量路徑

總體原則:流量從哪裡進來,就從哪裡出去。

  1. 通過負載均衡進入的流量在負載均衡SLB上限速/計費,僅收取出方向流量費用,入方向流量不收取(在未來可能會改變),SLB到ECS之間是阿里雲內網通信,不收取流量費用。
  2. 來自彈性公網IP/NAT網關的流量,分別在彈性公網IP/NAT網關上進行限速/計費,如果在購買ECS時選擇了公網帶寬,限速/計費點在ECS上。
  3. 負載均衡SLB僅提供被動訪問公網的能力,即後端ECS只能在收到通過負載均衡SLB轉發來的公網的請求時,才能訪問公網回應該請求,如後端ECS希望主動發起公網訪問,則需要配置/購買ECS公網帶寬、彈性公網IP或NAT網關來實現。
  4. ECS公網帶寬(購買ECS時配置)、彈性公網IP、NAT網關均可以實現ECS的雙向公網訪問(訪問或被訪問),但沒有流量分發和負載均衡的能力。

三、應用場景

負載均衡的應用場景為高訪問量的業務,提高應用程式的可用性和可靠性。

應用於高訪問量的業務

如果您的應用訪問量很高,您可以通過配置監聽規則將流量分發到不同的ECS實例上。此外,您可以使用會話保持功能將同一客戶端的請求轉發到同一台後端ECS,提高訪問效率。

擴展應用程式

您可以根據業務發展的需要,隨時添加和移除ECS實例來擴展應用系統的服務能力,適用於各種Web伺服器和App伺服器。

消除單點故障

您可以在負載均衡實例下添加多台ECS實例。當其中一部分ECS實例發生故障後,負載均衡會自動屏蔽故障的ECS實例,將請求分發給正常運行的ECS實例,保證應用系統仍能正常工作。

同城容災 (多可用區容災)

為了提供更加穩定可靠的負載均衡服務,阿里雲負載均衡已在各地域部署了多可用區以實現同地域容災。當主可用區出現機房故障或不可用時,負載均衡仍然有能力在非常短的時間內(大約30s中斷)切換到另外一個備可用區恢復服務能力;當主可用區恢復時,負載均衡同樣會自動切換到主可用區提供服務。

使用負載均衡時,您可以將負載均衡實例部署在支持多可用區的地域以實現同城容災。此外,建議您結合自身的應用需要,綜合考慮後端伺服器的部署。如果您的每個可用區均至少添加了一台ECS實例,那麼此種部署模式下的負載均衡服務的效率是最高的。

如下圖所示,在負載均衡實例下綁定不同可用區的ECS實例。正常情況下,用戶訪問流量將同時轉發至主、備可用區內的ECS實例;當可用區A發生故障時,用戶訪問流量將只轉發至備可用區內的ECS實例。此種部署既可以避免因為單個可用區的故障而導致對外服務的不可用,也可以通過不同產品間可用區的選擇來降低延遲。

如果您採取如下圖所示的部署方案,即在負載均衡實例的主可用區下綁定多台ECS實例,而在備可用區沒有任何ECS實例。當主可用區發生故障時會造成業務中斷,因為備可用區沒有ECS實例來接收請求。這樣的部署方式很明顯是以犧牲高可用性為代價來獲取低延時。

跨地域容災

您可以在不同地域下部署負載均衡實例,並分別掛載相應地域內不同可用區的ECS。上層利用雲解析做智能DNS,將域名解析到不同地域的負載均衡實例服務地址下,可實現全局負載均衡。當某個地域出現不可用時,暫停對應解析即可實現所有用戶訪問不受影響。


如果本文對你有幫助,別忘記給我個3連 ,點讚,轉發,評論,

咱們下期見!學習更多JAVA知識與技巧,關注與私信博主(666)

關鍵字: