负载均衡SLB
目錄
前言
一、SLB的概念
1.1??什么是負載均衡
1.2??負載均衡SLB發展過程
1.2.1 硬件設備來負載均衡的功能?
1.2.2? Ali軟件負載均衡SLB VS 傳統硬件負載均衡器?
1.3??負載均衡的主要作用
二、阿里云負載均衡SLB
2.1??阿里云負載均衡SLB的優點
2.2??負載均衡SLB應用場景
2.3??阿里云負載均衡SLB組成
2.4??SLB的產品優勢
2.5??負載均衡中的概念/術語
2.6??SLB整體結構
三、SLB的原理
3.1? 轉發方式的工作原理
3.2? 會話保持及權重設置的工作原理
3.3 負載均衡如何和云產品結合
?3.4??SLB中的概念
3.4.1? 監聽
3.4.2 監聽轉發
?編輯3.4.3??會話保持
?3.4.4??SLB的后端服務器
3.4.5??健康檢查
3.4.6? 訪問控制?
3.5?SLB的計費和使用限制
四、總結
SLB的功能
思考題-ACP
負載均衡SLB相關問題
前言
在軟件系統的架構設計中,對集群的負載均衡設計是作為高性能系統優化環節中必不可少的方案。負載均衡本質上是用于將用戶流量進行均衡減壓的,因此在互聯網的大流量項目中,其重要性不言而喻。
一、SLB的概念
1.1??什么是負載均衡
隨著業務發展,我們對外提供的服務可能性能不達標,一臺服務器可能無法滿足業務的需求,為了解決這個問題,我們可能增加服務器的配置,但是服務器的配置(CPU,內存,硬盤)有上限,這時候就需要用到多臺服務器提供同一個訪問服務,這就是集群技術。
負載均衡(Server Load Balancer)是將訪問流量根據轉發策略分發到后端多臺云服務器(Elastic Compute Service,簡稱 ECS)的流量分發控制服務。
負載均衡服務通過設置虛擬服務地址,將位于同一地域的多臺ECS實例虛擬成一個高性能、高可用的應用服務池;再根據應用指定的方式,將來自客戶端的網絡請求分發到云服務器池中。負載均衡服務是ECS面向多機方案的一個配套服務,需要同ECS結合使用。
負載均衡服務會檢查云服務器池中ECS實例的健康狀態,自動隔離異常狀態的ECS實例,從而解決了單臺ECS實例的單點問題,提高了應用的整體服務能力。在標準的負載均衡功能之外,負載均衡服務還具備TCP與HTTP抗DDoS攻擊的特性,增強了應用服務的防護能力
1.2??負載均衡SLB發展過程
1.2.1 硬件設備來負載均衡的功能?
1.2.2? Ali軟件負載均衡SLB VS 傳統硬件負載均衡器?
傳統IT
- 在傳統IT中,做集群技術需要用集群軟件把多臺服務器連接起來,集群軟件來判斷每個服務器的狀態,來把訪問請求轉發給服務器。但是呢,這個配置過程比較耗時復雜,還取決于負載均衡軟件的可靠性可用性。
阿里云
- 阿里云為了減輕用戶操作的復雜性,推出了SLB服務。SLB服務已經實現了負載均衡,用戶只需要在SLB中添加后端服務器,這些后端服務器只能是阿里云同一地域下的ECS,利用這些ECS對外提供訪問服務,這些ECS不要做任何其它配置。
- 用戶訪問SLB,再由SLB把請求轉交到后端ECS服務器,ECS服務器再把業務響應給用戶
- 通過設置虛擬服務地址,將添加的同一地域的多臺ECS實例虛擬成一個高性能,高可用的后端服務池,并根據轉發規則,將來自客戶端的請求分發給后端服務器池中的ECS實例
- 默認檢查云服務器池中的ECS實例的健康狀態,自動隔離異常狀態的ECS實例,消除了單臺ECS實例的單點故障,提供了應用的整理服務能力。此外,負載均衡還具備DDoS攻擊的能力,增強了應用服務的防護能力
負載均衡(SLB)使用最佳實踐 :
https://yq.aliyun.com/articles/80055?spm=5176.100240.searchblog.26.3bIToO
負載均衡(阿里云幫助與文檔):
https://help.aliyun.com/product/27537.html?spm=5176.doc27544.3.1.BZgTjy
基礎架構:
https://help.aliyun.com/document_detail/27544.html?spm=5176.7739444.6.540.BHXBo1
技術原理:
https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.100239.blogcont80055.19
健康檢查原理:
https://help.aliyun.com/knowledge_detail/39455.html?spm=5176.100239.blogcont80055.20
網絡流量說明:
https://help.aliyun.com/knowledge_detail/39440.html?spm=5176.100239.blogcont80055.21
高可用概要說明:
https://help.aliyun.com/knowledge_detail/39449.html?spm=5176.100239.blogcont80055.22
1.3??負載均衡的主要作用
高并發:負載均衡通過算法調整負載,盡力均勻的分配應用集群中各節點的工作量,以此提高應用集群的并發處理能力(吞吐量)。
伸縮性:添加或減少服務器數量,然后由負載均衡進行分發控制。這使得應用集群具備伸縮性。
高可用:負載均衡器可以監控候選服務器,當服務器不可用時,自動跳過,將請求分發給可用的服務器。這使得應用集群具備高可用的特性。
安全防護:有些負載均衡軟件或硬件提供了安全性功能,如:黑白名單處理、防火墻,防 DDos 攻擊等。
二、阿里云負載均衡SLB
2.1??阿里云負載均衡SLB的優點
同城容災:同城容災是指一個地域下不同的可用區,SLB是不能跨地域的,SLB可以提供可用區的高級可用,故障時自動切換
流量分發:對多臺云服務器自動進行流量分發,擴展系統服務能力
簡單易用:多種付費類型,計費模式與管理方式,可靈活輕松管理
超強性能:推出性能保障型實例,并提供超高性能規格的實例
可以通過流量分發擴展應用系統對外的服務能力,通過消除單點故障提高應用系統的可用性。
2.2??負載均衡SLB應用場景
負載均衡的應用場景為高訪問量的業務,提供應用程序的可用性和可靠性
- 高訪問量的業務:如果應用的訪問量很高,可以通過配置監聽規則將流量分發到不同的ECS實例上
- 擴展應用程序:可以根據業務發展的需要,隨時添加和移除ECS實例來擴展應用系統的服務能力
- 消除單點故障:可以在負載均衡實例下添加多臺ECS實例。當其中一部分ECS實例發生故障后,將請求分發給正常運行的ECS實例
- 同城容災(多可用區容災):使用負載均衡,可以將負載均衡實例部署在支持多可用區的地域以實現同城容災
- 跨地域容災:SLB自身不可以實現跨地域容災。可以在不同地域下部署負載均衡實例,并分別掛載相應地域內不同可用區的ECS,上層利用云解析做智能DNS
2.3??阿里云負載均衡SLB組成
阿里云負載均衡SLB主要由3個基本概念組成:負載均衡器LoadBalancer,監聽器Listener,后端服務器BackendServer
- 負載均衡實例Server Loader Balancer instances:一個負載均衡實例是一個運行的負載均衡服務,用來接收流量并將其分配給后端服務器。
- 監聽器Listeners:監聽器用來檢查客戶端請求并將請求轉發給后端服務器。監聽也會對后端服務器進行健康檢查
- 后端服務器Backend Servers:一組接收前端請求的ECS實例,ECS實例是真正提供服務訪問的,后端服務器的數據要一致,對后端服務器的操作系統等配置沒有要求,只要求它們的數據是一致的
2.4??SLB的產品優勢
- 高可用:采用全冗余設計,無單點,支持同城容災,搭配DNS可以實現跨地域容災。SLB僅僅支持同一個地域的SLB,如果要實現不同地域的容災,需要在兩地搭建兩套SLB,再借助DNS實現這兩套SLB的輪詢訪問
- 可擴展:可以根據業務的需要,隨時增加或減少后端服務器的數量,擴展應用的服務能力
- 低成本:與傳統硬件負載均衡系統高投入相比,成本可下降60%
- 安全:結合云盾,可提供5Gbps的防DDoS攻擊能力
- 高并發:集群支持億級并發連接,單實例提供千萬級并發能力
2.5??負載均衡中的概念/術語
負載均衡服務Server Load Balancer:阿里云計算提供的一種網絡負載均衡服務,可以結合阿里云提供的ECS服務為用戶提供基于ECS實例的TCP、UDP與HTTP負載均衡服務
地域Region:代表資源所在并有效的地域,每個地域包含一組數據中心
可用區Zone:代表負載均衡所在的Zone
負載均衡實例Load Balancer:負載均衡實例可以理解為負載均衡服務的一個運行實例,用來接收流量并將其分配給后端服務器。用戶要使用負載均衡服務,就必須先創建一個負載均衡實例,LoadBalancer是識別用戶負載均衡實例的唯一標識。.
負載均衡服務監聽Listener:負載均衡服務監聽,包括監聽端口,負載均衡策略和健康檢查配置等
后端服務器BackendServer:接受負載均衡分發請求的一組云服務器,負載均衡服務將外部的訪問請求按照用戶設定的規則轉發到這一組后端服務器上進行處理
服務地址Address:系統分配的服務地址,當前為IP地址。用戶可以選擇該服務地址是否對外公開,來分別創建公網和私網類型的負載均衡
2.6??SLB整體結構
三、SLB的原理
負載均衡基礎架構是采用集群部署,提供四層(TCP協議和UDP協議)和七層(HTTP和HTTPS協議)的負載均衡,可實現會話同步,以消除服務器單點故障,提升冗余,保證服務的穩定性。
- 傳輸層:傳輸層用端口號區分不同連接,比如 連網站http:默認用TCP80端口;連網站https:443端口;ssh:22端口
- 應用層:http,https,ssh,ftp等協議屬于應用層協議
SLB基本架構圖
?阿里云當前提供四層和七層的負載均衡服務。
- 七層:采用Tengine實現負載均衡;只能選HTTP和HTTPS;Tengine 是由淘寶網發起的 Web 服務器項目,它在 Nginx 的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。
- 四層:采用開源軟件LVS (Linux Virtual Server) + keepalived的方式實現負載均衡。可以自定義端口
選擇四層or七層
- 如果是訪問網站,選七層,http和https都支持,配置簡單
- 如果需要自定義端口,建議用四層,四層麻煩一些;七層只能選HTTP或HTTPS協議
3.1? 轉發方式的工作原理
3.2? 會話保持及權重設置的工作原理
會話保持:開啟會話保持后,負載均衡會把來自同一個客戶端的請求分配到同一臺后端服務器上,提高訪問效率
- 四層TCP:同一IP地址的請求持續發往同一臺后端服務器
- 七層HTTP:相同cookie的請求發往同一臺后端服務器
權重設置:訪問請求按權重大小依次分發
?
3.3 負載均衡如何和云產品結合
云解析企業版(智能DNS):提供豐富的智能解析策略,合理調度來自不同線路用戶的入站訪問量,后續還支持根據地域調度訪問流量和健康檢查,實現跨地域負載均衡或全局負載均衡
云服務器ECS:掛載同地域Region的ECS,可實現流量分發和消除單點故障
云盾:結合云盾實現DDoS防護,包括清洗和黑洞
彈性伸縮服務:結合彈性伸縮服務可以做到彈性擴容
對象存儲OSS,數據庫RDS:用戶通過ECS上的應用,可訪問OSS,RDS,Memcache等應用。用戶也可以直接在ECS上部署DB等應用,通過SLB做負載均衡。
?3.4??SLB中的概念
3.4.1? 監聽
創建負載均衡實例后,需要為實例配置監聽。負載均衡實例監聽負責檢查連接請求,然后根據調度算法定義的轉發策略將請求分發至后端服務器。負載均衡提供四層(TCP/UDP協議)和七層(HTTP/HTTPS協議)監聽,可根據應用場景選擇監聽協議:
- TCP:先和對方建立連接,三次握手,再發送數據
- UDP:直接發送數據給對方;適合關注實時性而相對不注重可靠性
- HTTP:基于Cookie的會話保持;適合web應用
- HTTPS:加密傳輸數據;適合銀行等加密傳輸的應用
3.4.2 監聽轉發
HTTPS是加密數據傳輸協議,安全性高。負載均衡支持將HTTP訪問重定向至HTTPS,方便進行全站HTTPS部署。負載均衡已經在全部地域開放了HTTPS重定向功能。
3.4.3??會話保持
負載均衡是可以設置會話保持功能的。如果開啟會話保持,在超時時間范圍內,會將同一請求轉發給后端同一臺服務器;如果過了超時時間,就會重新選擇后端服務器。如果負載均衡本身請求流量較小,就會顯得分發不那么均衡。所以如果是要做壓力測試,建議先關閉會話保持測試。壓力測試可以測試負載均衡的性能如何。
- 四層會話保持:四層TCP方式的負載均衡是基于客戶IP進行會話保持的,它會把同一IP地址的請求持續發往一臺服務器
- 七層會話保持:七層HTTP負載方式進行會話保持是基于cookie的。可以分為植入cookie和重寫cookie。
?3.4.4??SLB的后端服務器
在使用負載均衡服務前,需要添加ECS實例作為負載均衡實例的后端服務器,用來接收負載均衡監聽轉發的請求。負載均衡服務通過設置虛擬服務地址,將添加的同一地域的多臺ECS實例虛擬成一個高性能,高可用的應用服務池。也可以通過虛擬服務器組管理后端服務器。
可以在任意時刻增加或減少負載均衡實例的后端ECS數量,確保開啟了負載均衡的健康檢查功能并同時保證負載均衡實例中至少有一臺正常運行的ECS。添加后端服務器時,要注意:
- SLB與ECS同地域:負載均衡不支持跨地域部署,確保ECS實例的所屬地域和負載均衡實例的所屬地域相同。
- ECS操作系統:負載均衡本身不會限制后端ECS實例使用哪種操作系統
- 50個應用:一個負載均衡實例最多支持添加50個監聽,每個監聽對應后端ECS實例上的一個應用
- 指定ECS的權重:可以指定都斷服務器池內各個ECS實例的轉發權重,權重越高的ECS實例將被分配到更多的訪問請求
- 如果同時開啟了會話保持功能,那么有可能會造成后端服務器的訪問并不完全相同的。當負載均衡服務分發請求不均勻時,可以參考以下方法進行檢查處理:
統計一個時間段內,后端ECS實例的Web服務訪問日志記錄數據量
按照負載均衡的配置,對比多臺ECS實例日志的數量是否有相差。開啟會話保持后,需要剝離相同IP的訪問日志。如果負載均衡配置了權重,需要根據權重比例計算日志中訪問比例是否正常。
- ECS進行熱遷移時,可能導致SLB長連接斷開。重新連接后即可恢復,請做好應用的重連工作。
后端服務器組分類
默認服務器組:用來接收前端請求的ECS實例。如果監聽沒有設置虛擬服務器組或主備服務器組,默認將請求轉發至默認服務器組中的ECS。
主備服務器組:一個主備服務器組只包括兩臺ECS實例,一臺作為主服務器,一臺作為備服務器。由于備服務器不會做健康檢查,所以只要主服務器健康檢查失敗,系統會直接將流量切到備服務器。當主服務器健康檢查成功恢復服務后,流量會自動切到主服務器。備機一直不工作,除非主機壞了,備機才工作
虛擬服務器組:當需要將不同的請求轉發到不同的后端服務器上時,或需要通過域名和URL進行請求轉發時,可以選擇虛擬服務器組。
3.4.5??健康檢查
負載均衡通過健康檢查來判斷后端服務器(ECS實例)的業務可用性。健康檢查機制提高了前端業務整體可用性,避免了后端ECS異常對總體服務的影響。
開啟健康檢查功能后,當后端某臺ECS健康檢查出現異常時,負載均衡會自動將新的請求分發到其它健康檢查正常的ECS上;而當該ECS恢復正常運行時,負載均衡會將其自動恢復到負載均衡服務中。
SLB四層和七層健康檢查機制如下:
3.4.6? 訪問控制?
負載均衡提供監聽級別的訪問控制。可以針對不同的監聽設置訪問白名單和黑名單。
- 白名單:僅轉發來自所選訪問控制策略組中設置的IP地址或地址的的請求。適用于應用只允許特定IP訪問的場景
- 黑名單:來自所選訪問控制策略組中設置的IP地址或地址段的所有請求都不會轉發。黑名單適用于應用只限制某些特定IP訪問的場景。
3.5?SLB的計費和使用限制
SLB的計費
SLB提供兩種計費模式:按量付費和預付費。
- 按量付費:適合波峰波谷的應用
- 預付費:就是按照帶寬計費,包年包月的方式
SLB的計費項包括實例費,流量費,帶寬費,規格費。注意無論是公網還是私網,公網中無論是按流量還是按帶寬,性能保障型都會收取規格費。私網只收取規格費。
四、總結
SLB的功能
調度算法:負載均衡支持輪詢,加權輪詢(WRR),加權最小連接數(WCL)和一致性哈希(CH)調度算法
- 加權就是比例,ECS性能和處理能力不同,所占加權比重就不同
- 一致性哈希:同一個主機發送的請求就轉發給同一個ECS后端服務器,減少浪費
健康檢查:負載均衡會檢查后端服務器的運行狀況。當探測到后端服務器運行狀況不佳時,會停止向其發送流量,然后將流量轉發給其它正常運行的后端服務
會話保持:負載均衡提供會話保持功能。在會話的生命周期內,可以將同一客戶端的請求轉發到同一臺后端服務器上
訪問控制:負載均衡支持添加黑名單和白名單,靈活控制客戶端訪問
高可用:負載均衡可以將流量轉發給多個可用區的后端服務器。并且,負載均衡已經在大部分地域支持了多可用區部署,當主可用區出現故障時,負載均衡可自動切換到備可用區上提供服務
安全防護:結合云盾,可提供5Gbps的防DDoS攻擊能力
思考題-ACP
負載均衡SLB相關問題
- 為什么請求不均衡? ?答:1.訪問量太少 2.不同ECS服務器的性能不同 都會導致請求不均衡
- 負載均衡是否可以自定義端口?答:端口可以自定義1~65535
- 負載均衡服務本身解決了后端ECS服務的災備問題,單如何避免負載均衡服務本身故障導致的單點問題?關于負載均衡的災備,有什么好的建議?答:在同一地域,可以購買多個負載均衡實例,通過DNS輪詢的方式提高SLB可用性。兩個地域都購買SLB,然后在兩個地域的SLB做DNS輪詢。
?
總結
- 上一篇: 我的世界圈服务器领地显示无效领地,我的世
- 下一篇: 那些不起眼的流量大户在做什么?(转载)