(一)LVS概念
LVS( Linux Virtual Server)是一種負(fù)載均衡(LB,Laod Balance)技術(shù),采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行。LVS是一套組件(ipvs與ipvsadm),類似與iptables,ipvs相當(dāng)于netfilter,是能將用戶請(qǐng)求轉(zhuǎn)發(fā)的框架,需要依賴以規(guī)則完成轉(zhuǎn)發(fā),工作于內(nèi)核中的INPUT鏈上,并依賴于規(guī)則進(jìn)行轉(zhuǎn)發(fā),而ipvsadm是用來(lái)定義規(guī)則的工具。LVS工作在TCP/UDP協(xié)議的四層,能根據(jù)用戶請(qǐng)求的IP與PROT進(jìn)行轉(zhuǎn)發(fā),即LVS能實(shí)現(xiàn)四層交換、四層路由。
ipvsadm:用戶空間的命令行工具,規(guī)則管理器,用于管理集群服務(wù)及RealServer
ipvs:工作于內(nèi)核空間的netfilter的INPUT鉤子之上的框架;
LVS集群類型中的術(shù)語(yǔ)
Director:負(fù)載均衡器,也稱VS(Virtual Server)
RS:真實(shí)服務(wù)器(RealServer)
CIP:客戶端IP(Client IP)
VIP: Client所請(qǐng)求的,提供虛擬服務(wù)的IP,可以用Keepalive做高可用
DIP:在Director實(shí)現(xiàn)與RS通信的IP
RIP:RealServer IP
(二)LVS集群的類型
LVS轉(zhuǎn)發(fā)模式有四種:
- lvs-nat: 修改請(qǐng)求報(bào)文的目標(biāo)IP
- lvs-dr: 操縱封閉新的MAC地址
- lvs-tun: 在原請(qǐng)求IP報(bào)文之外新加一個(gè)IP首部
- lvs-fullnat: 修改請(qǐng)求報(bào)文的源和目標(biāo)IP
2.1 LVS-NAT(Network Address Translation)實(shí)測(cè)可調(diào)度10臺(tái)以內(nèi)的RS
多目標(biāo)IP的DNAT,通過(guò)將請(qǐng)求報(bào)文中的目標(biāo)地址和目標(biāo)端口改為某挑出的RS的RIP和PORT實(shí)現(xiàn)轉(zhuǎn)發(fā)
模型:
lvs-nat的特性
1.RS應(yīng)該使用私有地址
2.RS的網(wǎng)關(guān)必須指向DIP
3.RIP和DIP必須在同一網(wǎng)段內(nèi)
4.請(qǐng)求和響應(yīng)的報(bào)文都得經(jīng)過(guò)Director,在高負(fù)載場(chǎng)景中,Director很可能成為性能瓶頸(因?yàn)榧纫幚碚?qǐng)求報(bào)文也要處理響應(yīng)服方的轉(zhuǎn)發(fā),請(qǐng)求報(bào)文一般很小,但響應(yīng)報(bào)文一般都比較大)
5.支持端口映射,即可修改請(qǐng)求報(bào)文的目標(biāo)端口.
6.Director必須是Linux系統(tǒng),RS可以是任意支持集群服務(wù)的操作系統(tǒng).
2.2 LVS/DR(Direct Routing直接路由) 實(shí)測(cè)可以調(diào)度7、8十臺(tái)RS
通過(guò)為請(qǐng)求報(bào)文重新封裝一個(gè)MAC首部進(jìn)行轉(zhuǎn)發(fā),源MAC是DIP所在的接口的MAC,目標(biāo)MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標(biāo)IP/PORT均保持不變,請(qǐng)求報(bào)文經(jīng)過(guò)Dirctor但響應(yīng)報(bào)文不再經(jīng)過(guò)Dirctor
模型:
DR類型工作流程
如上圖所示:當(dāng)客戶端請(qǐng)求VIP時(shí),通過(guò)互聯(lián)網(wǎng)到達(dá)前端路由Route1,再通過(guò)交換機(jī)到達(dá)Dirctor上;而Dirctor在收到請(qǐng)求報(bào)文后,通過(guò)定義在ipvs規(guī)則中的各rip去獲得各RS的MAC地址,并在此報(bào)文外再封裝一個(gè)MAC地址,源MAC為Dirctor的DIP端口的MAC而目標(biāo)MAC改為其中被調(diào)度算法選中一個(gè)RS的MAC,但該報(bào)文的目標(biāo)ip(VIP)不變,最后通過(guò)DIP接口發(fā)送給RS;為了RS能接收Dirctor發(fā)來(lái)的報(bào)文,需要在各RS上也配置VIP,但RS上的VIP是需要隔離前端arp廣播的,所以需要將各RS上的VIP隱藏(RS上的VIP通常配置到lo網(wǎng)卡接口的別名上,并配合修改Linux內(nèi)核參數(shù)來(lái)實(shí)現(xiàn)隔離arp廣播);而RS封裝響應(yīng)報(bào)文時(shí),源IP為VIP,目標(biāo)ip為CIP,并通過(guò)RIP的網(wǎng)絡(luò)接口直接向外發(fā)送響應(yīng),不再經(jīng)過(guò)Dirctor。
需要注意的是:因?yàn)镽oute1的A點(diǎn)的IP和Dirctor的VIP在同一網(wǎng)段內(nèi),VIP通常是公網(wǎng)IP;而DIP、RIP通常是私有IP,且這兩個(gè)IP通常也應(yīng)在同一物理網(wǎng)絡(luò)內(nèi);假設(shè)RIP與Route1的A接口(同Director 的VIP DIP)在同一網(wǎng)段,則這時(shí)可將RS的網(wǎng)關(guān)指向Route1,否則,Route2只能其它路由器(如Route2)接口訪問互聯(lián)網(wǎng),且Route2的C點(diǎn)的IP需要與RIP在同一網(wǎng)段內(nèi),此時(shí)RIP響應(yīng)的報(bào)文就通過(guò)Route2發(fā)送。
上文黑色斜體部分的實(shí)現(xiàn)及確保前端路由器將目標(biāo)IP為VIP的請(qǐng)求報(bào)文發(fā)往Director后的各RS,方法c是最佳的選擇:
(a) 在前端網(wǎng)關(guān)即Dirctor做靜態(tài)綁定:不利于高可用
(b) 在RS上使用arptables:需要額外配置,復(fù)雜且學(xué)習(xí)成本高昂
(c) 在RS上修改內(nèi)核參數(shù)以限制arp通告及應(yīng)答級(jí)別:
arp_announce 定義arp通告級(jí)別 默認(rèn)0,應(yīng)設(shè)為2 -->
echo 2 > /proc/sys/net/ipv4/conf/enoXXX/arp_announce
arp_ignore 定義arp應(yīng)答級(jí)別 默認(rèn)0,應(yīng)設(shè)為1 -->echo 1 > /proc/sys/net/ipv4/conf/enoXXX/arp_ignore
Linux kernel從2.4.26與2.6.4以后引入了兩個(gè)設(shè)備標(biāo)識(shí),即上面提到的arp_announce arp_ignore來(lái)調(diào)整arp模式
arp_announce: 向外通告
0:默認(rèn)的,通告時(shí)告之本機(jī)所使用的所有地址、配置、接口
1: 盡量只通告接入的網(wǎng)絡(luò)一端的接口地址(不絕對(duì)保證)
2: 必需避免向非本機(jī)網(wǎng)絡(luò)通告 # DR模式需要 內(nèi)核地址/proc/sys/net/ipv4/conf/all/arp_announce
arp_ignore: 應(yīng)答請(qǐng)求
0: 默認(rèn)的,響應(yīng)本機(jī)接口上配置的所有的目標(biāo)IP地址
1: 只響應(yīng)入棧報(bào)文的那個(gè)接口 # DR模式需要 地址同上
LVS DR模型的特性
1.RIP與DIP在同一IP網(wǎng)絡(luò),RS可以使用私有地址,也可以使用公網(wǎng)地址,此時(shí)可以直接通過(guò)互聯(lián)網(wǎng)連入RS,以實(shí)現(xiàn)配置、監(jiān)控等
2.RS的網(wǎng)關(guān)一定不能指向DIP
3.RS跟Director要在同一物理網(wǎng)絡(luò)內(nèi)(不能有路由器分隔,因?yàn)橐獙?bào)文封裝MAC首部進(jìn)行報(bào)文轉(zhuǎn)發(fā))
4.請(qǐng)求報(bào)文必須經(jīng)過(guò)Director,但響應(yīng)報(bào)文不能經(jīng)過(guò)Director而是由RS直接發(fā)往Client以釋放Directory的壓力。
5.不支持端口映射(因?yàn)轫憫?yīng)報(bào)文不經(jīng)過(guò)Director)
6.RS可以使用大多數(shù)的操作系統(tǒng)
7.Director的VIP對(duì)外可見,RS的VIP對(duì)外不可見
8.RS跟Director都得配置使用VIP
9.確保前端路由器將目標(biāo)IP為VIP的請(qǐng)求報(bào)文發(fā)往Director(上文的設(shè)置)
2.3 LVS/TUN
模型:在原請(qǐng)求IP報(bào)文之外新加一個(gè)IP首部(這個(gè)新添加的IP首部其源IP是DIP,目標(biāo)IP是RIP),將報(bào)文發(fā)往挑選出的目標(biāo)RS.
TUN類型工作流程(主要是為了容災(zāi),因?yàn)镈irector與各RS是在不同網(wǎng)段中,所以可以存在于不同的物理空間)
LVS TUN類型特性
1.RIP,DIP,VIP都得是公網(wǎng)地址
2.RS的網(wǎng)關(guān)不會(huì)指向也不可能指向DIP
3.請(qǐng)求報(bào)文經(jīng)過(guò)Directory,但響應(yīng)報(bào)文一定不經(jīng)過(guò)Director
4.不支持端口映射
5.RS的OS必須得支持隧道功能 ??
2.4 LVS/FULLNAT (LVS默認(rèn)不支持此類型)
通過(guò)同時(shí)修改請(qǐng)求報(bào)文的源IP地址和目標(biāo)IP地址進(jìn)行轉(zhuǎn)發(fā)
報(bào)文件從客戶端到調(diào)度器時(shí)的源 目標(biāo)IP : CIP-->VIP
報(bào)文從Director到RS時(shí)的源 目標(biāo)IP分別是: DIP-->RIP
特點(diǎn)
- VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò),因此,RIP的網(wǎng)關(guān)一般不會(huì)指向DIP
- RS收到的請(qǐng)求報(bào)文源地址是DIP,因此只需響應(yīng)給DIP, 但Dirctor還要將其發(fā)往Client
- 請(qǐng)求和響應(yīng)報(bào)文都經(jīng)由Dirctor
- 支持端口映射.
(三)LVS調(diào)度方法(Scheduler)
LVS的調(diào)度方法分為兩類(靜態(tài)算法、動(dòng)態(tài)算法),共10種
在轉(zhuǎn)發(fā)方式選定的情況下,采用哪種調(diào)度算法將決定整個(gè)負(fù)載均衡的性能表現(xiàn)。不同的算法適用于不同的生產(chǎn)環(huán)境,有時(shí)可能需要針對(duì)特殊需求自行設(shè)計(jì)調(diào)度算法。
靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度(注重起點(diǎn)公平)
① rr:Round Robin 輪詢或輪叫,算法將外部請(qǐng)求按順序輪流分配到集群中的RS(真實(shí))服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。不支持權(quán)重。
② wrr:Weighted RR 權(quán)重輪詢或加權(quán)輪叫,此算法根據(jù)RS(真實(shí))服務(wù)器的不同處理能力來(lái)調(diào)度訪問請(qǐng)求。這樣可保證處理能力強(qiáng)的服務(wù)器能處理更多的訪問請(qǐng)求。調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
③ sh:source hashing 源地址hash,對(duì)請(qǐng)求的客戶端IP進(jìn)行hash計(jì)算,可實(shí)現(xiàn)session綁定,但可能會(huì)破壞負(fù)載均衡。Director在本地維護(hù)一張hash表,此表保存有每一個(gè)源IP地址及其第一次調(diào)度哪一個(gè)Server,每一條記錄都有默認(rèn)時(shí)長(zhǎng)。
④ dh:destination hashing 目標(biāo)地址hash,請(qǐng)求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。Director在本地維護(hù)一張散列表,此表保存有每一次請(qǐng)求的目標(biāo)IP及其對(duì)應(yīng)調(diào)度的目標(biāo)服務(wù)器(RS) 。將發(fā)往同一個(gè)目標(biāo)地址的請(qǐng)求始終轉(zhuǎn)發(fā)至第一次挑中的RS服務(wù)器。使用場(chǎng)景多數(shù)為緩存服務(wù)器代理。
動(dòng)態(tài)方法:根據(jù)算法及RS當(dāng)前的負(fù)載狀態(tài)(注重結(jié)果公平)
⑤ lc:Least Connection 最少連接,此算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的連接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用“最小連接“算法可以較好地均衡負(fù)載。Overhead=Active*256+Inactive
來(lái)實(shí)現(xiàn),采用計(jì)算值最小的RS,不支持權(quán)重。
**⑥ wlc: ** Weighted LC 權(quán)重最少連接,在集群系統(tǒng)中服務(wù)器性能差異較大的情況下,調(diào)度器采用”加權(quán)最少連接“優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。是LVS默認(rèn)的調(diào)度算法。權(quán)重公式:Overhead=(Active*256+Inactive)/weight
⑦ sed:Shortest Expect Delay 最短期望延遲,wlc的改進(jìn)算法,簡(jiǎn)單地說(shuō)就是調(diào)度器會(huì)選擇響應(yīng)速度快的RS(真實(shí))服務(wù)器,先選擇權(quán)重(weight)較大的服務(wù)器計(jì)算方法:Overhead=(Active+1)*256/weight
這種方式可能會(huì)連接多個(gè)請(qǐng)求都發(fā)送給一臺(tái)性能較強(qiáng)(即weight值較大)的RS,而別的RS卻連一個(gè)請(qǐng)求都不會(huì)接收到。
⑧ nq:Nerver Queus: sed算法的改進(jìn),永不排隊(duì),每個(gè)RS至少先處理一個(gè)請(qǐng)求,然后再按sed算法來(lái)。
⑨ lblc:Locality-based least connection 基于局部性的最少連接,可以理解為動(dòng)態(tài)的dh算法。目前主要用于cache集群系統(tǒng),該算法根據(jù)請(qǐng)求的目標(biāo)ip地址找出該目標(biāo)ip地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒有超載,則將請(qǐng)求發(fā)送的該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用“最少連接”的原則選出一個(gè)可用的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器。
⑩ lblcr:Replicated and Locality-based least connection帶復(fù)制的基于 的最少連接。各緩存RS各自勻一勻緩存項(xiàng),及達(dá)到負(fù)載均衡)。上面說(shuō)了dh不利于負(fù)載均衡,這個(gè)算法算是彌補(bǔ)了這個(gè)缺陷。
(四)ipvsadm命令(yum -y install ipvsadm 用戶空間命令行工具)
grep -i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64
查看ipvs支持的協(xié)議與調(diào)度方法
支持的協(xié)議:TCP UDP AH ESP AH_ESP SCTP
① 對(duì)集群的操作
- 首先要確定好需要使用哪種拓?fù)漕愋停∟AT DR TUN)的集群
ipvsadm -A|E|D -t|u|f director_addr:port [-s scheduler] [-p [timeout]] #director_addr指的就是VIP
-A:添加一個(gè)集群服務(wù) # Add
-E:修改一個(gè)集群服務(wù) # Edit
-D:刪除集群服務(wù) # Delete 示例: ipvsadm -D -t 10.1.0.5:80
-t:tcp協(xié)議服務(wù)
-u:udp協(xié)議服務(wù)
-f:firewall make通常應(yīng)用于將兩個(gè)或以上的服務(wù)綁定為一個(gè)服務(wù)進(jìn)行處理時(shí)使用,它是一個(gè)數(shù)字。
示例:ipvsadm -A -f 11 -s wrr
# 這個(gè)11為通過(guò)iptables xxxx -j MARK --set-mark 11 得到.又例如將80與443打包成一塊用ipvsadm進(jìn)行統(tǒng)一調(diào)度.
service-address # 即LVS服務(wù)器的IP地址加之前選項(xiàng)指明的協(xié)議類型端口
-t IP:port # tcp協(xié)議
-u ip:port # udp協(xié)議
-f firewall_mark # 后接一個(gè)標(biāo)記數(shù)字,將多個(gè)端口組織成一個(gè)集群進(jìn)行統(tǒng)一調(diào)度
firewall_mark示例:`iptables -t mangle -A PREROUTING -d 10.1.0.5 -p tcp -m multiport --dports 80,3306 -j MARK --set-mark 11`
`ipvsadm -A -f 11 -s wrr`
-s 調(diào)度算法,這項(xiàng)沒有聲明時(shí)默認(rèn)為wlc [rr wrr sh dh lc wlc sed nq lblc lblcr]
-p: persistence # LVS的持久連接功能,沒有接數(shù)字則默認(rèn)為300秒
② 對(duì)RS的操作(LVS的類型是在對(duì)RS的操作時(shí)定義的)
ipvsadm -a -t|u|f director_addr:port -r RS_addr -[g|i|m] [-w weight] # LVS的類型在這里定義
-a:添加RS
-e:修改
-d:刪除
-r: 后接 RS的ip[:port]
-g:gateway, DR,沒有聲明時(shí)默認(rèn)為DR模型
-m:masquerade, NAT模型
-i:ipip, TUN模型
-w: 定義權(quán)重,僅使用在支持權(quán)重的算法上。如rr lc等不支持權(quán)重的算法加上-w選項(xiàng)則沒有意義。
③ 查看、清空、保存、導(dǎo)入規(guī)則
-L|l:顯示規(guī)則
-n, --numeric: 不反解析IP地址和端口,數(shù)值格式顯示主機(jī)地址和端口號(hào)
--exact: 顯示精確值
--stats: 統(tǒng)計(jì)數(shù)據(jù)
--rate: 速率
--timeout: 顯示tcp、tcpfin和udp的會(huì)話超時(shí)時(shí)長(zhǎng)
--sort: 顯示當(dāng)前的ipvs連接狀況
-c, --connection: 查看連接數(shù)
清空規(guī)則
ipvsadm -C # Clear
保存規(guī)則(一般都保存在/etc/sysconfig/ipvsadm)
* ipvsadm -S 默認(rèn)標(biāo)準(zhǔn)輸出,可重定向至指定文件
* ipvsadm-save 默認(rèn)標(biāo)準(zhǔn)輸出,可重定向到指定文件
* systemctl stop ipvsadm.service # 停止時(shí)會(huì)自動(dòng)保存
導(dǎo)入規(guī)則(2種)
1.ipvsadm -R < /saved_file
2.ipvsadm-restore < /saved_file
(五)LVS實(shí)際配置
5.1 配置一個(gè)NAT類型(2臺(tái)RS)的集群
LVS(Thinkpad): if1=172.16.53.128/24(VIP) if2=10.1.1.77/16(DIP)
RS1(ibm1): 10.1.1.78/16(RIP1)
RS2(ibm2): 10.1.1.79/16(RIP2)
RS1與RS2主機(jī)使用同一個(gè)vmnet網(wǎng)卡
如下圖:
同步ibm1與ibm2的時(shí)間!這個(gè)在集群服務(wù)中很重要!!下面兩步即同

打開ibm1與ibm2上的配置httpd服務(wù)如下圖效果
將RS1 RS2的默認(rèn)網(wǎng)關(guān)指向Director的DIP
route add default gw 10.1.1.77/16
當(dāng)主機(jī)及拓?fù)浣Y(jié)構(gòu)及ip與各種軟件都設(shè)置好的時(shí)候,LVS的設(shè)置是非常簡(jiǎn)單與快速的一件事
ipvsadm -A -t 10.1.1.77:80 -s rr # 添加LVS集群與調(diào)度算法
ipvsadm -a -t 10.1.1.77:80 -r 10.1.1.78 -m -w 1 # 添加LVS集群主機(jī)與LVS調(diào)度模式及RS權(quán)重
ipvsadm -a -t 10.1.1.77:80 -r 10.1.1.79 -m -w 1 # 同上
[root@Thinkpad ~]# echo 1 > /proc/sys/net/ipv4/ip_forward # 打開Director的轉(zhuǎn)發(fā)功能
至此,一個(gè)簡(jiǎn)單的根據(jù)LVS rr算法調(diào)度的負(fù)載均衡集群完成了.
5.2 配置一個(gè)DR類型(2臺(tái)RS)的集群,三臺(tái)虛擬機(jī)都橋接到物理機(jī)上.
Directory: DIP: 192.168.31.101/24 調(diào)度主機(jī)只需要一個(gè)網(wǎng)卡接口 VIP用DIP的別名生成
RS1: 192.168.31.194/24
RS2: 192.168.31.220/24
編寫以下腳本文件并分別在各RS上執(zhí)行.(setparam.sh)
#!/bin/bash
#
vip=192.168.31.100
mask='255.255.255.255'
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
/sbin/ifconfig lo:0 $vip netmask $mask broadcast $vip up
route add -host $vip dev lo:0
;;
stop)
/sbin/ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
route del -host $vip dev lo:0
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $vip`
isrothere=`netstat -rn | grep "lo:0" | grep $vip`
if [ ! "$islothere" -o ! "isrothere" ]; then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
echo "Usage $(basename $0) start|stop"
exit 1
;;
esac
編寫以下腳本在Director(調(diào)度器)上添加VIP 添加LVS規(guī)則等操作 (ipvs.sh)
#!/bin/bash
#
vip=192.168.31.100
iface='eno16777736:0'
mask='255.255.255.255'
port='80'
rs1='192.168.31.194'
rs2='192.168.31.220'
scheduler='wrr'
case $1 in
start)
ifconfig $iface $vip netmask $mask broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r $rs1 -g -w 1
ipvsadm -a -t ${vip}:${port} -r $rs2 -g -w 2
;;
stop)
ifvsadm -C
ifconfig $iface down
;;
*)
echo ''Usage: $(basename $0) {start|stop|status}"
exit 1
;;
esac
5.3 FWM(FireWall Mark)借助于防火墻標(biāo)記來(lái)分類報(bào)文,而后基于標(biāo)記定義集群服務(wù),可將多個(gè)不同的應(yīng)用使用同一個(gè)集群服務(wù)進(jìn)行調(diào)度。
示例:
iptables -t mangle -A PREROUTING -d 10.1.0.5 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 11
ipvsadm -A -f 11 -s rr
ipvsadm -a -t 192.168.31.100 -r 192.168.31.194 -g -w 1
ipvsadm -a -t 192.168.31.100 -r 192.168.31.220 -g -w 1
5.4 LVS的持久連接機(jī)制 persiistence 這個(gè)功能與FWM結(jié)合可實(shí)現(xiàn)端口姻親關(guān)系
LVS基于其的持久連接模板,實(shí)現(xiàn)無(wú)論使用任何算法,在一段時(shí)間內(nèi),實(shí)現(xiàn)將來(lái)自同一個(gè)地址的請(qǐng)求始終發(fā)往同一個(gè)RS。不同于sh算法在于其是可自定義的且沒有超時(shí)時(shí)長(zhǎng)。
ipvsadm -A -t 10.1.0.5:80 -s rr -p 60 # 持久連接定義成60秒,在這個(gè)時(shí)間之后 rr算法才會(huì)生效
ipvsadm -a -t 10.1.0.5:80 -r 10.1.0.7 -g -w 1
ipvsadm -a -t 10.1.0.5:80 -r 10.1.0.8 -g -w 1
port Affinity:端口姻親關(guān)系
每端口持久:每集群服務(wù)單獨(dú)定義,并定義其持久性
每防火墻標(biāo)記持久:基于防火墻標(biāo)記定義持久的集群服務(wù),可實(shí)現(xiàn)將多個(gè)端口上的應(yīng)用統(tǒng)一調(diào)度,即所謂的port Affinity
每客戶端持久