負(fù)載均衡(Server Load Balancer)是將訪問(wèn)流量根據(jù)轉(zhuǎn)發(fā)策略分發(fā)到后端多臺(tái)云服務(wù)器(Elastic Compute Service,簡(jiǎn)稱 ECS)的流量分發(fā)控制服務(wù)。
負(fù)載均衡服務(wù)通過(guò)設(shè)置虛擬服務(wù)地址,將位于同一地域的多臺(tái)ECS實(shí)例虛擬成一個(gè)高性能、高可用的應(yīng)用服務(wù)池;再根據(jù)應(yīng)用指定的方式,將來(lái)自客戶端的網(wǎng)絡(luò)請(qǐng)求分發(fā)到云服務(wù)器池中。負(fù)載均衡服務(wù)是ECS面向多機(jī)方案的一個(gè)配套服務(wù),需要同ECS結(jié)合使用。
負(fù)載均衡服務(wù)會(huì)檢查云服務(wù)器池中ECS實(shí)例的健康狀態(tài),自動(dòng)隔離異常狀態(tài)的ECS實(shí)例,從而解決了單臺(tái)ECS實(shí)例的單點(diǎn)問(wèn)題,提高了應(yīng)用的整體服務(wù)能力。在標(biāo)準(zhǔn)的負(fù)載均衡功能之外,負(fù)載均衡服務(wù)還具備TCP與HTTP抗DDoS攻擊的特性,增強(qiáng)了應(yīng)用服務(wù)的防護(hù)能力。
負(fù)載均衡服務(wù)由負(fù)載均衡實(shí)例、監(jiān)聽(tīng)和后端服務(wù)器三個(gè)部分組成。
如果您想使用負(fù)載均衡服務(wù),必須先創(chuàng)建一個(gè)負(fù)載均衡實(shí)例。一個(gè)負(fù)載均衡實(shí)例可以添加多個(gè)監(jiān)聽(tīng)和后端服務(wù)器。
在使用負(fù)載均衡服務(wù)前,您必須為負(fù)載均衡實(shí)例添加一個(gè)監(jiān)聽(tīng),指定監(jiān)聽(tīng)規(guī)則和轉(zhuǎn)發(fā)策略,并配置健康檢查。
針對(duì)不同的需求,您可以單獨(dú)配置四層(TCP/UDP)或七層(HTTP/HTTPS)監(jiān)聽(tīng)。
一組接收前端請(qǐng)求的ECS實(shí)例。您可以單獨(dú)添加ECS實(shí)例到服務(wù)器池,也可以通過(guò)虛擬服務(wù)器組或主備服務(wù)器組來(lái)批量添加和管理。
默認(rèn)后端服務(wù)器是在實(shí)例維度上維護(hù)的,即負(fù)載均衡實(shí)例下的所有監(jiān)聽(tīng)都只能夠?qū)⒄?qǐng)求轉(zhuǎn)發(fā)到相同ECS實(shí)例的相同端口上。虛擬服務(wù)器組功能實(shí)現(xiàn)了監(jiān)聽(tīng)維度的轉(zhuǎn)發(fā)。您可以針對(duì)不同的監(jiān)聽(tīng)創(chuàng)建不同的虛擬服務(wù)器組,即負(fù)載均衡實(shí)例中的不同監(jiān)聽(tīng)可以將請(qǐng)求轉(zhuǎn)發(fā)到不同端口的后端服務(wù)器上。
此外,七層負(fù)載均衡服務(wù)支持域名、URL轉(zhuǎn)發(fā)策略,可以將來(lái)自不同域名或者URL的請(qǐng)求轉(zhuǎn)發(fā)給不同的后端服務(wù)器處理。
負(fù)載均衡(SLB)使用最佳實(shí)踐 :
https://yq.aliyun.com/articles/80055?spm=5176.100240.searchblog.26.3bIToO
負(fù)載均衡(阿里云幫助與文檔):
https://help.aliyun.com/product/27537.html?spm=5176.doc27544.3.1.BZgTjy
基礎(chǔ)架構(gòu):
https://help.aliyun.com/document_detail/27544.html?spm=5176.7739444.6.540.BHXBo1
技術(shù)原理:
https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.100239.blogcont80055.19.2Yh1bP
健康檢查原理:
https://help.aliyun.com/knowledge_detail/39455.html?spm=5176.100239.blogcont80055.20.2Yh1bP
網(wǎng)絡(luò)流量說(shuō)明:
https://help.aliyun.com/knowledge_detail/39440.html?spm=5176.100239.blogcont80055.21.2Yh1bP
高可用概要說(shuō)明:
https://help.aliyun.com/knowledge_detail/39449.html?spm=5176.100239.blogcont80055.22.2Yh1bP
關(guān)鍵點(diǎn):
基礎(chǔ)架構(gòu)及入網(wǎng)流量圖,數(shù)據(jù)包走向
支持 TCP/UDP(4 層) 和 HTTP/HTTPS(7 層) 這 4 種協(xié)議
負(fù)載均衡采用集群部署,可實(shí)現(xiàn)會(huì)話同步,以消除服務(wù)器單點(diǎn),提升冗余,保證服務(wù)穩(wěn)定。阿里云當(dāng)前提供4層(TCP協(xié)議和UDP協(xié)議)和7層(HTTP和HTTPS協(xié)議)的負(fù)載均衡服務(wù)。
4 層采用開(kāi)源軟件 LVS(Linux Virtual Server)+ keep alived 的方式實(shí)現(xiàn)負(fù)載均衡,并根據(jù)云計(jì)算需求對(duì)其進(jìn)行了定制化。
7 層采用 Tengine 實(shí)現(xiàn)負(fù)載均衡。Tengine 是由淘寶網(wǎng)發(fā)起的 Web 服務(wù)器項(xiàng)目,它在 Nginx 的基礎(chǔ)上,針對(duì)大訪問(wèn)量網(wǎng)站的需求,添加了很多高級(jí)功能和特性。
如下圖所示,各個(gè)地域的四層負(fù)載均衡實(shí)際上是由多臺(tái) LVS 機(jī)器部署成一個(gè) LVS 集群來(lái)運(yùn)行的,采用集群部署模式極大的保證了異常情況下負(fù)載均衡服務(wù)的可用性、穩(wěn)定性與可擴(kuò)展性。
對(duì)于入網(wǎng)流量,負(fù)載均衡會(huì)根據(jù)用戶在控制臺(tái)或API上配置的轉(zhuǎn)發(fā)策略,對(duì)來(lái)自前端的訪問(wèn)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)和處理。數(shù)據(jù)流轉(zhuǎn)如下圖所示。
云服務(wù)器(Elastic Compute Service,簡(jiǎn)稱 ECS)是一種簡(jiǎn)單高效、處理能力可彈性伸縮的計(jì)算服務(wù)
客戶端訪問(wèn)負(fù)載均衡實(shí)例IP地址時(shí),相關(guān)請(qǐng)求由負(fù)載均衡實(shí)例對(duì)應(yīng)的LVS集群處理。
LVS集群內(nèi)的每一臺(tái)節(jié)點(diǎn)服務(wù)器均分來(lái)自前端的請(qǐng)求。
如果相應(yīng)的負(fù)載均衡實(shí)例服務(wù)端口使用的是四層協(xié)議(TCP或UDP),那么LVS集群內(nèi)每個(gè)節(jié)點(diǎn)都會(huì)根據(jù)負(fù)載均衡實(shí)例負(fù)載均衡策略,將其承載的服務(wù)請(qǐng)求按策略直接分發(fā)到后端ECS服務(wù)器,并同時(shí)維護(hù)會(huì)話保持等特性。
如果相應(yīng)的負(fù)載均衡實(shí)例服務(wù)端口使用的是七層HTTP協(xié)議,那么LVS集群內(nèi)每個(gè)節(jié)點(diǎn)會(huì)先將其承載的服務(wù)請(qǐng)求均分到Tengine集群;而后,Tengine集群內(nèi)的每個(gè)節(jié)點(diǎn)再根據(jù)負(fù)載均衡策略,將服務(wù)請(qǐng)求按策略最終分發(fā)到后端ECS服務(wù)器,并同時(shí)維護(hù)會(huì)話保持等特性。
如果相應(yīng)的負(fù)載均衡實(shí)例服務(wù)端口使用的是七層HTTPS協(xié)議,與上述HTTP處理過(guò)程類似,差別是在按策略將服務(wù)請(qǐng)求最終分發(fā)到后端ECS服務(wù)器前,會(huì)先調(diào)用Key Server進(jìn)行證書(shū)驗(yàn)證及數(shù)據(jù)包解密等前置操作。
負(fù)載均衡實(shí)例服務(wù)端口:多個(gè)端口,不同端口使用不同協(xié)議?按數(shù)據(jù)包協(xié)議類型分發(fā)?
負(fù)載均衡和后端ECS之間是通過(guò)內(nèi)網(wǎng)進(jìn)行通信的,所以,正常情況下,負(fù)載均衡后端ECS無(wú)需配置外網(wǎng)帶寬。如果用戶業(yè)務(wù)有同時(shí)通過(guò)后端ECS對(duì)外提供服務(wù),或后端ECS有訪問(wèn)外網(wǎng)的需求, 那么,在后端ECS購(gòu)買(mǎi)了公網(wǎng)帶寬后,后端ECS的出網(wǎng)流量路徑有所不同。
整個(gè)負(fù)載均衡系統(tǒng)由三部分構(gòu)成:四層負(fù)載均衡、七層負(fù)載均衡和控制系統(tǒng)。
采用開(kāi)源軟件LVS(Linux Virtual Server)構(gòu)建,并根據(jù)云計(jì)算需求對(duì)其進(jìn)行了定制和優(yōu)化。
采用開(kāi)源軟件Tengine構(gòu)建。
用于配置和監(jiān)控負(fù)載均衡系統(tǒng)。
四層負(fù)載均衡 VS 七層負(fù)載均衡:https://yq.aliyun.com/articles/24248
權(quán)重代表相應(yīng)服務(wù)器所承載的業(yè)務(wù)的相對(duì)占比,而非絕對(duì)值。當(dāng)前 SLB 支持 3 種轉(zhuǎn)發(fā)策略,其使用場(chǎng)景及要點(diǎn)如下:
轉(zhuǎn)發(fā)策略 算法說(shuō)明 使用要點(diǎn)
示例:假設(shè)有 100 個(gè)新增連接,則在不同的調(diào)度算法下,不同服務(wù)器的分配連接數(shù)示意如下:
誤區(qū): SLB 的 VIP 能 ping 通就說(shuō)明配置是正常的
用戶通過(guò) ping SLB 的 VIP 地址來(lái)判斷 SLB 服務(wù)的有效性。
其實(shí),這種測(cè)試非常不可靠。因?yàn)?ping 響應(yīng)是由 SLB 服務(wù)端直接完成的,與后端 ECS 無(wú)關(guān)。所以,正常情況下:
只要配置了任意監(jiān)聽(tīng),即便相應(yīng)監(jiān)聽(tīng)處于異常狀態(tài),SLB VIP ping 也是正常的。
相反,如果 SLB 沒(méi)有配置任何監(jiān)聽(tīng),其 VIP 是 ping 不通的。
建議:對(duì)于 4 層服務(wù), ;對(duì)于 7 層服務(wù),通過(guò)實(shí)際的業(yè)務(wù)訪問(wèn)進(jìn)行可用性測(cè)試。
技術(shù)限制:https://yq.aliyun.com/articles/80055?spm=5176.100240.searchblog.26.3bIToO
SLB 在技術(shù)層面還在逐步增強(qiáng)和完善,截止本文發(fā)稿,還存在如下技術(shù)限制:
在 4 層(TCP 協(xié)議)服務(wù)中,不支持添加進(jìn)后端云服務(wù)器池的 ECS 既作為 Real Server,又作為客戶端向所在的 SLB 實(shí)例發(fā)送請(qǐng)求。因?yàn)椋祷氐臄?shù)據(jù)包只在云服務(wù)器內(nèi)部轉(zhuǎn)發(fā),不經(jīng)過(guò)負(fù)載均衡,所以通過(guò)配置在 SLB 后端的 ECS 去訪問(wèn)其 VIP 是不通的。
僅支持 TCP/UDP(4 層) 和 HTTP/HTTPS(7 層) 這 4 種協(xié)議。
后端服務(wù)器僅支持 ECS,不支持第三方云服務(wù)器。
僅支持輪詢(RR)、加權(quán)輪詢(WRR)和最小加權(quán)連接數(shù)(WLC)這 3 中調(diào)度算法。
不支持 7 層 SSL Session 超時(shí)時(shí)間的調(diào)整。當(dāng)前全局統(tǒng)一為 300s。
不支持 7 層 HTTP Keep-alive 超時(shí)時(shí)間的調(diào)整。當(dāng)前配置為 15s。
說(shuō)明:如果客戶端訪問(wèn) SLB HTTP 監(jiān)聽(tīng)時(shí)使用長(zhǎng)連接, 那么這條連接最長(zhǎng)的空閑時(shí)間為 15 秒, 即如果超過(guò) 15 秒沒(méi)有發(fā)送任何 HTTP 請(qǐng)求, 這條連接將會(huì)被 SLB 主動(dòng)斷開(kāi)。如果您的業(yè)務(wù)可能會(huì)出現(xiàn)超過(guò) 15 秒的空閑, 需要從業(yè)務(wù)層面檢測(cè)連接的斷開(kāi)并重新發(fā)起連接。
不支持轉(zhuǎn)發(fā)超時(shí)時(shí)間的調(diào)整:
當(dāng)前配置: TCP 900s,UDP 300s,HTTP 60s,HTTPS 60s
上述配置是指 SLB 服務(wù)端從后端接收數(shù)據(jù)并進(jìn)行轉(zhuǎn)發(fā)的超時(shí)時(shí)間,并非健康檢查超時(shí)時(shí)間間隔。如果超時(shí),通常會(huì)向客戶端返回 504 錯(cuò)誤碼。
金融云 SLB 基于安全性考慮,僅允許開(kāi)放特定的端口:80,443,2800-3300,6000-10000,13000-14000
健康檢查:https://help.aliyun.com/knowledge_detail/39455.html?spm=5176.100239.blogcont80055.20.2Yh1bP
負(fù)載均衡通過(guò)健康檢查來(lái)判斷后端ECS的業(yè)務(wù)可用性。開(kāi)啟健康檢查功能后,當(dāng)后端某臺(tái)ECS健康檢查出現(xiàn)異常時(shí),負(fù)載均衡會(huì)自動(dòng)將新的請(qǐng)求分發(fā)到其它健康檢查正常的ECS上;而當(dāng)該ECS恢復(fù)正常運(yùn)行時(shí),負(fù)載均衡會(huì)將其自動(dòng)恢復(fù)到對(duì)外或?qū)?nèi)的服務(wù)中。
負(fù)載均衡健康檢查機(jī)制提高了前端業(yè)務(wù)整體可用性,避免了后端ECS異常對(duì)總體服務(wù)的影響。
聯(lián)系客服