一、負(fù)載均衡LVS基本介紹
-
LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務(wù)器。這是一個(gè)由章文嵩博士發(fā)起的一個(gè)開源項(xiàng)目,它的官方網(wǎng)站是 http://www.linuxvirtualserver.org。
- LVS是Linux內(nèi)核標(biāo)準(zhǔn)的一部分。LVS是一個(gè)實(shí)現(xiàn)負(fù)載均衡集群的開源軟件項(xiàng)目,通過 LVS 的負(fù)載均衡技術(shù)和 Linux操作系統(tǒng)可以實(shí)現(xiàn)一個(gè)高性能高可用的 Linux 服務(wù)器集群,它具有良好的可靠性、可擴(kuò)展性和可操作性。
- LVS架構(gòu)從邏輯上可分為調(diào)度層、Server集群層和共享存儲(chǔ)。LVS實(shí)際上相當(dāng)于基于IP地址的虛擬化應(yīng)用。
二、LVS的組成
LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。
- ipvs(ip virtual server):工作在內(nèi)核空間,是真正生效實(shí)現(xiàn)調(diào)度的代碼。
- ipvsadm:工作在用戶空間,負(fù)責(zé)為ipvs內(nèi)核框架編寫規(guī)則,定義誰是集群服務(wù),而誰是后端真實(shí)的服務(wù)器(Real Server)
三、LVS相關(guān)術(shù)語
- DS:Director Server, 指的是前端負(fù)載均衡器節(jié)點(diǎn)。
- RS:Real Server, 后端真實(shí)的工作服務(wù)器。
- VIP:向外部直接面向用戶請(qǐng)求,作為用戶請(qǐng)求的目標(biāo)的IP地址。
- DIP:Director Server IP, 前端負(fù)載均衡器IP地址,主要用于和內(nèi)部主機(jī)通信。
- RIP:Real Server IP, 后端服務(wù)器的IP地址。
- CIP:Client IP, 訪問客戶端的IP地址
四、LVS的工作模式介紹
LVS負(fù)載均衡常見的有三種工作模式,分別是地址轉(zhuǎn)換(簡稱NAT模式)、IP隧道(簡稱TUN模式)和直接路由(簡稱DR模式),其實(shí)企業(yè)中最常用的是 DR 實(shí)現(xiàn)方式,而 NAT 配置上比較簡單和方便,下面總結(jié) DR 和 NAT 原理和特點(diǎn):
1. LVS-NAT模式
(1) LVS-NAT原理
類似于防火墻的私有網(wǎng)絡(luò)結(jié)構(gòu),Director Server作為所有服務(wù)器節(jié)點(diǎn)的網(wǎng)關(guān),,即作為客戶端的訪問入口,也是各節(jié)點(diǎn)回應(yīng)客戶端的訪問出口,其外網(wǎng)地址作為整個(gè)群集的VIP地址,其內(nèi)網(wǎng)地址與后端服務(wù)器Real Server在同一個(gè)物理網(wǎng)絡(luò),Real Server必須使用私有IP地址。
數(shù)據(jù)包流向分析
-
用戶發(fā)送請(qǐng)求到Director Server,請(qǐng)求的數(shù)據(jù)報(bào)文(源IP是CIP,目標(biāo)IP是VIP)到達(dá)內(nèi)核空間。
-
內(nèi)核空間判斷數(shù)據(jù)包的目標(biāo)IP是本機(jī),此時(shí)IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,修改數(shù)據(jù)包的目標(biāo)IP地址為后端服務(wù)器IP,重新封裝數(shù)據(jù)包(源IP為CIP,目標(biāo)IP為RIP),然后選路將數(shù)據(jù)包發(fā)送給Real Server。
-
Real Server比對(duì)發(fā)現(xiàn)目標(biāo)IP是本機(jī)的IP,重新封裝報(bào)文(源IP為RIP,目標(biāo)IP為CIP)發(fā)回給Director Server。
- Director Server重新封裝數(shù)據(jù)包,將源IP地址修改為自己的VIP地址,然后響應(yīng)給客戶端。 此時(shí)報(bào)文的源IP為VIP,目標(biāo)IP為CIP。
(2) LVS-NAT模型的特點(diǎn)
-
RS必須使用私有IP地址,網(wǎng)關(guān)指向DIP。
-
DIP與RIP必須在同一網(wǎng)段內(nèi)。
-
DS作為所有服務(wù)器節(jié)點(diǎn)的網(wǎng)關(guān),也就是說請(qǐng)求和響應(yīng)報(bào)文都需要經(jīng)過Director Server。
-
支持端口映射
- 高負(fù)載場景中,Director Server壓力比較大,易成為性能瓶頸。
2. LVS-DR模式
(1) LVS-DR原理
Director Server作為群集的訪問入口,但不作為網(wǎng)關(guān)使用,后端服務(wù)器池中的Real Server與Director Server在同一個(gè)物理網(wǎng)絡(luò)中,發(fā)送給客戶機(jī)的數(shù)據(jù)包不需要經(jīng)過Director Server。為了響應(yīng)對(duì)整個(gè)群集的訪問,DS與RS都需要配置有VIP地址。
數(shù)據(jù)包流向分析
-
用戶發(fā)送請(qǐng)求到Director Server,請(qǐng)求的數(shù)據(jù)報(bào)文(源IP是CIP,目標(biāo)IP是VIP)到達(dá)內(nèi)核空間。
- 由于DS和RS在同一個(gè)網(wǎng)絡(luò)中,所以是通過二層數(shù)據(jù)鏈路層來傳輸。
- 內(nèi)核空間判斷數(shù)據(jù)包的目標(biāo)IP是本機(jī)IP,此時(shí)IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,重新封裝數(shù)據(jù)包,修改源MAC地址為DIP的MAC地址,目標(biāo)MAC地址為RIP的MAC地址,源IP地址與目標(biāo)IP地址沒有改變,然后將數(shù)據(jù)包發(fā)送給Real Server.
- RS發(fā)現(xiàn)請(qǐng)求報(bào)文的MAC地址是自己的MAC地址,就接收此報(bào)文,重新封裝報(bào)文(源IP地址為VIP,目標(biāo)IP為CIP),將響應(yīng)報(bào)文通過lo接口傳送給eth0網(wǎng)卡然后向外發(fā)出。
- RS直接將響應(yīng)報(bào)文傳送到客戶端。
(2) LVS-DR模型的特點(diǎn)
- RS和DS必須在同一個(gè)物理網(wǎng)絡(luò)中。
- RS可以使用私有地址,也可以使用公網(wǎng)地址,如果使用公網(wǎng)地址,可以通過互聯(lián)網(wǎng)對(duì)RIP進(jìn)行直接訪問。
- 所有的請(qǐng)求報(bào)文經(jīng)由Director。 Server,但響應(yīng)報(bào)文必須不能經(jīng)過Director Server。
- RS的網(wǎng)關(guān)絕不允許指向DIP(不允許數(shù)據(jù)包經(jīng)過director)。
- RS上的lo接口配置VIP的IP地址。
LVS-DR模式需要注意的是:
保證前端路由將目標(biāo)地址為VIP報(bào)文統(tǒng)統(tǒng)發(fā)給Director Server,而不是RS。
解決方案是:修改RS上內(nèi)核參數(shù)(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,并限制其不能響應(yīng)對(duì)VIP地址解析請(qǐng)求。
-
arp_ignore=1表示系統(tǒng)只響應(yīng)目的IP為本地IP的ARP請(qǐng)求。
- arp_announce=2表示系統(tǒng)不使用IP包的源地址來設(shè)置ARP請(qǐng)求的源地址,而選擇發(fā)送接口的IP地址。
五、LVS的負(fù)載調(diào)度算法
最常用的有四種;輪詢(rr)、加權(quán)輪詢(wrr)、最少連接(lc)和加權(quán)最少連接(wlc)。
- 輪詢(rr):將收到的訪問請(qǐng)求按照順序輪流調(diào)度到不同的服務(wù)器上,不管后端真實(shí)服務(wù)器的實(shí)際連接數(shù)和系統(tǒng)負(fù)載。
- 加權(quán)輪詢(wrr):給RS設(shè)置權(quán)重,權(quán)重越高,那么分發(fā)的請(qǐng)求數(shù)越多,權(quán)重的取值范圍0–100。根據(jù)每臺(tái)服務(wù)器的性能,給每臺(tái)服務(wù)器添加權(quán)值,如果RS1的權(quán)值為1,RS2的權(quán)值為2,那么調(diào)度到RS2的請(qǐng)求會(huì)是RS1的2倍。權(quán)值越高的服務(wù)器,處理的請(qǐng)求越多。這種算法是對(duì)rr算法的一種優(yōu)化和補(bǔ)充。
- 最少連接(lc):根據(jù)后端RS的連接數(shù)來決定把請(qǐng)求分發(fā)給誰,比RS1連接數(shù)比RS2連接數(shù)少,那么請(qǐng)求就優(yōu)先發(fā)給RS1。
- 加權(quán)最少連接(wlc):根據(jù)后端RS的權(quán)重和連接數(shù)來決定把請(qǐng)求分發(fā)給誰,權(quán)重較高,連接數(shù)少的RS會(huì)優(yōu)先處理請(qǐng)求。
六、LVS的共享存儲(chǔ)服務(wù)器
為后端真實(shí)服務(wù)器提供穩(wěn)定、一致的文件存取服務(wù),在Linux/Unix環(huán)境中,共享存儲(chǔ)可以使用NAS設(shè)備或者提供NFS(網(wǎng)絡(luò)文件系統(tǒng))共享服務(wù)的專用服務(wù)器。一般放在私有網(wǎng)絡(luò)中。