一、負(fù)載均衡的方式
我們知道服務(wù)器集群的重要性以及必要性,而實(shí)現(xiàn)服務(wù)器集群主要就是為了負(fù)載均衡(L
OAd Balance),負(fù)載均衡就是有兩臺(tái)或者以上的服務(wù)器或者站點(diǎn)為我們提供服務(wù),我們將來(lái)自客戶(hù)端的請(qǐng)求靠某種算法盡量平均分?jǐn)偟竭@些集群中,從而避免一臺(tái)服務(wù)器因?yàn)樨?fù)載太高而出現(xiàn)故障。
簡(jiǎn)而言之便是將所有的負(fù)載均分到多臺(tái)服務(wù)器中,即使其中某個(gè)出現(xiàn)故障,用戶(hù)也能正常訪問(wèn),得到服務(wù)。
而從早期到現(xiàn)在出現(xiàn)的負(fù)載均衡方式有這樣的兩種:
•硬件負(fù)載均衡
•軟件負(fù)載均衡
其中硬件負(fù)載均衡解決方案是直接在服務(wù)器和外部網(wǎng)絡(luò)間安裝負(fù)載均衡設(shè)備,由專(zhuān)門(mén)的設(shè)備完成專(zhuān)門(mén)的任務(wù),獨(dú)立于操作系統(tǒng),整體性能得到大量提高,加上多樣化的負(fù)載均衡策略,智能化的流量管理,但是相對(duì)來(lái)說(shuō)成本較高。
而常用的負(fù)載均衡器有這樣一些:
•F5 BIG-IP
•Citrix Netscaler
•Alteon ACEDirector
•Cisco LocalDirector
•A10 負(fù)載均衡器
•梭子魚(yú)負(fù)載均衡器
F5-Big-IP受到了用戶(hù)的廣泛認(rèn)可,基于簡(jiǎn)單的Web管理界面,實(shí)現(xiàn)4-7層負(fù)載均衡、通用持續(xù)性、響應(yīng)錯(cuò)誤處理、SSL加速、智能HTTP壓縮、TCP優(yōu)化、第7層速率整形、內(nèi)容緩沖、應(yīng)用攻擊過(guò)濾、拒絕服務(wù)(DoS)攻擊和SYN Flood保護(hù)等等強(qiáng)大的功能
而更加廣泛的則是使用軟件的方式來(lái)實(shí)現(xiàn)負(fù)載均衡,實(shí)現(xiàn)效果不錯(cuò),并且不需要成本是很多企業(yè)選擇的方式。其中常用的方式有:
•LVS
•Nginx
•HAProxy
其中 LVS 主要工作與網(wǎng)絡(luò)模型中的第四層,而 Nginx 主要工作于第七層,而 HAProxy 是一款提供高可用性、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理軟件,支持虛擬主機(jī)。
其中 LVS 抗負(fù)載能力強(qiáng)只是工作在網(wǎng)絡(luò)4層之上僅作分發(fā)之用,沒(méi)有流量的產(chǎn)生,并且工作穩(wěn)定,自身有完整的雙機(jī)熱備方案,如LVS+Keepalived和LVS+Heartbeat,在項(xiàng)目實(shí)施中用得最多的還是LVS/DR+Keepalived。
二、LVS 的集群特點(diǎn)
LVS 集群有這樣的一些特點(diǎn):
1、在功能上:
•有實(shí)現(xiàn)三種IP負(fù)載均衡技術(shù)和八種連接調(diào)度算法的IPVS軟件。在IPVS內(nèi)部實(shí)現(xiàn)上,采用了高效的Hash函數(shù)和垃圾回收機(jī)制,能正確處理所調(diào)度報(bào)文相 關(guān)的ICMP消息(有些商品化的系統(tǒng)反而不能)。虛擬服務(wù)的設(shè)置數(shù)目沒(méi)有限制,每個(gè)虛擬服務(wù)有自己的服務(wù)器集。它支持持久的虛擬服務(wù)(如HTTP Cookie和HTTPS等需要該功能的支持),并提供詳盡的統(tǒng)計(jì)數(shù)據(jù),如連接的處理速率和報(bào)文的流量等。針對(duì)大規(guī)模拒絕服務(wù)(Deny of Service)攻擊,實(shí)現(xiàn)了三種防衛(wèi)策略。
•有基于內(nèi)容請(qǐng)求分發(fā)的應(yīng)用層交換軟件KTCPVS,它也是在Linux內(nèi)核中實(shí)現(xiàn)。有相關(guān)的集群管理軟件對(duì)資源進(jìn)行監(jiān)測(cè),能及時(shí)將故障屏蔽,實(shí)現(xiàn)系統(tǒng)的高可用性。主、從調(diào)度器能周期性地進(jìn)行狀態(tài)同步,從而實(shí)現(xiàn)更高的可用性。
2、在適用性上:
•后端服務(wù)器可運(yùn)行任何支持TCP/IP的操作系統(tǒng),包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
•負(fù)載調(diào)度器能夠支持絕大多數(shù)的TCP和UDP協(xié)議: | 協(xié) 議 | 內(nèi) 容 | |--------|--------| | TCP | HTTP,F(xiàn)TP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等| UDP | DNS,NTP,ICP,視頻、音頻流播放協(xié)議等 |無(wú)需對(duì)客戶(hù)機(jī)和服務(wù)器作任何修改,可適用大多數(shù)Internet服務(wù)。
3、在性能上:
LVS服務(wù)器集群系統(tǒng)具有良好的伸縮性,可支持幾百萬(wàn)個(gè)并發(fā)連接。配置100M網(wǎng)卡,采用VS/TUN或VS/DR調(diào)度技術(shù),集群系統(tǒng)的吞吐量可高達(dá)1Gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10Gbits/s。
三、LVS 的工作框架
Linux Virtual Server 項(xiàng)目的目標(biāo):使用集群技術(shù)和 Linux 操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能、高可用的服務(wù)器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS項(xiàng)目已提供了一個(gè)實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的Linux Virtual Server框架:
LVS_framework在LVS框架中,提供了含有三種IP負(fù)載均衡技術(shù)的IP虛擬服務(wù)器軟件:
•IPVS:實(shí)現(xiàn)IP負(fù)載均衡。在調(diào)度器的實(shí)現(xiàn)技術(shù)中,IP負(fù)載均衡技術(shù)是效率最高的,只需做到對(duì)數(shù)據(jù)包的分發(fā)。
•基于內(nèi)容請(qǐng)求分發(fā)的內(nèi)核 Layer-7 交換機(jī) KTCPVS(Kernel TCP Virtual Server)
•集群管理軟件
四、LVS 的組成部分
LVS集群采用三層結(jié)構(gòu),三層主要組成部分為:
•負(fù)載調(diào)度器(load balancer),它是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶(hù)的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶(hù)認(rèn)為服務(wù)是來(lái)自一個(gè)IP地址(我們可稱(chēng)之為虛擬IP地址)上的。
•服務(wù)器池(server pool),是一組真正執(zhí)行客戶(hù)請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有 WEB、MAIL、FTP 和 DNS 等。
•共享存儲(chǔ)(shared storage),它為服務(wù)器池提供一個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。
五、以軟件實(shí)現(xiàn)的負(fù)載均衡的方式:
有兩種方式:
•基于應(yīng)用層負(fù)載均衡
•基于IP層負(fù)載均衡
基于應(yīng)用層負(fù)載均衡:多臺(tái)服務(wù)器通過(guò)高速的互聯(lián)網(wǎng)絡(luò)連接成一個(gè)集群系統(tǒng),在前端有一個(gè)基于應(yīng)用層的負(fù)載調(diào)度器。當(dāng)用戶(hù)訪問(wèn)請(qǐng)求到達(dá)調(diào)度器時(shí),請(qǐng)求會(huì)提交給作負(fù)載均衡調(diào)度的應(yīng)用程序,分析請(qǐng)求,根據(jù)各個(gè)服務(wù)器的負(fù)載情況,選出一臺(tái)服務(wù)器,重寫(xiě)請(qǐng)求并向選出的服務(wù)器訪問(wèn),取得結(jié)果后,再返回給用戶(hù)。
典型的代表有 Nginx 以及 Apache 的 Rewrite 模塊。
應(yīng)用層的負(fù)載均衡實(shí)現(xiàn)這樣強(qiáng)大的功能也會(huì)付出一定的代價(jià):
•系統(tǒng)處理開(kāi)銷(xiāo)較大,致使系統(tǒng)的伸縮性有限。
•基于應(yīng)用層的負(fù)載均衡調(diào)度器對(duì)于不同的應(yīng)用,需要寫(xiě)不同的調(diào)度器。
基于 IP 層負(fù)載均衡:用戶(hù)通過(guò)虛擬 IP 地址(Virtual IP Address)訪問(wèn)服務(wù)時(shí),訪問(wèn)請(qǐng)求的報(bào)文會(huì)到達(dá)負(fù)載調(diào)度器,由它進(jìn)行負(fù)載均衡調(diào)度,從一組真實(shí)服務(wù)器選出一個(gè),將報(bào)文處理并轉(zhuǎn)發(fā)給選定服務(wù)器的地址。實(shí)服務(wù)器的回應(yīng)報(bào)文經(jīng)過(guò)負(fù)載調(diào)度器時(shí),將報(bào)文的源地址和源端口改為 Virtual IP Address 和相應(yīng)的端口,再把報(bào)文發(fā)給用戶(hù)。
而 IP 的負(fù)載技術(shù)有以下三種模式:
•通過(guò)NAT實(shí)現(xiàn)虛擬服務(wù)器(VS/NAT)
•通過(guò)IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN)
•通過(guò)直接路由實(shí)現(xiàn)虛擬服務(wù)器(VS/DR)
并且在調(diào)度器上配置了 8 種調(diào)度算法:
•輪叫(Round Robin):調(diào)度器通過(guò)"輪叫"調(diào)度算法將外部請(qǐng)求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。
•加權(quán)輪叫(Weighted Round Robin):調(diào)度器通過(guò)"加權(quán)輪叫"調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來(lái)調(diào)度訪問(wèn)請(qǐng)求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問(wèn)流量。調(diào)度器可以自動(dòng)問(wèn)詢(xún)真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
•最少鏈接(Least Connections):調(diào)度器通過(guò)"最少連接"調(diào)度算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用"最小連接"調(diào)度算法可以較好地均衡負(fù)載。
•加權(quán)最少鏈接(Weighted Least Connections):在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用"加權(quán)最少鏈接"調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問(wèn)詢(xún)真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
•基于局部性的最少鏈接(Locality-Based Least Connections):"基于局部性的最少鏈接" 調(diào)度算法是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器 是可用的且沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用"最少鏈接"的原則選出一個(gè)可用的服務(wù) 器,將請(qǐng)求發(fā)送到該服務(wù)器。
•帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication):"帶復(fù)制的基于局部性最少鏈接"調(diào)度算法也是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個(gè) 目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個(gè)目標(biāo)IP地址到一臺(tái)服務(wù)器的映射。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址對(duì)應(yīng)的服務(wù) 器組,按"最小連接"原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按"最小連接"原則從這個(gè)集群中選出一 臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請(qǐng)求發(fā)送到該服務(wù)器。同時(shí),當(dāng)該服務(wù)器組有一段時(shí)間沒(méi)有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的 程度。
•目標(biāo)地址散列(Destination Hashing):"目標(biāo)地址散列"調(diào)度算法根據(jù)請(qǐng)求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。
•源地址散列(Source Hashing):"源地址散列"調(diào)度算法根據(jù)請(qǐng)求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。
六、LVS 所提供的 IP 負(fù)載均衡的三種技術(shù)
1、VS/NAT 實(shí)現(xiàn)虛擬服務(wù)器
由于 IPv4 中 IP 地址空間的日益緊張和安全方面的原因,很多網(wǎng)絡(luò)使用保留 IP 地址(10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)。這些地址不在 Internet 上使用,而是專(zhuān)門(mén)為內(nèi)部網(wǎng)絡(luò)預(yù)留的。
當(dāng)內(nèi)部網(wǎng)絡(luò)中的主機(jī)要訪問(wèn) Internet 或被 Internet 訪問(wèn)時(shí),就需要采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, 以下簡(jiǎn)稱(chēng)NAT),將內(nèi)部地址轉(zhuǎn)化為 Internet 上可用的外部地址。
NAT 的工作原理是報(bào)文頭(目標(biāo)地址、源地址和端口等)被正確改寫(xiě)后,客戶(hù)相信 它們連接一個(gè) IP 地址,而不同 IP 地址的服務(wù)器組也認(rèn)為它們是與客戶(hù)直接相連的。由此,可以用 NAT 方法將不同 IP 地址的并行網(wǎng)絡(luò)服務(wù)變成在一個(gè)IP地址上的一個(gè)虛擬服務(wù)。
VS/NAT(Virtual Server via Network Address Translation)實(shí)現(xiàn)的虛擬服務(wù)器是這樣的一個(gè)結(jié)構(gòu),主要經(jīng)過(guò)這樣的一些步驟:
LVS-NAT•客戶(hù)端通過(guò) Internet 向服務(wù)器發(fā)起請(qǐng)求,而請(qǐng)求的 IP 地址指向的是調(diào)度器上對(duì)外公布的 IP 地址;(因?yàn)樗⒉皇钦嬲幚碚?qǐng)求的服務(wù)器 IP 地址,所以稱(chēng)之為 虛擬 IP 地址,簡(jiǎn)稱(chēng)為 VIP,Virtual IP Address)
•請(qǐng)求報(bào)文到達(dá)調(diào)度器(Load Balancer),調(diào)度器根據(jù)調(diào)度算法從一組真實(shí)的服務(wù)器(因?yàn)樗麄兪钦嬲幚碛脩?hù)請(qǐng)求的服務(wù)器,所以稱(chēng)為真實(shí)服務(wù)器,Real server。其 IP 地址也被稱(chēng)為真實(shí) IP,簡(jiǎn)稱(chēng)為 RIP)中選出一臺(tái)當(dāng)前負(fù)載不高的服務(wù)器。然后將客戶(hù)端的請(qǐng)求報(bào)文中的目標(biāo)地址(Load Balancer 的 VIP)和端口通過(guò) iptables 的 NAT 改寫(xiě)為選定服務(wù)器的 IP 地址和服務(wù)的端口。最后將修改后的報(bào)文發(fā)送給選出的服務(wù)器。同時(shí),調(diào)度器在連接Hash 表中記錄這個(gè)連接;當(dāng)這個(gè)連接的下一個(gè)報(bào)文到達(dá)時(shí),從連接Hash表中可以得到原選定服務(wù)器的地址和端口,進(jìn)行同樣的改寫(xiě)操作,并將報(bào)文傳給原選定的服務(wù)器。
•Real Server 接收到報(bào)文之后,做出了響應(yīng)的處理,然后將響應(yīng)的報(bào)文發(fā)送給 Load Balancer;
•Load Balancer 接收到響應(yīng)的報(bào)文時(shí),將報(bào)文的源地址和源端口改為Virtual IP Address和相應(yīng)的端口,再把報(bào)文發(fā)給用戶(hù)。
這樣,客戶(hù)所看到的只是在 Virtual IP Address 上提供的服務(wù),而服務(wù)器集群的結(jié)構(gòu)對(duì)用戶(hù)是透明的。
下面,舉個(gè)例子來(lái)進(jìn)一步說(shuō)明VS/NAT,如圖所示:
NAT-egVS/NAT 的配置如下表所示,所有到IP地址為205.100.106.2和端口為80的流量都被負(fù)載均衡地調(diào)度的真實(shí)服務(wù)器172.16.1.3:80和 172.16.1.4:8080上。目標(biāo)地址為205.100.106.2:21的報(bào)文被轉(zhuǎn)移到172.16.1.3:21上。而到其他端口的報(bào)文將被拒絕。

當(dāng)客戶(hù)端訪問(wèn)Web服務(wù)的時(shí)候,報(bào)文中可能有以下的源地址和目標(biāo)地址:
報(bào)文到達(dá)調(diào)度器之后,調(diào)度器從調(diào)度列表中選出一臺(tái)服務(wù)器,例如是172.16.1.4:8080。該報(bào)文會(huì)被改寫(xiě)為如下地址,并將它發(fā)送給選出的服務(wù)器。
Real Server 收到修改后的報(bào)文之后,做出響應(yīng),然后將響應(yīng)報(bào)文返回到調(diào)度器,報(bào)文如下:
響應(yīng)報(bào)文的源地址會(huì)被 Load Balacer 改寫(xiě)為虛擬服務(wù)的地址,再將報(bào)文發(fā)送給客戶(hù):
這樣,客戶(hù)認(rèn)為是從202.103.106.5:80服務(wù)得到正確的響應(yīng),而不會(huì)知道該請(qǐng)求是 Real Server1 還是 Real Server2 處理的。
這便是 VS/NAT 的處理數(shù)據(jù)包的整個(gè)過(guò)程,它有這樣的一些特點(diǎn):
•集群節(jié)點(diǎn),也就是 Real Server 與 Load Balacer 必須在同一個(gè) IP 網(wǎng)絡(luò)中
•Load Balancer 位于 Real Server 與客戶(hù)端之間,處理進(jìn)出的所有通信
•RIP 通常是私有地址,僅用于各個(gè)集群節(jié)點(diǎn)之間的通信。
•Real Server 的網(wǎng)關(guān)必須指向 Load Balancer
•支持端口映射:也就是Real Server 的端口可以自己設(shè)定,沒(méi)有必須是與 Load Balancer 一樣
VS/NAT 的優(yōu)勢(shì)在于可以做到端口映射,但是 Load Balancer 將可能成為集群的瓶頸。因?yàn)樗械某鋈雸?bào)文都需要 Load Balancer 處理,請(qǐng)求報(bào)文較小不是問(wèn)題,但是響應(yīng)報(bào)文往往較大,都需要 NAT 轉(zhuǎn)換的話(huà),大流量的時(shí)候,Load Balancer 將會(huì)處理不過(guò)來(lái)。一般使用 VS/NAT 的話(huà),處理 Real Server 數(shù)量達(dá)到 10~20 臺(tái)左右將是極限,并且效率往往不高。
2、VS/DR 實(shí)現(xiàn)虛擬服務(wù)器
在VS/NAT 的集群系統(tǒng)中,請(qǐng)求和響應(yīng)的數(shù)據(jù)報(bào)文都需要通過(guò)負(fù)載調(diào)度器,當(dāng)真實(shí)服務(wù)器的數(shù)目在10臺(tái)和20臺(tái)之間時(shí),負(fù)載調(diào)度器將成為整個(gè)集群系統(tǒng)的新瓶頸。大多數(shù) Internet服務(wù)都有這樣的特點(diǎn):請(qǐng)求報(bào)文較短而響應(yīng)報(bào)文往往包含大量的數(shù)據(jù)。
既然同時(shí)處理進(jìn)出報(bào)文會(huì)大大的影響效率,增加機(jī)器的負(fù)載,那么若是僅僅處理進(jìn)來(lái)的報(bào)文,即在負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請(qǐng)求,而出去的報(bào)文由 Real Server 直接發(fā)給客戶(hù)端這樣豈不是高效許多。
VS/DR(Virtual Server via Direct Routing)利用大多數(shù)Internet服務(wù)的非對(duì)稱(chēng)特點(diǎn),負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請(qǐng)求,而服務(wù)器直接將響應(yīng)返回給客戶(hù),可以極大地提高整個(gè)集群 系統(tǒng)的吞吐量。
VS/DR 實(shí)現(xiàn)的虛擬服務(wù)器是這樣的一個(gè)結(jié)構(gòu),主要經(jīng)過(guò)這樣的一些步驟:
DR-sturct•客戶(hù)端通過(guò) Internet 向服務(wù)器發(fā)起請(qǐng)求,而請(qǐng)求的 IP 地址指向的是調(diào)度器上對(duì)外公布的 IP 地址;
•請(qǐng)求報(bào)文到達(dá)調(diào)度器(Load Balancer),調(diào)度器根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,不修改也不封裝IP報(bào)文,而是將數(shù)據(jù)幀的MAC地址改為選出服務(wù)器的MAC地址,再將修改后 的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。因?yàn)閿?shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到這個(gè)數(shù)據(jù)幀;
•Real Server 接收到報(bào)文之后,發(fā)現(xiàn)報(bào)文的目標(biāo)地址 VIP 是在本地的網(wǎng)絡(luò)設(shè)備上,服務(wù)器處理這個(gè)報(bào)文,然后根據(jù)路由表將響應(yīng)報(bào)文直接返回給客戶(hù)。
change-MAC在VS/DR中,根據(jù)缺省的TCP/IP協(xié)議棧處理,請(qǐng)求報(bào)文的目標(biāo)地址為VIP,響應(yīng)報(bào)文的源地址肯定也為VIP,所以響應(yīng)報(bào)文不需要作任何修改,可以直接返回給客戶(hù),客戶(hù)認(rèn)為得到正常的服務(wù),而不會(huì)知道是哪一臺(tái)服務(wù)器處理的。
這便是 VS/DR 的處理數(shù)據(jù)包的整個(gè)過(guò)程,它有這樣的一些特點(diǎn):
•集群節(jié)點(diǎn),也就是 Real Server 與 Load Balacer 必須在同一個(gè)物理網(wǎng)絡(luò)中(若是不同網(wǎng)段的話(huà)結(jié)構(gòu)將變得復(fù)雜)
•RIP 通常是私有地址,也可以是公網(wǎng)地址,以便于遠(yuǎn)程管理與監(jiān)控。
•Load Balancer 僅僅負(fù)責(zé)處理入站的請(qǐng)求,Real Server 將直接響應(yīng)客戶(hù)端
•Real Server 的網(wǎng)關(guān)不能指向 Load Balancer
•不支持端口映射:也就是Real Server 的端口必須是與 Load Balancer 對(duì)外服務(wù)的一樣
3、VS/TUN 實(shí)現(xiàn)虛擬服務(wù)器
VS/DR 限制 Real Server 與 Load Balancer 必須在同一個(gè)物理網(wǎng)絡(luò)中,那若是分散在各地豈不是無(wú)法使用?所以有了 VS/TUN(Virtual Server via IP Tunneling)的誕生。
IP隧道(IP tunneling)是將一個(gè)IP報(bào)文封裝在另一個(gè)IP報(bào)文的技術(shù),這可以使得目標(biāo)為一個(gè)IP地址的數(shù)據(jù)報(bào)文能被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP地址。IP隧道技術(shù)亦稱(chēng)為IP封裝技術(shù)(IP encapsulation)。IP隧道主要用于移動(dòng)主機(jī)和虛擬私有網(wǎng)絡(luò)(Virtual Private Network),在其中隧道都是靜態(tài)建立的,隧道一端有一個(gè)IP地址,另一端也有唯一的IP地址。
我們利用IP隧道技術(shù)將請(qǐng)求報(bào)文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)報(bào)文能從后端服務(wù)器直接返回給客戶(hù)。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對(duì)應(yīng)的隧道,而是動(dòng)態(tài)地選擇 一臺(tái)服務(wù)器,將請(qǐng)求報(bào)文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成在一個(gè)IP地址上的虛擬網(wǎng)絡(luò)服務(wù)。 VS/TUN的體系結(jié)構(gòu)如圖所示,各個(gè)服務(wù)器將VIP地址配置在自己的IP隧道設(shè)備上。
Tunnel-sturct它的連接調(diào)度和管理與VS/NAT中的一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同。調(diào)度器根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動(dòng)態(tài)地選擇一臺(tái)服務(wù)器, 將請(qǐng)求報(bào)文封裝在另一個(gè) IP 報(bào)文中,再將封裝后的 IP 報(bào)文轉(zhuǎn)發(fā)給選出的服務(wù)器;服務(wù)器收到報(bào)文后,先將報(bào)文解封獲得原來(lái)目標(biāo)地址為 VI P的報(bào)文,服務(wù)器發(fā)現(xiàn)VIP地址被配置在本地的 IP隧道設(shè)備上,所以就處理這個(gè)請(qǐng)求,然后根據(jù)路由表將響應(yīng)報(bào)文直接返回給客戶(hù)。
這便是 VS/TUN 的處理數(shù)據(jù)包的整個(gè)過(guò)程,它有這樣的一些特點(diǎn):
•集群節(jié)點(diǎn),也就是 Real Server 與 Load Balacer 可以跨越公網(wǎng)
•RIP 必須是公網(wǎng)地址。
•Load Balancer 僅僅負(fù)責(zé)處理入站的請(qǐng)求,Real Server 將直接響應(yīng)客戶(hù)端
•Real Server 的網(wǎng)關(guān)不能指向 Load Balancer
•不支持端口映射:也就是Real Server 的端口必須是與 Load Balancer 對(duì)外服務(wù)的一樣
這便是 LVS 所提供的 IP 負(fù)載均衡的三種技術(shù),我們可以根據(jù)自己的情況做出不同的選擇。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:漫談 LVS (Linux虛擬服務(wù)器)
本文網(wǎng)址:http://www.guhuozai8.cn/html/support/11121521060.html