[導(dǎo)讀] 前言今天我們來(lái)深度解密一下負(fù)載均衡器LVS的秘密,相信大家看了你管這破玩意兒叫負(fù)載均衡?這篇文章后,還是有不少疑問(wèn),比如LVS看起來(lái)只有類似路由器的轉(zhuǎn)發(fā)功能,為啥說(shuō)它是四層(傳輸層)負(fù)載均衡器呢,今天我們就來(lái)逐漸揭開(kāi)LVS的迷霧,本文將會(huì)用圖解的方式淺入深地探討LVS的工作機(jī)制最...
前言 今天我們來(lái)深度解密一下負(fù)載均衡 器 LVS 的秘密,相信大家看了 你管這破玩意兒叫負(fù)載均衡? 這篇文章后,還是有不少疑問(wèn),比如 LVS 看起來(lái)只有類似路由器的轉(zhuǎn)發(fā)功能,為啥說(shuō)它是四層(傳輸層)負(fù)載均衡器呢,今天我們就來(lái)逐漸揭開(kāi) LVS 的迷霧,本文將會(huì)用圖解的方式淺入深地探討 LVS 的工作機(jī)制 最好大家對(duì)網(wǎng)絡(luò)是如何連接的,數(shù)據(jù)包的收發(fā)機(jī)制有所了解,這樣會(huì)很容易理解本文的知識(shí)點(diǎn),如果對(duì)此沒(méi)概念,建議大家看看 這篇文章 ,把網(wǎng)絡(luò)是如何連接的給你安排得明明白白 沒(méi)看過(guò)也沒(méi)關(guān)系,本文會(huì)對(duì)一些必要的知識(shí)點(diǎn)做些鋪墊,爭(zhēng)取讓大家都能看懂 負(fù)載均衡器的誕生 在很長(zhǎng)一段時(shí)間內(nèi)小章公司的 DAU(日活)不超過(guò) 10,所以他只部署了一臺(tái)機(jī)器,畢竟多一臺(tái)機(jī)器要加錢(qián),而且就算掛了也影響不了幾個(gè)用戶 但無(wú)意間小章的業(yè)務(wù)踩中了風(fēng)口,業(yè)務(wù)量暴漲,dau 達(dá)到了好幾萬(wàn),眼看就要突破十萬(wàn),小章慌了,趕緊全面升級(jí)了這臺(tái)機(jī)器的內(nèi)存,CPU 等配置,暫時(shí)扛過(guò)去了,但小章明白,單機(jī)性能無(wú)論怎么升都會(huì)遇到瓶頸,所以小章想了個(gè)辦法,多部署幾臺(tái)機(jī)器,將流量平均分配到這幾臺(tái)機(jī)器上 怎么分配呢,最簡(jiǎn)單的方式,當(dāng)然是用 DNS 負(fù)載均衡,在域名解析服務(wù)器上設(shè)置負(fù)載均衡策略,讓流量隨機(jī)打到其中某臺(tái)機(jī)器上 但這個(gè)方案有以下兩個(gè)明顯的問(wèn)題: 占用過(guò)多公網(wǎng) IP,要知道現(xiàn)在租一個(gè)公網(wǎng) IP 可是要好幾千 DNS 緩存可能會(huì)引起致命故障 第一個(gè)問(wèn)題加錢(qián)就能解決,但第二個(gè)問(wèn)題可不是加錢(qián)就能解決的了,因?yàn)楸娝苤?DNS 解析是迭代或遞歸查詢,需要經(jīng)過(guò)? 根 DNS 服務(wù)器
?-> 頂級(jí)DNS服務(wù)器
-> 權(quán)威DNS服務(wù)器
這三步查找才能解析到域名對(duì)應(yīng)的 ip,可想可知這個(gè)解析是有多么耗時(shí),所以一般會(huì)有?DNS 緩存 ,DNS 緩存主要有「瀏覽器緩存」,「操作系統(tǒng)緩存」,「路由器緩存」,「ISP 緩存」四種 每次發(fā)起一個(gè)域名解析請(qǐng)求,都會(huì)依次在以上四個(gè)緩存里查找,如果命中緩存,則直接返回此域名對(duì)應(yīng)的 IP,其中像 Chrome 緩存 1 分鐘, ISP 緩存可能高達(dá) 1~2 個(gè)小時(shí),于是問(wèn)題就來(lái)了,如果某臺(tái)機(jī)器宕機(jī),但由于以上四個(gè)緩存中依然可能會(huì)有此域名的 IP 緩存,對(duì)請(qǐng)求方而言,是感知不到的,那么只要緩存未過(guò)期請(qǐng)求方就會(huì)持續(xù)地將將流量打到這臺(tái)掛掉的機(jī)器,引起線上故障,這當(dāng)然是不能容忍的。 那該怎么辦呢,小章突然想起了計(jì)算機(jī)界的一個(gè)經(jīng)典名言:「沒(méi)有什么是加一層解決不了的問(wèn)題,如果有,那就再多加一層」,何不在 DNS 與 server 間多加一層,負(fù)載均衡的工作讓這個(gè)中間層來(lái)做,小章想了下腦海中浮現(xiàn)出了以下架構(gòu)圖 可以看到這個(gè)負(fù)載均衡器(以下簡(jiǎn)稱 LB)有以下特點(diǎn) 對(duì)外用公網(wǎng) ip(以下我們簡(jiǎn)稱 VIP) 承接所有流量,對(duì)內(nèi)則與真實(shí)的服務(wù)器(即 Real Server,以下簡(jiǎn)稱 RS)通信,與 RS 在同一個(gè)內(nèi)網(wǎng)里 LB 只負(fù)載轉(zhuǎn)發(fā)請(qǐng)求的工作,實(shí)際的處理邏輯交由其背后的 RS,RS 處理完后將響應(yīng)包發(fā)給 LB,然后 LB 再返回給 client 于是網(wǎng)絡(luò)拓?fù)鋱D改進(jìn)如下 NAT 接下來(lái)的重點(diǎn)就是 LB 是如何工作的了,首先要明白,當(dāng)我們說(shuō)收到一個(gè)請(qǐng)求時(shí),實(shí)際上收到的是一個(gè)數(shù)據(jù)包,那么這個(gè)數(shù)據(jù)包長(zhǎng)啥樣呢 源IP
, 目的IP
, 源端口
, 目的端口
,簡(jiǎn)稱 TCP 四元組,四元組唯一確定一條鏈接 ,在傳輸過(guò)程中四元組是不會(huì)變的,現(xiàn)在 LB 收到這個(gè)數(shù)據(jù)包之后,想將其轉(zhuǎn)發(fā)給其背后的服務(wù)器,就要把目的 IP 改成服務(wù)器的 IP(假設(shè)為第二臺(tái)機(jī)器,其 IP 地址為 192.168.0.3),那么修改后的數(shù)據(jù)包如下 當(dāng) RS 處理好后,由于這個(gè)數(shù)據(jù)包還要經(jīng)過(guò) LB 再轉(zhuǎn)發(fā)給客戶端,所以服務(wù)器的網(wǎng)關(guān)要設(shè)置為 LB 的內(nèi)網(wǎng) IP(即 192.168.0.1)再將數(shù)據(jù)包出去,LB 就能收到所有的響應(yīng)數(shù)據(jù)包了。 此時(shí)的數(shù)據(jù)包如下 為什么 RS 的響應(yīng)包要經(jīng)過(guò) LB 呢,因?yàn)闉榱吮WC四元組不變,LB 收到數(shù)據(jù)包后要將源 IP 改為 VIP,客戶端才會(huì)識(shí)別到這是對(duì)之前請(qǐng)求的正確響應(yīng) 畫(huà)外音:客戶端請(qǐng)求與響應(yīng)包的四元組不能變 修改后的數(shù)據(jù)包 所以總結(jié)一下 LB 的主要工作機(jī)制:主要是修改了進(jìn)出數(shù)據(jù)包的 IP,首先修改目的 IP 為其 RS 的 IP,將包傳給 RS 處理,RS 處理完后再將包發(fā)給網(wǎng)關(guān)(LB),LB 再修改源 IP 為其出口的 VIP,只要四元組不變,那么客戶端就能正常地收到其請(qǐng)求的響應(yīng) ,為了讓大家更直觀地感受負(fù)載均衡的對(duì) IP 的修改,我做了一張動(dòng)圖,相信大家看了理解會(huì)更深刻 從客戶端的角度來(lái)看,它以為其與 LB 背后的 RS 通信,但實(shí)際上它只是與 LB 通信,LB 只是起到了一個(gè)虛擬服務(wù)器的作用,所以我們給它命名為 LVS(Linux Virtual Server),LVS 只是起到了修改 IP 地址并且轉(zhuǎn)發(fā)數(shù)據(jù)包的功能而已,由于它在數(shù)據(jù)包的進(jìn)出過(guò)程中都修改了 IP 地址,我們稱這模式為 NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換) 模式,可以看到這種工作模式下,網(wǎng)絡(luò)請(qǐng)求包和網(wǎng)絡(luò)響應(yīng)包都要經(jīng)過(guò) LVS 看到這問(wèn)題似乎已經(jīng)完美解決了,但是我們忽略了一個(gè)問(wèn)題:每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包都是有大小限制的 。如下圖示,在每個(gè)數(shù)據(jù)包中,每個(gè) payload(一般為應(yīng)用層數(shù)據(jù))大小一般不能超過(guò) 1460 byte 也就是說(shuō)如果在客戶端的請(qǐng)求數(shù)據(jù)(比如 HTTP 請(qǐng)求過(guò)大)超過(guò)了 1460 個(gè)字節(jié),就要分包傳,服務(wù)端收到所有分包后再組裝成完整的應(yīng)用層數(shù)據(jù),那么顯然,LVS 應(yīng)該把同一個(gè)請(qǐng)求(即四元組相同)的分包轉(zhuǎn)發(fā)給同一個(gè) RS,不然把分包傳給不同的 RS,數(shù)據(jù)就不完整了。所以 LVS 要根據(jù)四元組來(lái)記錄包應(yīng)該轉(zhuǎn)發(fā)給哪一個(gè) RS,四元組一樣的數(shù)據(jù)包都轉(zhuǎn)發(fā)給同一個(gè) RS。 四元組的 IP 是在 IP Header ?中,而端口號(hào)在 TCP Header 中,這意味著 LVS 需要卸下 TCP Header 拿到端口號(hào),然后根據(jù)四元組是否相同再?zèng)Q定是否轉(zhuǎn)發(fā)到同一臺(tái) RS 上,四元組對(duì)應(yīng)一個(gè) TCP 連接,也就是說(shuō)?LVS 具有記錄連接的功能 ,而連接是傳輸層的概念。至此相信你明白開(kāi)頭的一個(gè)問(wèn)題:「LVS 起到了轉(zhuǎn)發(fā)包的功能,為什么說(shuō)它是四層負(fù)載均衡」 DR 經(jīng)過(guò)這樣的設(shè)計(jì),由于 LVS 負(fù)載均衡的作用,輕松解決了單機(jī)瓶頸,小章的公司順利度過(guò)了 C10K(并發(fā)連接 1 萬(wàn)),C20K,。。。。的問(wèn)題,度過(guò)了瓶頸期,但隨著并發(fā)數(shù)越來(lái)越高,小章發(fā)現(xiàn)了一個(gè)大問(wèn)題,LVS 逐漸扛不住了,因?yàn)樗袛?shù)據(jù)包的進(jìn)出都要經(jīng)過(guò)它,這讓它成為了很大的瓶頸,隨著 RS 水平擴(kuò)展數(shù)量越來(lái)越多, LVS 遲早要掛掉。能否讓 LVS 只負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求包,但響應(yīng)的數(shù)據(jù)包直接經(jīng)由 RS 返回給客戶端呢,類似下面這樣 畫(huà)外音:紅色虛線為數(shù)據(jù)包的流轉(zhuǎn)流程,可以看到響應(yīng)數(shù)據(jù)包不經(jīng)過(guò) LVS 這樣的話響應(yīng)包就不用經(jīng)過(guò) LVS 了,LVS 的負(fù)載壓力自然釋放了,我們把這種模式稱為 DR(Direct Router,直接路由)模式 方案有了,那么怎么實(shí)現(xiàn)呢?這個(gè)設(shè)計(jì)方案有兩個(gè)注意點(diǎn) 首先 LVS 還是要承載所有的請(qǐng)求流量(接收所有數(shù)據(jù)包),然后再根據(jù)負(fù)載均衡 算法轉(zhuǎn)發(fā)給 RS RS 處理完后是不經(jīng)過(guò) LVS,直接將數(shù)據(jù)包轉(zhuǎn)發(fā)給路由器再發(fā)給客戶端的,意味著 RS 必須要有與 LVS 同樣的 VIP(四元組不能變),另外由以上拓?fù)鋱D可知,它們也必須在同一個(gè)子網(wǎng)里(嚴(yán)格地說(shuō),應(yīng)該是同一個(gè) ?vlan,因?yàn)槭峭ㄟ^(guò)交換機(jī)通信的),這就意味著 LVS 和 RS 都必須要有兩個(gè) IP,一個(gè) VIP,一個(gè)子網(wǎng) IP 那么一臺(tái)主機(jī)如何才能有兩個(gè) IP 呢? 我們知道計(jì)算機(jī)要上網(wǎng),首先要把網(wǎng)線插入網(wǎng)卡,一個(gè)網(wǎng)卡其實(shí)就對(duì)應(yīng)著一個(gè) IP,所以一臺(tái)主機(jī)配兩個(gè)網(wǎng)卡就有兩個(gè) IP ,但多數(shù)人不知道的是一個(gè)網(wǎng)卡是可以配置多個(gè) IP 的,另外網(wǎng)卡一般分兩種,一種是物理網(wǎng)卡 ,一種是虛擬網(wǎng)卡 物理網(wǎng)卡
:可以插網(wǎng)線的網(wǎng)卡,如果有多個(gè)網(wǎng)卡,我們一般將其命名為 eth0,eth1。。。,如果一個(gè)網(wǎng)卡對(duì)應(yīng)多個(gè) IP,以 eth0 為例,一般將其命名為 eth0,eth0:0,eth0:1。。。eth0:x,比如一臺(tái)機(jī)器只有一個(gè)網(wǎng)卡,但其對(duì)應(yīng)兩個(gè) IP 192.168.1.2, 192.168.1.3,那么其綁定的網(wǎng)卡名稱分別為 eth0,eth0:0 虛擬網(wǎng)卡
:虛擬網(wǎng)卡通常被稱為 loopback,一般命名為 lo,是一個(gè)特殊的網(wǎng)絡(luò)接口,主要用于本機(jī)中各個(gè)應(yīng)用之間的網(wǎng)絡(luò)交互(哪怕網(wǎng)線拔了,本機(jī)各個(gè)應(yīng)用之間通過(guò) lo 也是能通信的),需要注意的是虛擬網(wǎng)卡和物理網(wǎng)卡一樣,也可以綁定任意 IP 地址,如果在虛擬網(wǎng)卡配置了任何的 IP 地址,只要有物理網(wǎng)卡,就能到收到并處理目的 IP 為虛擬網(wǎng)卡上 IP 的數(shù)據(jù)包,lo 默認(rèn)綁定了 127.0.0.1 這個(gè)本地 IP ,如果要綁定其他的 IP,對(duì)應(yīng)的網(wǎng)卡命名一般為 lo:0,lo:1。。。 畫(huà)外音 :一般服務(wù)器包括 LVS 是以雙網(wǎng)卡的形式存在的,一來(lái)每個(gè)網(wǎng)卡帶寬都是有限的,雙網(wǎng)卡相當(dāng)于提升了一倍的帶寬,二來(lái)兩個(gè)網(wǎng)卡也起到了熱備的作用,如果一個(gè)網(wǎng)卡壞了,另外一個(gè)可以頂上。理解了以上知識(shí)點(diǎn),我們可以將拓?fù)鋱D完善如下 你可能注意到了 RS 的 VIP 是綁定在 lo:0?虛擬網(wǎng)卡 上而不是物理網(wǎng)卡上,這是為什么呢,主要是為了保證請(qǐng)求都打到 LVS 上 。 1. arp_ignore=1 首先我們知道 LVS 和 RS 都位于同一個(gè)子網(wǎng),我們需要了解一下子網(wǎng)的工作機(jī)制:子網(wǎng)一般稱為以太網(wǎng),主要用 mac 地址來(lái)通信,位于 ISO 模型的二層,一開(kāi)始內(nèi)網(wǎng)的機(jī)器互相不知道彼此的 mac 地址,需要通過(guò)?arp ?機(jī)制來(lái)根據(jù) IP 獲取其對(duì)應(yīng)的 mac,獲取之后首先會(huì)在本地的 arp 表記錄此 IP 對(duì)應(yīng)的 mac (下次就直接在本地緩存查找 mac),然后會(huì)在包頭上附上 IP 對(duì)應(yīng)的 mac,再將包傳輸出去,交換機(jī)就會(huì)找到對(duì)應(yīng)的機(jī)器了 所以當(dāng)客戶端請(qǐng)求 VIP 后,請(qǐng)求到達(dá)了上圖中的路由器,路由器要轉(zhuǎn)發(fā)給此 IP 對(duì)應(yīng)的機(jī)器,于是它首先發(fā)起了一個(gè) arp 請(qǐng)求希望拿到 VIP 對(duì)應(yīng)的 mac 地址。 那么現(xiàn)在問(wèn)題來(lái)了,由于三臺(tái)機(jī)器的 IP 都為相同的 VIP,如果都響應(yīng)了 arp 請(qǐng)求,就相當(dāng)于一個(gè) IP 對(duì)應(yīng)了三個(gè) mac,路由器該用誰(shuí)的 mac 地址呢? 解決方案很簡(jiǎn)單:由于請(qǐng)求都要經(jīng)過(guò) LVS,所以只讓 LVS 響應(yīng) arp,抑制住另外兩臺(tái) RS 對(duì) VIP 的 arp 響應(yīng)即可,不過(guò)請(qǐng)求到達(dá) LVS 后,LVS 還要將包轉(zhuǎn)發(fā)給 RS(假設(shè)為 RS2 吧),此時(shí)也要用到 arp 來(lái)獲取 RS 的 mac 地址,但是注意從 LVS 發(fā)起的 arp 請(qǐng)求目的 IP 變成了 RS2 的內(nèi)網(wǎng) IP:115.205.4.217(綁定在物理網(wǎng)卡 eth0 上)。 綜上所述, RS 不能響應(yīng)目的 IP 為虛擬網(wǎng)卡 綁定的 VIP 的 arp 請(qǐng)求,但能響應(yīng)目的 IP 為物理網(wǎng)卡 綁定的 IP 的 arp 請(qǐng)求,這就是為什么 RS 需要把 VIP 綁定在虛擬網(wǎng)卡上,而把內(nèi)網(wǎng) IP 綁定在物理網(wǎng)卡上的真實(shí)原因,就是為了 arp 響應(yīng)的需要 當(dāng)然一般服務(wù)器默認(rèn)都會(huì)響應(yīng)所有 IP 的 arp 響應(yīng),所以需要對(duì) RS 做額外配置,即 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.lo.arp_ignore=1
設(shè)置的 arp_ignore=1 表示的含義如下 1 ?-?reply?only?if ?the?target?IP?address?is ?local ?address configured?on ?the?incoming?interface
即我們上述所說(shuō)的,只響應(yīng)目的 IP 為接收網(wǎng)卡(即物理網(wǎng)卡 )上的 IP 的 arp 請(qǐng)求(會(huì)忽略目的 IP 為虛擬網(wǎng)卡 ?上 VIP 的 arp 請(qǐng)求) 作了以上的設(shè)置后由于針對(duì) VIP 的 arp 請(qǐng)求只有 LVS 會(huì)響應(yīng)(路由器收到 ?LVS 的 arp 響應(yīng)后會(huì)在 arp 緩存表里記錄 VIP 的 mac 地址為 LVS 的mac),所以可以保證所有請(qǐng)求都會(huì)打到 LVS 上,然后 LVS 也順利地將數(shù)據(jù)包發(fā)給了 RS2,RS2 處理好后就準(zhǔn)備把數(shù)據(jù)包從網(wǎng)卡發(fā)出了,但這里需要注意,RS2 可不能直接把數(shù)據(jù)包通過(guò)物理網(wǎng)卡 eth0 傳出去的,這樣會(huì)導(dǎo)致數(shù)據(jù)包的源 IP 被修改為 eth0 的 IP(即 115.205.4.217),會(huì)導(dǎo)致四元組發(fā)生變化(別問(wèn)為什么,問(wèn)就是協(xié)議棧的關(guān)系),所以我們需要額外配置一下,讓數(shù)據(jù)包使用 lo 接口發(fā)送,如下 route?add?-host?115.205.4.214?dev?lo:0# ?添加一條路由,目標(biāo)?IP?為?VIP?的數(shù)據(jù)包使用?lo?接口發(fā)送,這樣響應(yīng)報(bào)文的源?IP?就會(huì)為?VIP
然后再通過(guò) eth0 發(fā)出去,這樣可保證四元組不會(huì)發(fā)生變化。 2. arp_announce=2 接下來(lái)還有一個(gè)問(wèn)題,RS2 怎么將數(shù)據(jù)包傳給它的網(wǎng)關(guān)(即路由器)呢,由于它們還是在同一個(gè)子網(wǎng),所以也是通過(guò) arp 的方式先獲取到網(wǎng)關(guān)的 mac,然后在以太網(wǎng)包頭上裝上網(wǎng)關(guān)的 mac 傳給網(wǎng)關(guān)的。 但這里有一個(gè)點(diǎn)需要注意,通過(guò) arp 獲取網(wǎng)關(guān)的 mac 時(shí),網(wǎng)卡會(huì)發(fā)送一個(gè)包含「源IP」,「目標(biāo) IP」,「源 mac」的 arp 廣播包 通常情況下源 IP 可以選擇為數(shù)據(jù)包的源 IP,也可以選擇為物理網(wǎng)卡上的 IP,但在 DR 模式下這里的源 IP 只能選擇為物理網(wǎng)卡上 IP ,這是為什么呢 我們知道目標(biāo) IP 是網(wǎng)關(guān) IP,所以網(wǎng)關(guān)會(huì)響應(yīng)這個(gè) arp 請(qǐng)求,但同時(shí)網(wǎng)關(guān)在收到這個(gè) arp 響應(yīng)后也會(huì)在本地的 arp 表更新:源 IP => 源 mac 這一項(xiàng),這里的源 mac 為 RS2 的 mac,還記得上文中路由器的 arp 緩存表已經(jīng)保存了 LVS 的 VIP 與 LVS 的 mac 的對(duì)應(yīng)關(guān)系了嗎,也就是說(shuō)從 RS2 發(fā)出的 arp ,源 IP 如果是數(shù)據(jù)包的源 IP(即 VIP),網(wǎng)關(guān)收到 arp 后會(huì)在路由表更新 VIP 的 mac 地址為 RS2 的 mac 的地址!這樣下一次客戶端請(qǐng)求路由器就會(huì)直接把數(shù)據(jù)包轉(zhuǎn)發(fā)給 RS2 而不會(huì)經(jīng)過(guò) LVS!所以 RS2 要發(fā) arp 獲取網(wǎng)關(guān)的 mac 時(shí)使用的源 IP 應(yīng)該為其物理網(wǎng)卡(eth0)對(duì)應(yīng)的 IP(即 115.205.4.217),這樣就避免了上述問(wèn)題,與 arp_ignore=1 一樣,這一項(xiàng)也需要我們手動(dòng)配置 ?net.ipv4.conf.all.arp_announce=2 ?net.ipv4.conf.lo.arp_announce=2
arp_announce=2 表示的是 忽略 IP 數(shù)據(jù)包的源 IP 地址,選擇該發(fā)送網(wǎng)卡上最合適的本地地址作為 arp 請(qǐng)求的源 IP 地址
上面這段有點(diǎn)繞,大家可以多讀幾遍好好體會(huì)一下,其實(shí)主要目的就是為了避免路由器的 ARP 緩存表誤更新 VIP 的 mac 為 RS 的 mac 從上面的介紹可以看出 DR 模式是比較復(fù)雜的,需要在 RS 上做額外的配置,所以線上一般使用 NAT 模式 FullNAT 但問(wèn)題又來(lái)了,該怎么解決 NAT 模式下 LVS 的單點(diǎn)問(wèn)題呢,畢竟所有進(jìn)出流量都出入同一臺(tái) LVS(因?yàn)?RS 的網(wǎng)關(guān)只有有一個(gè)),在 RS 不斷擴(kuò)容下,單點(diǎn) LVS 很可能成為巨大的隱患,而且 LVS 要作為所有 RS 的網(wǎng)關(guān),意味著他們要在同一個(gè)網(wǎng)段下。 如果在阿里云這些公有云平臺(tái)上部署肯定不現(xiàn)實(shí),因?yàn)樵诠性粕?,很可?RS 是分布在各地的,這就意味著要跨 vlan 來(lái)通信,而 NAT 顯然不符合要求,于是在 NAT 的基礎(chǔ)上又衍生出了 FullNAT,FullNAT 其實(shí)就是為了公有云而生的 FullNAT NAT 模式下,LVS 只將數(shù)據(jù)包的目標(biāo) IP 改成了 RS 的 IP,而在 FullNAT 模式下,LVS 還會(huì)將源 IP 地址也改為 LVS 的內(nèi)網(wǎng) IP(修改 IP 主要由 LVS 的內(nèi)核模塊 ip_vs 來(lái)操作),注意上圖 LVS 內(nèi)網(wǎng) IP 和 RS 的 IP 是可以在不同網(wǎng)段下的,通常在公有云平臺(tái)上,它們是部署在 intranet 即企業(yè)內(nèi)網(wǎng)中的,這樣的話 LVS 就可以跨網(wǎng)段和 RS 通信了,也避免了 LVS 的單點(diǎn)瓶頸,多臺(tái) LVS 都可以將請(qǐng)求轉(zhuǎn)發(fā)給 RS 如圖示,部署了兩臺(tái) LVS,它們內(nèi)網(wǎng)與 RS 的不在同一個(gè)網(wǎng)段,照樣能通信,部分讀者可能會(huì)注意到一個(gè)問(wèn)題:LVS 轉(zhuǎn)發(fā)給 RS 的數(shù)據(jù)包源 IP(即客戶端 IP,client_ip)被替換成了內(nèi)網(wǎng) IP,這就意味著 RS 收到的數(shù)據(jù)包是不含有 client_ip 的,有時(shí)候 client_ip 對(duì)我們分析數(shù)據(jù)有很重要的作用(比如分析下單在不同地域分布情況就需要 ?client_ip),針對(duì)這種情況,LVS 會(huì)在收到請(qǐng)求包后在數(shù)據(jù)包的 TCP Header 中插入 client_ip 上圖就是是 TCP Header,client_ip 就是放在 tcp option 字段中的,然后 RS 上只要安裝了 TOA 模塊就能從中讀取 client_ip,TCP 的這個(gè) option 的字段也提醒我們?cè)谧黾夹g(shù)方案設(shè)計(jì)的時(shí)候適當(dāng)?shù)脑黾右恍┤哂嘧侄文茏屇愕某绦蚩蓴U(kuò)展性更好。 總結(jié) 至此,相信大家已經(jīng)明白了 LVS 的 NAT,DR ,F(xiàn)ullNAT 的工作機(jī)制了,實(shí)際上 LVS 還有個(gè) TUNNEL 隧道模式,只是生產(chǎn)上不怎么用,所以不做介紹,另外每個(gè) LVS 一般會(huì)做雙機(jī)熱備,如下,備機(jī)通過(guò)定時(shí)發(fā)送心跳包能感受到 ?LVS 主機(jī)的存活,另外注意虛線部分,備機(jī)還可以感知到服務(wù)器的存活,如果服務(wù)器掛了, LVS 會(huì)將其剔除,保證 LVS 轉(zhuǎn)發(fā)的流量不會(huì)打到宕掉的機(jī)器上。 文中的小章就是章文嵩博士,1998 年他主導(dǎo)了 LVS 項(xiàng)目的開(kāi)發(fā),一開(kāi)始只有 NAT,DR,TUNNEL 三種模式,但后來(lái)隨著阿里云云上服務(wù)的崛起,這三種模式都無(wú)法滿足實(shí)際的部署需要,所以他又指導(dǎo)其手下基于 NAT 來(lái)做改造誕生了 FullNAT,值得一提的是 LVS 是少數(shù)幾個(gè)國(guó)人開(kāi)發(fā)并得到 Linux 官方認(rèn)可的開(kāi)源軟件,已集成進(jìn) Linux 內(nèi)核,可見(jiàn)這一項(xiàng)目的巨大價(jià)值與貢獻(xiàn)。 - EOF -
欲知詳情,請(qǐng)下載word文檔
下載文檔
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。
關(guān)鍵字:
阿維塔
塞力斯
華為
加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...
關(guān)鍵字:
AWS
AN
BSP
數(shù)字化
倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...
關(guān)鍵字:
汽車(chē)
人工智能
智能驅(qū)動(dòng)
BSP
北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...
關(guān)鍵字:
亞馬遜
解密
控制平面
BSP
8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。
關(guān)鍵字:
騰訊
編碼器
CPU
8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。
關(guān)鍵字:
華為
12nm
EDA
半導(dǎo)體
8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。
關(guān)鍵字:
華為
12nm
手機(jī)
衛(wèi)星通信
要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...
關(guān)鍵字:
通信
BSP
電信運(yùn)營(yíng)商
數(shù)字經(jīng)濟(jì)
北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...
關(guān)鍵字:
VI
傳輸協(xié)議
音頻
BSP
北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...
關(guān)鍵字:
BSP
信息技術(shù)
山海路引?嵐悅新程 三亞2024年8月27日 /美通社/ --?近日,海南地區(qū)六家凱悅系酒店與中國(guó)高端新能源車(chē)企嵐圖汽車(chē)(VOYAH)正式達(dá)成戰(zhàn)略合作協(xié)議。這一合作標(biāo)志著兩大品牌在高端出行體驗(yàn)和環(huán)保理念上的深度融合,將...
關(guān)鍵字:
新能源
BSP
PLAYER
ASIA
上海2024年8月28日 /美通社/ -- 8月26日至8月28日,AHN LAN安嵐與股神巴菲特的孫女妮可?巴菲特共同開(kāi)啟了一場(chǎng)自然和藝術(shù)的療愈之旅。 妮可·巴菲特在療愈之旅活動(dòng)現(xiàn)場(chǎng)合影 ...
關(guān)鍵字:
MIDDOT
BSP
LAN
SPI
8月29日消息,近日,華為董事、質(zhì)量流程IT總裁陶景文在中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式上表示,中國(guó)科技企業(yè)不應(yīng)怕美國(guó)對(duì)其封鎖。
關(guān)鍵字:
華為
12nm
EDA
半導(dǎo)體
上海2024年8月26日 /美通社/ -- 近日,全球領(lǐng)先的消費(fèi)者研究與零售監(jiān)測(cè)公司尼爾森IQ(NielsenIQ)迎來(lái)進(jìn)入中國(guó)市場(chǎng)四十周年的重要里程碑,正式翻開(kāi)在華發(fā)展新篇章。自改革開(kāi)放以來(lái),中國(guó)市場(chǎng)不斷展現(xiàn)出前所未有...
關(guān)鍵字:
BSP
NI
SE
TRACE
上海2024年8月26日 /美通社/ -- 第二十二屆跨盈年度B2B營(yíng)銷高管峰會(huì)(CC2025)將于2025年1月15-17日在上海舉辦,本次峰會(huì)早鳥(niǎo)票注冊(cè)通道開(kāi)啟,截止時(shí)間10月11日。 了解更多會(huì)議信息:cc.co...
關(guān)鍵字:
BSP
COM
AI
INDEX
上海2024年8月26日 /美通社/ -- 今日,高端全合成潤(rùn)滑油品牌美孚1號(hào)攜手品牌體驗(yàn)官周冠宇,開(kāi)啟全新旅程,助力廣大車(chē)主通過(guò)駕駛?cè)ヌ剿鞲鼜V闊的世界。在全新發(fā)布的品牌視頻中,周冠宇及不同背景的消費(fèi)者表達(dá)了對(duì)駕駛的熱愛(ài)...
關(guān)鍵字:
BSP
汽車(chē)制造
此次發(fā)布標(biāo)志著Cision首次為亞太市場(chǎng)量身定制全方位的媒體監(jiān)測(cè)服務(wù)。 芝加哥2024年8月27日 /美通社/ -- 消費(fèi)者和媒體情報(bào)、互動(dòng)及傳播解決方案的全球領(lǐng)導(dǎo)者Cis...
關(guān)鍵字:
CIS
IO
SI
BSP
上海2024年8月27日 /美通社/ -- 近來(lái),具有強(qiáng)大學(xué)習(xí)、理解和多模態(tài)處理能力的大模型迅猛發(fā)展,正在給人類的生產(chǎn)、生活帶來(lái)革命性的變化。在這一變革浪潮中,物聯(lián)網(wǎng)成為了大模型技術(shù)發(fā)揮作用的重要陣地。 作為全球領(lǐng)先的...
關(guān)鍵字:
模型
移遠(yuǎn)通信
BSP
高通
北京2024年8月27日 /美通社/ -- 高途教育科技公司(紐約證券交易所股票代碼:GOTU)("高途"或"公司"),一家技術(shù)驅(qū)動(dòng)的在線直播大班培訓(xùn)機(jī)構(gòu),今日發(fā)布截至2024年6月30日第二季度未經(jīng)審計(jì)財(cái)務(wù)報(bào)告。 2...
關(guān)鍵字:
BSP
電話會(huì)議
COM
TE
8月26日消息,華為公司最近正式啟動(dòng)了“華為AI百校計(jì)劃”,向國(guó)內(nèi)高校提供基于昇騰云服務(wù)的AI計(jì)算資源。
關(guān)鍵字:
華為
12nm
EDA
半導(dǎo)體