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