SLB技术原理
1 SLB功能介紹
SLB(Server Load Balance)服務(wù)通過(guò)設(shè)置虛擬服務(wù)地址(IP),將位于同一地域(Region)的多臺(tái)云服務(wù)器(Elastic Compute Service,簡(jiǎn)稱ECS)資源虛擬成一個(gè)高性能、高可用的應(yīng)用服務(wù)池;再根據(jù)應(yīng)用指定的方式,將來(lái)自客戶端的網(wǎng)絡(luò)請(qǐng)求分發(fā)到云服務(wù)器池中。
SLB服務(wù)會(huì)檢查云服務(wù)器池中ECS的健康狀態(tài),自動(dòng)隔離異常狀態(tài)的ECS,從而解決了單臺(tái)ECS的單點(diǎn)問(wèn)題,同時(shí)提高了應(yīng)用的整體服務(wù)能力。在標(biāo)準(zhǔn)的負(fù)載均衡功能之外,SLB服務(wù)還具備TCP與HTTP抗DDoS***的特性,增強(qiáng)了應(yīng)用服務(wù)器的防護(hù)能力。
?
SLB服務(wù)是ECS面向多機(jī)方案的一個(gè)配套服務(wù),需要同ESC結(jié)合使用。
2 SLB技術(shù)架構(gòu)
?
整個(gè)SLB系統(tǒng)由3部分構(gòu)成:四層負(fù)載均衡,七層負(fù)載均衡 和 控制系統(tǒng),如下圖所示;
四層負(fù)載均衡,采用開(kāi)源軟件LVS(linux virtual server),并根據(jù)云計(jì)算需求對(duì)其進(jìn)行了定制化;該技術(shù)已經(jīng)在阿里巴巴內(nèi)部業(yè)務(wù)全面上線應(yīng)用2年多詳見(jiàn)第3節(jié);
七層負(fù)載均衡,采用開(kāi)源軟件Tengine;該技術(shù)已經(jīng)在阿里巴巴內(nèi)部業(yè)務(wù)全面上線應(yīng)用3年多;參見(jiàn)第4節(jié);
控制系統(tǒng),用于 配置和監(jiān)控 負(fù)載均衡系統(tǒng);
?
?
3 LVS技術(shù)特點(diǎn)
?
LVS是全球最流行的四層負(fù)載均衡開(kāi)源軟件,由章文嵩博士(當(dāng)前阿里云產(chǎn)品技術(shù)負(fù)責(zé)人)在1998年5月創(chuàng)立,可以實(shí)現(xiàn)LINUX平臺(tái)下的負(fù)載均衡。
?
LVS是 基于linux netfilter框架實(shí)現(xiàn)(同iptables)的一個(gè)內(nèi)核模塊,名稱為ipvs;其鉤子函數(shù)分別HOOK在LOCAL_IN和FORWARD兩個(gè)HOOK點(diǎn),如下圖所示;
?
?
在云計(jì)算大規(guī)模網(wǎng)絡(luò)環(huán)境下,官方LVS存在如下問(wèn)題;
問(wèn)題1:LVS支持NAT/DR/TUNNEL三種轉(zhuǎn)發(fā)模式,上述模式在多vlan網(wǎng)絡(luò)環(huán)境下部署時(shí),存在網(wǎng)絡(luò)拓?fù)鋸?fù)雜,運(yùn)維成本高的問(wèn)題;
問(wèn)題2:和商用負(fù)載均衡設(shè)備(如,F5)相比,LVS缺少DDOS***防御功能;
問(wèn)題3:LVS采用PC服務(wù)器,常用keepalived軟件的VRRP心跳協(xié)議進(jìn)行主備部署,其性能無(wú)法擴(kuò)展;
問(wèn)題4:LVS常用管理軟件keepalived的配置和健康檢查性能不足;
?
為了解決上述問(wèn)題,我們?cè)诠俜絃VS基礎(chǔ)上進(jìn)行了定制化;
解決1:新增轉(zhuǎn)發(fā)模式FULLNAT,實(shí)現(xiàn)LVS-RealServer間跨vlan通訊;
解決2:新增synproxy等***TCP標(biāo)志位DDOS***防御功能,;
解決3:采用LVS集群部署方式;
解決4:優(yōu)化keepalived性能;
?
注1:ali-LVS開(kāi)源地址https://github.com/alibaba/LVS;
?
3.1 FULLNAT技術(shù)
?
FULLNAT實(shí)現(xiàn)主要思想:引入local address(內(nèi)網(wǎng)ip地址),cip-vip轉(zhuǎn)換為lip->rip,而 lip和rip均為IDC內(nèi)網(wǎng)ip,可以跨vlan通訊;
?
IN/OUT的數(shù)據(jù)流全部經(jīng)過(guò)LVS,為了保證帶寬,采用萬(wàn)兆(10G)網(wǎng)卡;
?
FULLNAT轉(zhuǎn)發(fā)模式,當(dāng)前僅支持TCP協(xié)議;
?
?
3.2 SYNPROXY技術(shù)
?
LVS針對(duì)TCP標(biāo)志位DDOS***,采取如下策略;
Synflood***,利用synproxy模塊進(jìn)行防御,如下圖所示;實(shí)現(xiàn)主要思想:參照l(shuí)inux tcp協(xié)議棧中syncookies的思想,LVS代理TCP三次握手;代理過(guò)程:client發(fā)送syn包給LVS,LVS構(gòu)造特殊seq的synack包給client,client回復(fù)ack給LVS,LVS驗(yàn)證ack包中ack_seq是否合法;如果合法,則LVS再和Realserver建立3次握手;
?
?
Ack/fin/rstflood***,查找連接表,如果不存在,則直接丟棄;
?
3.3 集群部署方式
?
LVS集群部署方式實(shí)現(xiàn)的主要思想:LVS和上聯(lián)交換機(jī)間運(yùn)行OSPF協(xié)議,上聯(lián)交換機(jī)通過(guò)ECMP等價(jià)路由,將數(shù)據(jù)流分發(fā)給LVS集群,LVS集群再轉(zhuǎn)發(fā)給業(yè)務(wù)服務(wù)器;
?
健壯性:lvs和交換機(jī)間運(yùn)行ospf心跳,1個(gè)vip配置在集群的所有LVS上,當(dāng)一臺(tái)LVS down,交換機(jī)會(huì)自動(dòng)發(fā)現(xiàn)并將其從ECMP等價(jià)路由中剔除;
?
可擴(kuò)展:如果當(dāng)前LVS集群無(wú)法支撐某個(gè)vip的流量,LVS集群可以進(jìn)行水平擴(kuò)容;
?
集群部署方式極大的保證了異常情況下,負(fù)載均衡服務(wù)的穩(wěn)定性;
?
?
3.4 keepalived優(yōu)化
?
對(duì)LVS管理軟件keepalived進(jìn)行了全面優(yōu)化;
優(yōu)化了網(wǎng)絡(luò)異步模型,select改為epoll方式;
優(yōu)化了reload過(guò)程;
?
綜上所述,四層負(fù)載均衡產(chǎn)品有如下特點(diǎn);
高可用,LVS集群保證了冗余性,無(wú)單點(diǎn);
安全,LVS自生***防御+云盾,提供了近實(shí)時(shí)防御能力;
健康檢查:對(duì)后端ECS進(jìn)行健康檢查,自動(dòng)屏蔽異常狀態(tài)的ECS,待該ECS恢復(fù)正常后自動(dòng)解除屏蔽;
?
4 Tengine技術(shù)特點(diǎn)
?
Tengine是阿里巴巴發(fā)起的web服務(wù)器項(xiàng)目,其在Nginx的基礎(chǔ)上,針對(duì)大訪問(wèn)量網(wǎng)站的需求,添加了很多高級(jí)功能和特性;Nginx是當(dāng)前最流行的7層負(fù)載均衡開(kāi)源軟件之一;
?
注:Tengine開(kāi)源地址http://tengine.taobao.org/;
?
針對(duì)云計(jì)算場(chǎng)景,tengine定制的主要特性如下;
繼承Nginx-1.4.6的所有特性,100%兼容Nginx的配置;
動(dòng)態(tài)模塊加載(DSO)支持。加入一個(gè)模塊不再需要重新編譯整個(gè)Tengine;
更加強(qiáng)大的負(fù)載均衡能力,包括一致性hash模塊、會(huì)話保持模塊,還可以對(duì)后端的服務(wù)器進(jìn)行主動(dòng)健康檢查,根據(jù)服務(wù)器狀態(tài)自動(dòng)上線下線;
監(jiān)控系統(tǒng)的負(fù)載和資源占用從而對(duì)系統(tǒng)進(jìn)行保護(hù);
顯示對(duì)運(yùn)維人員更友好的出錯(cuò)信息,便于定位出錯(cuò)機(jī)器;
更強(qiáng)大的防***(訪問(wèn)速度限制)模塊;
?
采用Tengine作為SLB的基礎(chǔ)模塊,阿里七層負(fù)載均衡產(chǎn)品有如下特點(diǎn);
高可用,Tengine集群保證了冗余性,無(wú)單點(diǎn);
安全,多維度的CC***防御能力;;
健康檢查,對(duì)后端ECS進(jìn)行健康檢查,自動(dòng)屏蔽異常狀態(tài)的ECS,待該ECS恢復(fù)正常后自動(dòng)解除屏蔽;
支持7層會(huì)話保持功能;
支持一致性hash調(diào)度;
?
5 技術(shù)展望
?
SLB作為負(fù)載均衡設(shè)備,其最重要的指標(biāo)是 穩(wěn)定性,在進(jìn)一步提高穩(wěn)定性方面,主要工作有2點(diǎn);
支持集群內(nèi)部 session同步;
采用anycast技術(shù)實(shí)現(xiàn)同城雙A;
?
同時(shí),在功能方面有更多支持;
白名單訪問(wèn)控制。從SLB層面實(shí)現(xiàn)訪問(wèn)控制,用戶可以在SLB系統(tǒng)上配置白名單,便于用戶靈活限定外部訪問(wèn)請(qǐng)求;
更多服務(wù)協(xié)議的支持。如:HTTPS、UDP等;
轉(zhuǎn)載于:https://blog.51cto.com/kevinhao/1659993
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: Android 学习笔记 Broadca
- 下一篇: 第一行代码读书笔记3+错误分析