日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

VS學(xué)習(xí)備忘

 rongq2007 2019-08-26

LVS是構(gòu)建在real server集群之上的、具有高擴(kuò)展性和可用性的虛擬服務(wù)器,通常我們稱之為“負(fù)載均衡”服務(wù)器。服務(wù)器的集群架構(gòu)對(duì)用戶而言是透明度,用戶與集群系統(tǒng)交互時(shí),就像與單個(gè)高性能的虛擬服務(wù)器交互一樣;這對(duì)構(gòu)架較大規(guī)模的服務(wù)站點(diǎn),有極大的幫助。

     實(shí)際服務(wù)器(real servers)和負(fù)載均衡服務(wù)器(LVS等)通過高速的LAN或者在地理位置上分散的WAN互相鏈接。負(fù)載均衡器將請(qǐng)求分發(fā)給不同的server,讓多個(gè)server并行的服務(wù),看起來像是一個(gè)IP上的虛擬服務(wù);請(qǐng)求分發(fā)時(shí)可以使用基于IP的負(fù)載均衡技術(shù),或者使用應(yīng)用層面的負(fù)載均衡技術(shù)(TCP,HTTP)。系統(tǒng)的擴(kuò)展,可以通過在集群中增、刪節(jié)點(diǎn)(real server)來實(shí)現(xiàn),這都是透明的;它提供了節(jié)點(diǎn)活性檢測(cè)機(jī)制、守護(hù)進(jìn)程失效檢測(cè),并適當(dāng)重新配置系統(tǒng)。

一、為什么使用LVS

    隨著互聯(lián)網(wǎng)的高速增長(zhǎng),那么互聯(lián)網(wǎng)的流量也急劇增加,server的負(fù)載也隨之加重,特別是一些比較流行的web站點(diǎn),它很容易就不堪負(fù)重。為了解決服務(wù)器的過載問題,有2種方案。一個(gè)是單server方案,即升級(jí)server的物理配置以提供更高的性能,但是當(dāng)請(qǐng)求量不斷增加,又要面臨繼續(xù)升級(jí)的問題,升級(jí)硬件的過程比較復(fù)雜(需要停機(jī))而且成本較高,終歸單個(gè)server的升級(jí)是有瓶頸的,我們不能一直這樣下去;另個(gè)方案就是多server復(fù)合使用,即我們常說的集群架構(gòu),我們使用多個(gè)廉價(jià)的server構(gòu)建一個(gè)集群,讓它們并行提供服務(wù),當(dāng)web站點(diǎn)的負(fù)載增加,我們只需要簡(jiǎn)單的增加一個(gè)或者多個(gè)server即可,性價(jià)比很高,所以在構(gòu)架大型分布式服務(wù)時(shí),這種方案更具有擴(kuò)展性。

    有如下幾種方式來構(gòu)建分布式服務(wù)器:

    1)基于DNS的負(fù)載均衡集群

    這種方式是構(gòu)建分布式網(wǎng)絡(luò)最簡(jiǎn)單的方式。DNS系統(tǒng)可以將一個(gè)域名解析到多個(gè)不同的IP地址上,當(dāng)DNS服務(wù)器收到域名解析請(qǐng)求時(shí)(比如客戶端本地沒有域名的解析信息),DNS服務(wù)器將根據(jù)調(diào)度算法(比如輪詢)選擇一個(gè)IP返回給請(qǐng)求端,由本地DNS將此解析信息緩存一定的時(shí)間(TTL),此后客戶端對(duì)此域名的請(qǐng)求將會(huì)使用此IP作為目標(biāo)地址。

    可是,因?yàn)榭蛻舳说腸ache和層級(jí)的DNS系統(tǒng)(即不同層級(jí)的DNS可能緩存的IP不同或相同,參見DNS相關(guān)文檔),很容易導(dǎo)致server之間的負(fù)載不均衡,不能實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,而且不容易處理峰值負(fù)載。在DNS服務(wù)器上,選擇合適的TTL值也很困難,值太小將會(huì)增加DNS的流量和負(fù)載,DNS服務(wù)器會(huì)成為瓶頸,較大的值將會(huì)使用動(dòng)態(tài)均衡性變得更差。即使TTL設(shè)置為0,調(diào)度的粒度也因host不同,不同的用戶訪問模式也會(huì)導(dǎo)致負(fù)載不平衡,因?yàn)橛行┯脩艨赡茉L問大量的站點(diǎn)內(nèi)容,有些用戶可能只訪問較少的頁(yè)面。重要的是,它也不可靠,當(dāng)服務(wù)器失效(宕機(jī)),那么映射到此Server IP上的客戶端將不能訪問(最長(zhǎng)TTL時(shí)間內(nèi)),即使他們?cè)跒g覽上使用“refresh”、“reload”操作。

    2)基于負(fù)載均衡集群的分發(fā)器

    Dispatcher(分發(fā)器),即負(fù)載均衡器,可以將請(qǐng)求分發(fā)給集群中不同的server,所以集群中并行的服務(wù),對(duì)客戶端而言,看起來像是運(yùn)行在一個(gè)IP上的虛擬服務(wù),終端用戶只需要與單個(gè)server交互而不需要知道整個(gè)集群的所有Servers。和DNS負(fù)載均衡相比,Dispatcher能夠細(xì)顆粒度的調(diào)度請(qǐng)求,比如根據(jù)connection,更好在servers之間實(shí)現(xiàn)負(fù)載均衡。當(dāng)real server失效時(shí)它被標(biāo)記為“失效”,server管理也非常簡(jiǎn)單,管理員可以在任何時(shí)候增、減server,而不需要打斷終端用戶對(duì)服務(wù)的使用。

    負(fù)載均衡可以在2個(gè)層面來做:應(yīng)用層(Application-Level)和IP層(IP-Level)。比如“Reverse-Proxy”和“pWEB”是應(yīng)用層的負(fù)載均衡器,用來構(gòu)架擴(kuò)展性的web服務(wù)器集群,它們將HTTP請(qǐng)求轉(zhuǎn)發(fā)給集群中不同的web服務(wù)器,獲取響應(yīng),并返回給客戶端;因?yàn)樵趹?yīng)用層,HTTP請(qǐng)求的處理和應(yīng)答是高耗的,那么當(dāng)集群中服務(wù)器的數(shù)量增加到5個(gè)或者更多,這種應(yīng)用層負(fù)載均衡器也會(huì)成為瓶頸,這依賴于每個(gè)server的吞吐能力。

    我們更傾向于IP層的負(fù)載均衡,因?yàn)樗男阅芟妮^小,可以承載多達(dá)25甚至100個(gè)server的負(fù)載均衡。這也是IP虛擬服務(wù)器的設(shè)計(jì)目的。LVS的核心就是IP層的負(fù)載均衡。

二、虛擬服務(wù)器是如何運(yùn)作的?

    目前為止,虛擬服務(wù)器(Virtual Server)有三種實(shí)現(xiàn)方式,這三種IP負(fù)載均衡技術(shù)同時(shí)存在于LinuxDirector中:NAT,IP Tunneling,Direct routing。下文中“虛擬服務(wù)器”為“Virtual Server”(LVS),負(fù)載均衡器為“l(fā)oad balancer”,虛擬服務(wù)器具有“負(fù)載均衡器”組件。

    1、NAT

    NAT的優(yōu)點(diǎn)是real server可以使用任何操作系統(tǒng)(linux,Mac OS,windows等),只要它能夠支持TCP/IP協(xié)議即可,real servers能夠使用私有網(wǎng)絡(luò)地址(private網(wǎng)絡(luò)),只需要給負(fù)載均衡server一個(gè)外網(wǎng)IP即可。

    缺點(diǎn)是,NAT模式下,虛擬服務(wù)器的擴(kuò)展能力有限,當(dāng)集群中server的數(shù)量增長(zhǎng)到20或者更多時(shí),負(fù)載均衡器將成為整個(gè)系統(tǒng)的瓶頸,因?yàn)檎?qǐng)求數(shù)據(jù)包和響應(yīng)數(shù)據(jù)包都需要通過負(fù)載均衡器的重寫(rewritten)。假設(shè),TCP的數(shù)據(jù)包的大小為536字節(jié),重寫數(shù)據(jù)包耗時(shí)60us(微秒,百萬分之一秒),負(fù)載均衡器最大的吞吐量為8.93M/s,如果real server的吞吐能力為400KB/s,那么負(fù)載均衡器能夠調(diào)度22個(gè)real server。

    通過NAT實(shí)現(xiàn)的虛擬服務(wù)器能夠滿足大量客戶端的請(qǐng)求;當(dāng)負(fù)載均衡器成為整個(gè)系統(tǒng)的瓶頸時(shí),有2種途徑可以解決這個(gè)問題。一個(gè)是混合途徑(hybrid),另一種則是使用IP tunneling或者Direct routing。在DNS混合途徑中,有多個(gè)基于NAT的集群環(huán)境,域名映射到多個(gè)虛擬服務(wù)器的IP。我們可以使用LVS中的“IP Tunneling”、“Direct Routing”提高擴(kuò)展性,也可以在第一級(jí)使用“IP Tunneling”或者“Direct Routing”負(fù)載均衡器,然后在第二級(jí)使用NAT模式,以構(gòu)建大規(guī)模的集群。(LVS DR + nginx就是這種模式)

    NAT模式,這和nginx的負(fù)載均衡模式非常相似。

    2、IP Tunneling

    我們已經(jīng)了解到,NAT模式弊端在于請(qǐng)求和響應(yīng)都需要經(jīng)過負(fù)載均衡器,這限制了集群的規(guī)模的擴(kuò)展。對(duì)于大多數(shù)web應(yīng)用,請(qǐng)求的數(shù)據(jù)包較小,響應(yīng)的數(shù)據(jù)包較大。

    IP Tunneling模式的虛擬服務(wù)器,負(fù)載均衡器只需要將請(qǐng)求分發(fā)給不同的real server,real server直接將響應(yīng)返回給客戶端。所以,負(fù)載均衡器能夠處理海量的請(qǐng)求,它能夠調(diào)度高達(dá)100個(gè)real server,并且它不會(huì)成為系統(tǒng)的瓶頸。Tunneling的吞吐能力高達(dá)1GB,而負(fù)載均衡器只有100M的全雙工網(wǎng)絡(luò)適配器。

    由此可見,IP Tunneling特性可以用來構(gòu)建性能極高的虛擬服務(wù)器,非常適合構(gòu)建虛擬代理服務(wù)器,因?yàn)楫?dāng)代理服務(wù)器收到請(qǐng)求后,它可以直接訪問網(wǎng)絡(luò),獲取內(nèi)容,并直接返回給用戶。

    不過,所有的server需要支持“IP Tunneling”協(xié)議(即IP封裝,IPIP),目前已知的只有l(wèi)inux系統(tǒng)均支持此特性。

    3、Direct Routing

    像“IP Tunneling”一樣,linuxDirector處理的只是Client-Server的半鏈接,響應(yīng)數(shù)據(jù)可以根據(jù)各自的網(wǎng)絡(luò)路由方式到達(dá)客戶端,即負(fù)載均衡器接收請(qǐng)求,請(qǐng)求轉(zhuǎn)發(fā)給real server,然后響應(yīng)直接返回給客戶端而無需經(jīng)過負(fù)載均衡器。它具有“IP Tunneling”的優(yōu)點(diǎn)。

    不過和“IP Tunneling”相比,這種方式并沒有“tunneling”的開支(IP封裝,其實(shí)開支非常?。?,但是它需要負(fù)載均衡器網(wǎng)絡(luò)接口與real server的網(wǎng)絡(luò)接口必須在同一個(gè)物理網(wǎng)段。

    根據(jù)上述介紹,我們簡(jiǎn)單的得到結(jié)論:“IP Tunneling”和“Direct Routing”模式能夠構(gòu)建較大規(guī)模的集群負(fù)載,擴(kuò)展性比NAT更強(qiáng);“NAT”網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單,real server只需要支持TCP/IP協(xié)議即可,它們可以在LAN、WAN網(wǎng)絡(luò)中;“IP Tunneling”需要集群中的real server支持IP封裝協(xié)議,real server可以位于LAN、WAN網(wǎng)絡(luò)中,在實(shí)際環(huán)境中,配置稍微復(fù)雜,這種模式不常用;“Direct Routing”模式需要LVS與real server位于同一網(wǎng)段,配置簡(jiǎn)單,是比較常用的方式。

三、LVS集群架構(gòu)

    為了整個(gè)系統(tǒng)的透明度、可擴(kuò)展性、可用性以及可管理性,我們通常采用如圖所示的三層架構(gòu):

    三層架構(gòu)有如下幾個(gè)部分組成:

    1、load balancer(負(fù)載均衡器):位于整個(gè)集群的前端,用于在多個(gè)real server之間均衡來自客戶端的請(qǐng)求 ,對(duì)于客戶端而言它們認(rèn)為所有的服務(wù)均來自一個(gè)IP地址,即load blancer的IP地址。

    2、server cluster(服務(wù)器集群):有多個(gè)real server組成,它們提供同等的服務(wù)。

    3、shared storage(共享存儲(chǔ)):用于提供servers共享的存儲(chǔ)空間,這是servers獲取相同的內(nèi)容、提供相同的服務(wù)的基礎(chǔ)。

    負(fù)載均衡器是整個(gè)集群系統(tǒng)的單一入口,它可以運(yùn)行IPVS(linux內(nèi)核中)以提供基于IP的負(fù)載均衡技術(shù),或者是運(yùn)行KTCPVS來實(shí)現(xiàn)應(yīng)用層的負(fù)載均衡。當(dāng)使用IPVS時(shí),所有的servers需要提供相同的服務(wù)和內(nèi)容,負(fù)載均衡器通過指定的調(diào)度算法和server都負(fù)載情況,將客戶端請(qǐng)求轉(zhuǎn)發(fā)給某個(gè)合適的server。無論選擇了哪個(gè)server,最終的響應(yīng)結(jié)果應(yīng)該是一樣的(否則就違背了集群服務(wù)的基本原則)。當(dāng)使用KTCPVS時(shí),servers可以返回不同的內(nèi)容,負(fù)載均衡器可以根據(jù)請(qǐng)求的內(nèi)容(URL,參數(shù)等)將請(qǐng)求轉(zhuǎn)發(fā)給不同的server。因?yàn)镵TCPVS是linux內(nèi)核實(shí)現(xiàn),所以處理數(shù)據(jù)的開支較小,整個(gè)集群仍然能夠提供較高的吞吐量。

    集群中server節(jié)點(diǎn)的數(shù)量可以根據(jù)系統(tǒng)的負(fù)載而調(diào)整,當(dāng)所有的server都過載時(shí),我們需要向集群增加多個(gè)新的servers來處理這些增長(zhǎng)的工作量。對(duì)于大多數(shù)互聯(lián)網(wǎng)服務(wù),比如web站點(diǎn),請(qǐng)求之間相關(guān)性不高,它們可以在不同的server上并行運(yùn)行,因此,隨著集群中server數(shù)量的增加,整個(gè)系統(tǒng)的性能也會(huì)成線性擴(kuò)展。

    共享存儲(chǔ),可以是數(shù)據(jù)庫(kù)系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng)(NFS),或者是分布式文件系統(tǒng)(DFS);需要server節(jié)點(diǎn)動(dòng)態(tài)更新的數(shù)據(jù)需要被保存在數(shù)據(jù)庫(kù)中,當(dāng)多個(gè)server節(jié)點(diǎn)并行讀寫數(shù)據(jù)庫(kù)系統(tǒng)時(shí),數(shù)據(jù)庫(kù)需要保證數(shù)據(jù)的一致性(并發(fā)操作);對(duì)于靜態(tài)數(shù)據(jù),通??梢员4嬖谖募到y(tǒng)中,比如NFS,這些數(shù)據(jù)可以被所有的server節(jié)點(diǎn)共享。但是單個(gè)NFS系統(tǒng)擴(kuò)展性是有限制的,一個(gè)NFS只能支撐4~8個(gè)server節(jié)點(diǎn)的訪問;對(duì)于更大規(guī)模的系統(tǒng),通常使用分布式文件系統(tǒng),比如GFS,這樣共享存儲(chǔ)系統(tǒng)可以根據(jù)需要進(jìn)行規(guī)模擴(kuò)展。

    負(fù)載均衡器、服務(wù)器集群、共享存儲(chǔ)系統(tǒng),這三者之間通常使用高速的網(wǎng)絡(luò)鏈接,比如100M和GB以太網(wǎng)網(wǎng)絡(luò),所以當(dāng)系統(tǒng)不斷增長(zhǎng)時(shí)網(wǎng)絡(luò)不會(huì)成為它們之間的瓶頸。

四、高可用性

    越來越多的重要應(yīng)用遷移到互聯(lián)網(wǎng)上,那么提供高可用的服務(wù)將變得非常重要。集群系統(tǒng)的優(yōu)勢(shì)之一就是軟硬件的冗余性,因?yàn)榧合到y(tǒng)有多個(gè)獨(dú)立的節(jié)點(diǎn)構(gòu)成,并且每個(gè)節(jié)點(diǎn)都運(yùn)行相同的應(yīng)用系統(tǒng),高可用性可以通過移除失效節(jié)點(diǎn)和適當(dāng)重新配置集群系統(tǒng)的手段實(shí)現(xiàn),集群中剩余的節(jié)點(diǎn)即可接管失效節(jié)點(diǎn)上的工作量。

    其實(shí)“高可用性”是一個(gè)較大的領(lǐng)域,一個(gè)先進(jìn)的高可用系統(tǒng)會(huì)包含可靠的“組通訊子系統(tǒng)”、“成員管理”、“quoram子系統(tǒng)”、“并發(fā)控制子系統(tǒng)”等等。其中必有很多事情需要解決,不過,我們可以使用現(xiàn)有的軟件包來構(gòu)建高可用的LVS集群系統(tǒng)。

    工作原理:

    通常情況下,負(fù)載均衡器會(huì)運(yùn)行一個(gè)監(jiān)控服務(wù)來間歇性的檢測(cè)server的健康狀況,如下圖所示。如果對(duì)server的服務(wù)訪問請(qǐng)求或者ICMP(ping)沒有收到響應(yīng),那么服務(wù)監(jiān)控(monitor)將會(huì)認(rèn)為此server已經(jīng)“dead”,并從可用server列表中移除,此后將不會(huì)有請(qǐng)求被轉(zhuǎn)發(fā)到此server上。當(dāng)monitor檢測(cè)到失效的server恢復(fù)正常,那么將此server重新添加到可用server列表中,因此負(fù)載均衡器可以自動(dòng)標(biāo)記失效的server。當(dāng)然,管理員也可以使用系統(tǒng)工具來增減server,以維護(hù)集群系統(tǒng),而無需關(guān)閉整個(gè)集群服務(wù)。

     不過負(fù)載均衡器或許成為整個(gè)系統(tǒng)的單點(diǎn)問題,為了避免因?yàn)樨?fù)載均衡器的失效而導(dǎo)致整個(gè)集群服務(wù)不可用,我們需要對(duì)負(fù)載均衡器增加backup(一個(gè)或多個(gè))。兩個(gè)heartbeat守護(hù)進(jìn)程分別運(yùn)行在primary和backup節(jié)點(diǎn),它們間歇性的互相發(fā)送心跳消息,如果backup的心跳進(jìn)程在一段時(shí)間內(nèi)無法收到來自(發(fā)送)primary節(jié)點(diǎn)的心跳消息,它將接管提供負(fù)載均衡服務(wù)的VIP地址;當(dāng)那個(gè)失效的負(fù)載均衡器恢復(fù)工作,此時(shí)會(huì)有2種情況,一是它成為backup,另一種情況則是當(dāng)前active的負(fù)載均衡器釋放VIP,它接管VIP并繼續(xù)成為primary。

    primary負(fù)載均衡器持有鏈接的狀態(tài),即客戶端鏈接被轉(zhuǎn)發(fā)到哪個(gè)server上,如果backup接管VIP后,其上沒有這些鏈接狀態(tài)的信息,客戶端需要重新請(qǐng)求。為了讓負(fù)載均衡器的故障轉(zhuǎn)移對(duì)客戶端應(yīng)用透明,我們?cè)贗PVS中實(shí)現(xiàn)了鏈接同步,primary IPVS將會(huì)把鏈接狀態(tài)信息通過UDP多播方式同步給backup。當(dāng)backup負(fù)載均衡器接管后,其上已經(jīng)持有了絕大多數(shù)鏈接狀態(tài)信息,所以幾乎所有的鏈接將可以繼續(xù)通過backup負(fù)載均衡器訪問服務(wù)。(備注:請(qǐng)參看keepalived相關(guān)技術(shù)文檔)

五、NAT模式

    歸因于IPv4地址的短缺或者一些安全原因,越來越多的網(wǎng)絡(luò)使用一些局域網(wǎng)地址(比如,以“10”、“198”、“172”開頭的IP地址)這些地址無法在互聯(lián)網(wǎng)上使用。如果這些內(nèi)部網(wǎng)絡(luò)地址需要訪問互聯(lián)網(wǎng),或者被互聯(lián)網(wǎng)訪問,則需要網(wǎng)絡(luò)地址轉(zhuǎn)換(發(fā)生在路由器上)。(即NAT模式下,只需要負(fù)載均衡器有實(shí)際外網(wǎng)IP即可,同時(shí)需要一個(gè)外網(wǎng)的VIP,對(duì)于real server則使用內(nèi)網(wǎng)IP)

    網(wǎng)絡(luò)地址轉(zhuǎn)換是將一組IP地址映射到另一組上。當(dāng)?shù)刂酚成涫荖到N,(即一對(duì)一),我們成為靜態(tài)網(wǎng)絡(luò)地址轉(zhuǎn)換;如果是M到N(M > N),這種情況稱之為動(dòng)態(tài)網(wǎng)絡(luò)地址轉(zhuǎn)換。其中N-1的這種mapping,使用linux IP偽裝實(shí)現(xiàn)。

    當(dāng)用戶訪問集群服務(wù)時(shí),請(qǐng)求數(shù)據(jù)包發(fā)往VIP地址(負(fù)載均衡器的地址)的負(fù)載均衡器,負(fù)載均衡器檢測(cè)數(shù)據(jù)包的地址和端口號(hào),根據(jù)虛擬服務(wù)器規(guī)則表,如果它們與虛擬服務(wù)器上的服務(wù)匹配(配置文件決定),那么將會(huì)根據(jù)調(diào)度算法從集群中選擇一個(gè)real server,此鏈接將會(huì)被添加到一個(gè)hashtable上,此hashtable記錄了那些已經(jīng)建立的鏈接。然后數(shù)據(jù)包的目標(biāo)地址和端口將會(huì)被重寫為當(dāng)前選擇的real server,并且數(shù)據(jù)包將會(huì)由負(fù)載均衡器轉(zhuǎn)給被選擇的real server。此后,來自此鏈接的數(shù)據(jù)包(package)且被選擇的real server能夠在hashtable中找到,那么數(shù)據(jù)包將繼續(xù)被重寫并轉(zhuǎn)發(fā)到此real server上。當(dāng)應(yīng)答的數(shù)據(jù)包返回時(shí),負(fù)載均衡器將數(shù)據(jù)包中的源地址和端口重寫為虛擬服務(wù)的地址和端口(LVS)并返回給客戶端。當(dāng)鏈接中斷或者超時(shí),鏈接記錄將會(huì)從hashtable中刪除。

    或許比較迷惑,那么我們看圖所示。

    real server可以運(yùn)行任何任何OS,只需要支持TCP/UDP即可,real servers的默認(rèn)路徑必須時(shí)虛擬服務(wù)器(172.16.0.1),ipwadm工具可以讓虛擬server接收來自real server的數(shù)據(jù)包。

 

     所有訪問的目標(biāo)地址為“202.103.106.5”端口為80的流量都會(huì)被負(fù)載均衡器轉(zhuǎn)發(fā)給“172.16.0.2:80”和“172.16.0.3:8000”。數(shù)據(jù)包重寫的方式如下所示:

Java代碼  收藏代碼

  1. #請(qǐng)求web服務(wù)的數(shù)據(jù)包包含源地址和目標(biāo)地址,其中源地址為客戶端地址,目標(biāo)地址為負(fù)載均衡器的VIP地址  

  2. SOURCE    202.100.1.2:3456    DEST    202.103.106.5:80  

  3. #負(fù)載軍很輕將會(huì)選擇一個(gè)real server,比如172.16.0.3:8000,數(shù)據(jù)包將會(huì)被重寫并轉(zhuǎn)發(fā)到此server:  

  4. SOURCE    202.100.1.2.3456    DEST    172.16.0.3:8000  

  5. #響應(yīng)的數(shù)據(jù)包到達(dá)負(fù)載均衡器  

  6. SOURCE    172.16.0.3:8000    DEST    202.100.1.2:3456  

  7. #負(fù)載均衡器將會(huì)重寫響應(yīng)包,并返回給客戶端  

  8. SOURCE    202.103.106.5:80    DEST    202.100.1.2:3456  

    關(guān)于NAT模式的LVS配置,請(qǐng)參見官網(wǎng)。

六、IP Tunneling模式

    對(duì)于小型的負(fù)載均衡架構(gòu),我們采用NAT模式即可滿足設(shè)計(jì)要求。那么當(dāng)集群擴(kuò)展到足夠大時(shí),NAT模式下負(fù)載均衡器將成為瓶頸,最大的原因就是響應(yīng)的數(shù)據(jù)也必須有負(fù)載均衡器重寫后轉(zhuǎn)發(fā)給客戶端。IP Tunneling能夠規(guī)避這個(gè)問題。

    IP Tunneling即IP封裝(IPIP協(xié)議),它將IP報(bào)文重新封裝成另一個(gè)IP報(bào)文的技術(shù),這就允許將發(fā)往一個(gè)IP地址的報(bào)文數(shù)據(jù)重新包裝并重定向到另一個(gè)IP地址。IP封裝技術(shù)目前常用在“Extranet”(外聯(lián)網(wǎng))、Mobile-IP、IP-Multicast等。具體請(qǐng)參見相關(guān)文檔。

    它和NAT模式最大的不同就是負(fù)載均衡器通過IP Tunneling方式將請(qǐng)求發(fā)送給real server。

    到達(dá)負(fù)載均衡器的請(qǐng)求數(shù)據(jù)包,將會(huì)進(jìn)行IP封裝并轉(zhuǎn)發(fā)給real server,當(dāng)server收到數(shù)據(jù)包后將會(huì)解包并處理請(qǐng)求,最終將響應(yīng)數(shù)據(jù)根據(jù)自己的路由直接返回給客戶端。

    需要注意的時(shí),real server可以使用任何實(shí)際的IP地址,它們可以是地址位置分散的,但是它們必須支持IP封裝協(xié)議。它們的“tunnel”設(shè)備需要配置起來,使得系統(tǒng)能夠正確的解包,同時(shí)VIP地址必須配置在非ARP設(shè)備上(non-arp),或者系統(tǒng)配置為可以將VIP上的數(shù)據(jù)包重定向本地socket。

    最終,當(dāng)一個(gè)封裝的數(shù)據(jù)包到達(dá)real server,real server解包,發(fā)現(xiàn)此包的目標(biāo)地址為VIP,那么它將處理此請(qǐng)求(因?yàn)閂IP地址已經(jīng)在tunel網(wǎng)卡接口上配置了),此后將響應(yīng)結(jié)果直接返回給用戶終端。其中最重要的一步就是將所有的real server的“tunnel”網(wǎng)絡(luò)接口增加VIP地址的配置。比如負(fù)載均衡器的VIP地址為“202.103.106.5”,那么在real server的“tunnel”網(wǎng)卡需要增加此VIP,否則數(shù)據(jù)包將被丟棄。

七、Direct Routing

    real server和負(fù)載均衡器共享VIP地址(同IP Tunneling),負(fù)載均衡器也需要在一個(gè)網(wǎng)卡接口上配置VIP地址,用來接受請(qǐng)求,它直接將請(qǐng)求數(shù)據(jù)轉(zhuǎn)發(fā)給選擇的real server,所有的real server需要在它們的非ARP網(wǎng)絡(luò)接口(non-arp)配置VIP地址,將來自VIP的數(shù)據(jù)包直接轉(zhuǎn)到給本地socket,所以real server可以在本地處理這些請(qǐng)求。負(fù)載均衡器和real servers的網(wǎng)絡(luò)接口中必須有一個(gè)通過HUB/Switch物理相連。架構(gòu)圖示如下:

    當(dāng)用戶通過LVS訪問集群服務(wù)時(shí),數(shù)據(jù)包被發(fā)往VIP,負(fù)載均衡器將會(huì)選擇一個(gè)real server,并將請(qǐng)求轉(zhuǎn)發(fā)給它,real server接收到請(qǐng)求數(shù)據(jù)后,發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)地址在自己的網(wǎng)絡(luò)接口上,所以它將繼續(xù)處理請(qǐng)求,并直接將響應(yīng)結(jié)果返回給終端用戶。

    負(fù)載均衡器只是簡(jiǎn)單的將數(shù)據(jù)幀的目標(biāo)MAC地址修改為real server的mac地址,并在LAN上重新發(fā)送(路由器),這也是負(fù)載均衡器和real server必須通過單個(gè)不間斷的LAN網(wǎng)段直接相連的原因。(即負(fù)載均衡器需要與real server在一個(gè)LAN網(wǎng)段中,且它們?cè)谠谝粋€(gè)網(wǎng)卡上配置VIP)。

    關(guān)于LVS的相關(guān)配置與安裝,請(qǐng)參見其他文檔。

八、調(diào)度算法

    LVS中負(fù)載均衡器共有10中算法,其中五種比較常用:

    1)輪詢(Round Robin):將請(qǐng)求有序的分發(fā)給不同的real server,這是一種比較公平的算法。

    2)加權(quán)輪詢(Weighted Round-Robin):根據(jù)real server的實(shí)際處理能力不同,而設(shè)定不同的權(quán)重,在請(qǐng)求分發(fā)時(shí)采用輪詢,權(quán)重越高的server將獲得更多的請(qǐng)求。

    3)最小鏈接數(shù)(Least Connections):將請(qǐng)求分發(fā)給鏈接數(shù)最少的real server。這是動(dòng)態(tài)負(fù)載均衡比較常用的算法。

    4)加權(quán)最小鏈接數(shù):

    5)源地址散列(Source Hashing):根據(jù)請(qǐng)求的源IP地址作為hash key,real servers作為散列表。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多