九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
LVS在大規(guī)模網(wǎng)絡(luò)環(huán)境中的應(yīng)用

1、 SLB總體架構(gòu)

LVS本身是開源的,我們對它進(jìn)行了多方面的改進(jìn),并且也已開源-https://github.com/alibaba/LVS。


接下來我們看一下LVS在整個SLB中的位置在哪里,整個圖是SLB的架構(gòu)圖。SLB功能比較簡單,主要是做負(fù)載均衡,最主要兩個模塊,一個是四層的負(fù)載均衡-LVS,還有七層的負(fù)載均-tengine,兩個軟件都是開源的;后端掛的是ECS。

一般來說,一個業(yè)務(wù)部署在兩臺或者兩臺以上的ECS-VM上面,建議大家選用SLB做負(fù)載均衡。

無論是LVS-四層也好,Tengine七層也好,我們負(fù)載均衡都是集群,都會有冗余的,一臺宕機(jī)了對用戶來說沒有影響。SLB在杭州region內(nèi)也有很多IDC-數(shù)據(jù)中心,同一個VIP可以在IDC1和IDC2,一旦IDC1宕了就切換到IDC2,即實現(xiàn)IDC間的冗余。對可靠性要求特別高的業(yè)務(wù),建議在ECS兩個可用區(qū)里部署VM,這樣一個IDC宕了也會有冗余。

另外還有我們SLB整個可用性為5個9,為什么我們做IDC冗余,據(jù)說國外最好數(shù)據(jù)中心的可用性是5個9,SLB位于數(shù)據(jù)中心中,必須靠數(shù)據(jù)中心之間的冗余做到5個9。

2、 LVS歷史

LVS是章文嵩博士1998年做的,LVS是Linux虛擬服務(wù)器的簡稱;

章文嵩當(dāng)前是阿里云技術(shù)負(fù)責(zé)人。

3、本次LVS分享主要內(nèi)容

本次分享的內(nèi)容如下:為什么引入LVS?在大規(guī)模網(wǎng)絡(luò)下用的時候存在哪些問題?針對這些問題,我們做了一些改進(jìn):FULLNAT,SYNPROXY,集群部署;接下來,介紹LVS性能優(yōu)化的一些技術(shù),這些技術(shù)不僅僅用在LVS,大家可以用在你們自己網(wǎng)絡(luò)業(yè)務(wù)里面;最后介紹一下我們接下來LVS做哪些事情。

4、 LVS-why

比如說,一個用戶訪問淘寶網(wǎng)站,淘寶網(wǎng)前端共有5臺apache服務(wù)器,如何決定訪問哪一臺apache?常用的方式是用DNS做負(fù)載均衡,將5臺apache服務(wù)器的ip地址添加到域名www.taobao.com中。

但DNS有一些缺點(diǎn),第一個缺點(diǎn):例如第二臺apache宕了,運(yùn)維趕緊把DNS中該apache的ip地址刪除掉,但 很多地方的local DNS不一定遵守TTL協(xié)議,這樣刪除操作什么時候生效,你根本不可控的;尤其移動網(wǎng)絡(luò)中,這個問題更突出,我記得10年時移動網(wǎng)絡(luò)部分地區(qū)local DNS一天才更新。

第二個缺點(diǎn):服務(wù)調(diào)度算法只支持WRR。如果你用戶范圍很有限,就會有負(fù)載不均衡的問題。第三個缺點(diǎn):攻擊防御能力很弱,每次有攻擊靠一臺機(jī)器抗。

針對DNS的不足,引入了Virtual Server的概念,即最前端有一個入口設(shè)備把流量均衡到后端的apache上去;無論是LVS軟負(fù)載 還是 F5硬負(fù)載均衡 也都是這種概念。

5、LVS-what

LVS的基本概念,是4層load balance,這個4層對于著OSI網(wǎng)絡(luò)模型中的傳輸層,需要用到端口信息。

LVS支持WRR、WLC等調(diào)度算法;WRR是帶權(quán)重的輪詢;WLC是帶權(quán)重的最小連接調(diào)度策略,即將請求往最少連接的后端服務(wù)器上調(diào)。

LVS支持3種工作模式:NAT、DR、TUNNEL,這幾種模式跟你IDC網(wǎng)絡(luò)部署方式有關(guān)系的。

傳輸協(xié)議支持TCP、UDP兩種。

第一種是NAT模式,進(jìn)來和出去的數(shù)據(jù)流都是經(jīng)過LVS設(shè)備。進(jìn)來的時候把目的IP改成實際后端服務(wù)器的IP-DNAT,出去的時候則做SNAT。一般買的F5等商用設(shè)備,都采用NAT模式,因為NAT模式可以防DDOS攻擊,該攻擊防御功能依賴于進(jìn)出數(shù)據(jù)都通過設(shè)備。

第二種是TUNNEL,這個是進(jìn)的流量經(jīng)過LVS,出去的時候不經(jīng)過了。TUNNEL是在原來IP頭部再新增封裝一個IP。據(jù)說,騰訊采用IP隧道的模式;TUNNEL模式的最大問題是 每個數(shù)據(jù)包都需要增加一個IP頭部,如果收到的數(shù)據(jù)包是已經(jīng)達(dá)到以太網(wǎng)幀最大長度1.5K,IP頭就添不進(jìn)去。這時候常用做法是會回一個因MTU導(dǎo)致目的不可達(dá)的ICMP包給客戶端,客戶端如果支持PMTU的話,就會把大包分成小包發(fā)過來。

解決上述問題的一個辦法是 交換機(jī)開啟巨幀。另一個方法是將后端服務(wù)器上的MSS改小,我一個IP頭是20個字節(jié),默認(rèn)MSS是1460,將其改成1440可不可以?可以,大部分用戶可以正常支持,但是總會存在百萬份之幾,它不支持的標(biāo)準(zhǔn)MSS協(xié)商協(xié)議,你即使將MSS調(diào)的很小,但是客戶端還是會發(fā)一個大包出來。

第三種是DR,DR的性能是所有模式中最高的,它只需要修改目的MAC;但部署上必須要求LVS和后端服務(wù)器在同一個VLAN中。

DR非常適合小規(guī)模網(wǎng)絡(luò),比如,阿里的CDN都是用的DR模式,幾十臺服務(wù)器的規(guī)模,特別適合DR這種高效的模式;因此,如果你業(yè)務(wù)規(guī)模比較小的話,建議采用DR。


6、LVS-應(yīng)用

前面我們講了LVS基本的特征。LVS本身只是一個內(nèi)核模塊:IP_VS,這個模塊是做負(fù)載均衡,你只用這個模塊來做工程應(yīng)用是遠(yuǎn)遠(yuǎn)不夠的。比如,一臺RealServer宕機(jī)了怎么辦?LVS本身宕機(jī)了著呢麼辦?

針對上述問題,我們需要有輔助軟件幫我們管理LVS,一般現(xiàn)在常用的是Keepalived;keepalived支持健康檢測,4層和7層健康檢檢測,以解決RealServer宕機(jī)問題。

另外,keepalived支持VRRP心跳協(xié)議,可以實現(xiàn)LVS主備冗余,以解決LVS本身單點(diǎn)故障。

最后,keepalived支持配置文件的方式來管理LVS;

完成了上述工作,我們還缺少一個監(jiān)控-服務(wù)運(yùn)行怎么樣,流量怎么樣,CPU負(fù)載怎么樣?大部分公司都有自己一套監(jiān)控系統(tǒng),LVS監(jiān)控基本上都是集成到自己監(jiān)控系統(tǒng)里面去。當(dāng)然也可以用開源的組件,比如,SNMP Patch-可以跟傳統(tǒng)網(wǎng)絡(luò)一樣接口獲得LVS的信息。

該圖是我講到CDN網(wǎng)絡(luò)拓?fù)?,LVS兩臺實現(xiàn)主備冗余,同時對后端RealServer做Healthchech。

7、 LVS-問題 & 解決

前面介紹了官方LVS的一些基礎(chǔ)知識;

但在大規(guī)模的網(wǎng)絡(luò)下,在淘寶的業(yè)務(wù)中,官方LVS滿足不了需求;原因有3點(diǎn),

1) 剛才講三種轉(zhuǎn)發(fā)模式,部署成本比較高;

2) 和商用的負(fù)載均衡比,LVS沒有DDOS防御攻擊功能;

3) 主備部署模式,性能無法擴(kuò)展;一個VIP下的流量特別大怎么辦?

第一點(diǎn)- LVS轉(zhuǎn)發(fā)模式的不足,下面來展開描述一下;

DR的不足:必須要求LVS跟后端所有的REPLY放在同一個VLAN里。當(dāng)然有人會提出來分幾個區(qū),每個區(qū)布一個LVS,但一個區(qū)VM資源沒有了,就只能用其它區(qū)的VM,而用戶需要這些VM掛到同一個VIP下,這是無法實現(xiàn)的。

NAT的不足:NAT最主要問題就是你配置處理很復(fù)雜;阿里原來買的商業(yè)設(shè)備的時候,需要在交換機(jī)上配策略路由,OUT方向的策略路由;因為,冗余考慮會部署多套負(fù)載均衡,走默認(rèn)路由只能到達(dá)一套負(fù)載均衡。

TUNNEL的不足:隧道的問題也是配置較復(fù)雜,RealServer需要加載一個IPIP模塊,同時做一些配置。

針對上述問題,我們的解決方法如下:

  • LVS各轉(zhuǎn)發(fā)模式運(yùn)維成本高

    • 新轉(zhuǎn)發(fā)模式FULLNAT:實現(xiàn)LVS-RealServer間跨vlan通訊,并且in/out流都經(jīng)過LVS;

  • 缺少攻擊防御模塊

    • SYNPROXY:synflood攻擊防御模塊

    • 其它TCP FLAG DDOS攻擊防御策略

  • 性能無法線性擴(kuò)展

    • Cluster部署模式

下面我們分別介紹上述解決方法;

8、LVS-FULLNAT轉(zhuǎn)發(fā)模式

下面講講FullNAT,F(xiàn)ULLNAT轉(zhuǎn)發(fā)數(shù)據(jù)包是類似NAT模式,IN和OUT數(shù)據(jù)包都是經(jīng)過LVS;唯一的區(qū)別:后端RealServer 或者 交換機(jī) 不需要做任何配置。

FULLNAT的主要原理是引入local address(內(nèi)網(wǎng)ip地址),cip-vip轉(zhuǎn)換為lip->rip,而 lip和rip均為IDC內(nèi)網(wǎng)ip,可以跨vlan通訊;

下面從IP地址轉(zhuǎn)換的角度看一下,NAT和FULLNAT的區(qū)別;

如圖所示,相比NAT模式,F(xiàn)ullNAT多了一個Local IP,IP地址轉(zhuǎn)換時,源和目的IP都改了,即SNAT+DNAT。

FULLNAT模式下,ipvs在NETFLITER框架的HOOK點(diǎn)也發(fā)生了變化;


這個圖就是內(nèi)核NETFILTER的五個HOOK點(diǎn);原來傳統(tǒng)的NAT模式,在LOCAL_IN和FORWARD兩個點(diǎn),而FullNAT模式下,IN/OUT方向的目的IP都是LVS上的IP,因此,只能在LOCAL_IN這個點(diǎn)。

相比NAT,session表管理也發(fā)生了變化,有1個索引表,變成了IN和OUT 2個; 這是因為NAT模式只需要用client address作為hash key,而FULLNAT只能用5元組;

FULLNAT一個最大的問題是:RealServer無法獲得用戶IP;為了解決這個問題我們提出了TOA的概念,主要原理是:將client address放到了TCP Option里面帶給后端RealServer,RealServer上通過toa內(nèi)核模塊hack了getname函數(shù),給用戶態(tài)返回TCP Option中的client ip。

題外話,全球最大CDN廠商阿克曼也用了TCP Option攜帶附屬信息;

下面來介紹一下FULLNAT開發(fā)時,遇到的幾個坑,這幾個坑對Linux網(wǎng)絡(luò)應(yīng)用開發(fā)也是有用的;比如,Realserver kernel開啟tcp_tw_recycle,該參數(shù)開啟會導(dǎo)致部分NAT網(wǎng)關(guān)出來的用戶訪問失??;

9、LVS-SYNPROXY

LVS可以防御DDOS 4層標(biāo)志位攻擊,其中,synproxy是用于防御synflood攻擊的模塊;

Synproxy實現(xiàn)的主要原理:參照linux tcp協(xié)議棧中syncookies的思想,LVS-構(gòu)造特殊seq的synack包,驗證ack包中ack_seq是否合法-實現(xiàn)了TCP三次握手代理;

簡化一點(diǎn)說,就是client和LVS間建立3次握手,成功后,LVS再和RS建立3次握手;

10、LVS-集群

前面我們介紹了引入一種新的模式叫做FullNAT,方便大家部署,下面我們可以有集群部署模式做橫向擴(kuò)展。

誰把流量均衡的分到各臺LVS上-交換機(jī),LVS和交換機(jī)間運(yùn)行OSPF協(xié)議,交換機(jī)上生成該VIP的等價路由-ECMP;

另外,這種部署方式很多地方可以用,比如說DNS,域名系統(tǒng)我們每個公司都需要,部署DNS系統(tǒng)的時候,不建議再去加一層LVS,而是DNS服務(wù)器直接和交換機(jī)跑OSPF協(xié)議。

交換機(jī)ECMP有一個問題:當(dāng)前是不支持一致性哈希算法;比如,三臺LVS有一臺宕了,等價路由變成兩條,你數(shù)據(jù)包全都亂掉了。像思科的交換機(jī)芯片它也支持了類似一致性hash的算法,但具有該功能的交換機(jī)還沒有產(chǎn)品化出來;因此,我們不得不在各臺LVS做session同步,即把連接表做成全局的,這樣即使有一臺LVS宕了也沒有關(guān)系,因為表是全局的,這樣請求過來其它LVS還可以正確地往后轉(zhuǎn)發(fā)。

注:當(dāng)前FullNAT模式?jīng)]法支持同步的。

11、LVS-性能優(yōu)化

這些性能優(yōu)化方法對大家網(wǎng)絡(luò)服務(wù)也是有用的。

第一點(diǎn),多隊列網(wǎng)卡,即一個隊列綁定到一個CPU核上,讓多核同時處理網(wǎng)絡(luò)數(shù)據(jù)包。如果網(wǎng)卡不支持多隊列,可以用google提供的軟多隊列-RPS,linux內(nèi)核默認(rèn)已經(jīng)集成;

第二,對keepalived進(jìn)行了優(yōu)化,主要將網(wǎng)絡(luò)模式從select改為了epool。

第三,大家如果自己買的服務(wù)器的話,建議把網(wǎng)卡LRO、GRO功能關(guān)掉,尤其是broadcom的網(wǎng)卡,我們踩過很多坑。

12、 LVS-todo list

接下來我介紹一下我們下一步要做的事情。

我們接下來重點(diǎn)在:控制系統(tǒng);LVS在五六月份的時候出現(xiàn)一系列的故障,很不穩(wěn)定,其實不是LVS,也不是Tengine,而是控制系統(tǒng)的問題;我們第一步將控制系統(tǒng)做了精簡,將用戶操作邏輯和運(yùn)維邏輯進(jìn)行了分離;下一步重點(diǎn)是提高控制系統(tǒng)性能。

功能上,我們會支持UDP和HTTPS。

還有Session同步,F(xiàn)ullNAT情況下很難支持Session同步的,這個問題我們也會解決。

后面性能我們也在嘗試英特40G的網(wǎng)卡,我們也在評測看看。

我們未來如果做的可以的話,我們希望把4層7層做到一個里面去。

原文地址:http://blog.aliyun.com/1750 (有視頻)


推薦活動

2015 歲末的北京,中國技術(shù)架構(gòu)與運(yùn)維界的“風(fēng)云際會”即將來臨,你不想來看看嗎? 參會請識別下圖二維碼,或閱讀原文



本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
20 張圖讓你徹底掌握負(fù)載均衡的秘密!
如何編寫LVS對Real Server的健康狀態(tài)檢測腳本
LVS性能調(diào)優(yōu)
借助LVS+Keepalived實現(xiàn)負(fù)載均衡
給高并發(fā)降溫,美團(tuán)高性能、高可靠四層負(fù)載均衡MGW優(yōu)化實踐
論文:Linux集群系統(tǒng)研究
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服