您好,登錄后才能下訂單哦!
1.lvs:Linux Virtual Server
(1)l4四層路由器,四層交換機(jī);
VS:根據(jù)請(qǐng)求報(bào)文的目標(biāo)IP和目標(biāo)協(xié)議及端口將其調(diào)度轉(zhuǎn)發(fā)至某RealServer,根據(jù)調(diào)度算法來(lái)挑選RS;
(2)lvs: ipvsadm/ipvs
ipvsadm:用戶(hù)空間的命令行工具,規(guī)則管理器,用于管理集群服務(wù)及相關(guān)的RealServer;
ipvs:工作于內(nèi)核空間的netfilter的INPUT鉤子之上的框架;
(3)lvs集群類(lèi)型中的術(shù)語(yǔ):
vs:Virtual Server, Director, Dispatcher, Balancer
rs:Real Server, upstream server, backend serverCIP:Client IP, VIP: Virtual serve IP, RIP: Real server IP, DIP: Director IP
CIP <--> VIP == DIP <--> RIP
(4)lvs集群的類(lèi)型:
(a)lvs-nat:修改請(qǐng)求報(bào)文的目標(biāo)IP;多目標(biāo)IP的DNAT;
多目標(biāo)IP的DNAT,通過(guò)將請(qǐng)求報(bào)文中的目標(biāo)地址和目標(biāo)端口修改為某挑出的RS的RIP和PORT實(shí)現(xiàn)轉(zhuǎn)發(fā);
(1)RIP和DIP必須在同一個(gè)IP網(wǎng)絡(luò),且應(yīng)該使用私網(wǎng)地址;RS的網(wǎng)關(guān)要指向DIP;
(2)請(qǐng)求報(bào)文和響應(yīng)報(bào)文都必須經(jīng)由Director轉(zhuǎn)發(fā);Director易于成為系統(tǒng)瓶頸;
(3)支持端口映射,可修改請(qǐng)求報(bào)文的目標(biāo)PORT;
(4)vs必須是Linux系統(tǒng),rs可以是任意系統(tǒng);
(b)lvs-dr:Direct Routing,直接路由;
通過(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均保持不變;
Director和各RS都得配置使用VIP;
(1) 確保前端路由器將目標(biāo)IP為VIP的請(qǐng)求報(bào)文發(fā)往Director:
(a) 在前端網(wǎng)關(guān)做靜態(tài)綁定;
(b) 在RS上使用arptables;
(c) 在RS上修改內(nèi)核參數(shù)以限制arp通告及應(yīng)答級(jí)別;
arp_announce
arp_ignore
(2) RS的RIP可以使用私網(wǎng)地址,也可以是公網(wǎng)地址;RIP與DIP在同一IP網(wǎng)絡(luò);RIP的網(wǎng)關(guān)不能指向DIP,以確保響應(yīng)報(bào)文不會(huì)經(jīng)由Director;
(3) RS跟Director要在同一個(gè)物理網(wǎng)絡(luò);
(4) 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director,而是由RS直接發(fā)往Client;
(5) 不支持端口映射;
(c)lvs-tun:
轉(zhuǎn)發(fā)方式:不修改請(qǐng)求報(bào)文的IP首部(源IP為CIP,目標(biāo)IP為VIP),而是在原IP報(bào)文之外再封裝一個(gè)IP首部(源IP是DIP,目標(biāo)IP是RIP),將報(bào)文發(fā)往挑選出的目標(biāo)RS;RS直接響應(yīng)給客戶(hù)端(源IP是VIP,目標(biāo)IP是CIP);
(1) DIP, VIP, RIP都應(yīng)該是公網(wǎng)地址;
(2) RS的網(wǎng)關(guān)不能,也不可能指向DIP;
(3) 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director;
(4) 不支持端口映射;
(5) RS的OS得支持隧道功能;
(d)lvs-fullnat:
通過(guò)同時(shí)修改請(qǐng)求報(bào)文的源IP地址和目標(biāo)IP地址進(jìn)行轉(zhuǎn)發(fā);
CIP <--> DIP
VIP <--> RIP
(1) VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò);因此,RIP的網(wǎng)關(guān)一般不會(huì)指向DIP;
(2) RS收到的請(qǐng)求報(bào)文源地址是DIP,因此,只能響應(yīng)給DIP;但Director還要將其發(fā)往Client;
(3) 請(qǐng)求和響應(yīng)報(bào)文都經(jīng)由Director;
(4) 支持端口映射;
注意:此類(lèi)型默認(rèn)不支持;
(5)調(diào)度算法ipvs scheduler:
根據(jù)其調(diào)度時(shí)是否考慮各RS當(dāng)前的負(fù)載狀態(tài),可分為靜態(tài)方法和動(dòng)態(tài)方法兩種:
(a)靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度;
RR:roundrobin,輪詢(xún);
WRR:Weighted RR,加權(quán)輪詢(xún);
SH:Source Hashing,實(shí)現(xiàn)session
DH:Destination Hashing;目標(biāo)地址哈希,將發(fā)往同一個(gè)目標(biāo)地址的請(qǐng)求始終轉(zhuǎn)發(fā)至第一次挑中的RS,典型使用場(chǎng)景是正向代理緩存場(chǎng)景中的負(fù)載均衡;
(b)動(dòng)態(tài)方法:主要根據(jù)每RS當(dāng)前的負(fù)載狀態(tài)及調(diào)度算法進(jìn)行調(diào)度;
LC:least connections Overhead=activeconns*256+inactiveconns
WLC:Weighted LC Overhead=(activeconns*256+inactiveconns)/weight
SED:Shortest Expection Delay
Overhead=(activeconns+1)*256/weight
NQ:Never Queue
LBLC:Locality-Based LC,動(dòng)態(tài)的DH算法;
LBLCR:LBLC with Replication,帶復(fù)制功能的LBLC;
2.ipvsadm:
(1)程序包:ipvsadm
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
規(guī)則保存工具:/usr/sbin/ipvsadm-save
規(guī)則重載工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
(2)ipvsadm命令:
核心功能:
集群服務(wù)管理:增、刪、改;
集群服務(wù)的RS管理:增、刪、改;
(a)查看:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
(b)管理集群服務(wù):增、改、刪;
增、改:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪:
ipvsadm -D -t|u|f service-address
service-address:
-t|u|f:
-t: TCP協(xié)議的端口,VIP:TCP_PORT
-u: UDP協(xié)議的端口,VIP:UDP_PORT
-f:firewall MARK,是一個(gè)數(shù)字;
[-s scheduler]:指定集群的調(diào)度算法,默認(rèn)為wlc;
(c)管理集群上的RS:增、改、刪;
增、改:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
刪:
ipvsadm -d -t|u|f service-address -r server-address
server-address:
rip[:port]
選項(xiàng):
lvs類(lèi)型:
-g: gateway, dr類(lèi)型
-i: ipip, tun類(lèi)型
-m: masquerade, nat類(lèi)型
-w weight:權(quán)重
(b)清空定義的所有內(nèi)容:
ipvsadm -C
查看:
ipvsadm -L|l [options]
--numeric, -n:numeric output of addresses and ports
--exact:expand numbers (display exact values)
--connection, -c:output of current IPVS connections
--stats:output of statistics information
--rate :output of rate information
保存和重載:
ipvsadm -S = ipvsadm-save
ipvsadm -R = ipvsadm-restore
3.實(shí)現(xiàn)lvs-nat模型:
(1)實(shí)驗(yàn)環(huán)境:
三臺(tái)服務(wù)器,一臺(tái)作為 director,兩臺(tái)作為 real server,director 有一個(gè)外網(wǎng)網(wǎng)卡(192.168.1.29) 和一個(gè)內(nèi)網(wǎng)ip(192.168.100.1),兩個(gè) real server 上只有內(nèi)網(wǎng) ip (192.168.100.2) 和 (192.168.100.2),并且需要把兩個(gè) real server 的內(nèi)網(wǎng)網(wǎng)關(guān)設(shè)置為 director 的內(nèi)網(wǎng) ip(192.168.0.8)
(2)安裝配置:
兩個(gè) real server 上都安裝 httpd 服務(wù)
#yum install -y httpd
Director 上安裝 ipvsadm
#yum install -y ipvsadm
(3)Director配置:
[root@localhost /]#echo 1 > /proc/sys/net/ipv4/ip_forward:打開(kāi)核心轉(zhuǎn)發(fā)
[root@localhost /]# ipvsadm -A -t 192.168.1.29:80 -s wrr
[root@localhost /]# ipvsadm -a -t 192.168.1.29:80 -r 192.168.100.2:80 -m
[root@localhost /]# ipvsadm -a -t 192.168.1.29:80 -r 192.168.100.3:80 -m
(4)查看ipvsadm設(shè)置的規(guī)則
[root@localhost /]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http wrr
-> 192.168.100.2:http Masq 1 0 0
-> 192.168.100.3:http Masq 1 0 0
4.實(shí)現(xiàn)lvs-dr模型:
(1)實(shí)驗(yàn)環(huán)境
三臺(tái)服務(wù)器,一臺(tái)作為 director,兩臺(tái)作為 real server,director中dip為172.20.10.9 ,兩個(gè) real server 上只有內(nèi)網(wǎng) rip1 (172.20.10.8),rip2(172.20.10.10),設(shè)置vip為172.20.10.12
(2)rs的配置腳本:
[root@node6 ~]# vim rs.sh
#!/bin/bash
#
vip=172.20.10.12
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
ifconfig lo:0 $vip netmask $mask broadcast $vip up
route add -host $vip dev lo:0
;;
stop)
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
;;
*)
echo "Usage $(basename $0) start|stop"
exit 1
;;
esac
[root@node6 ~]# yum instal -y httpd
[root@node6 ~]# vim /var/www/html/index.html
node6 web page
(3)director上配置:
[root@node5 ~]ifconfig ens33:0 172.20.10.12 netmask 255.255.255.255 broadcast 172.20.10.12 up
[root@node5 ~]# ipvsadm -A -t 172.20.10.12:80 -s wrr
[root@node5 ~]# ipvsadm -a -t 172.20.10.12:80 -r 172.20.10.8:80 -g -w 1
[root@node5 ~]# ipvsadm -a -t 172.20.10.12:80 -r 172.20.10.10:80 -g -w 2
(4)查看ipvsadm設(shè)置的規(guī)則:
[root@node5 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.10.12:80 wrr
-> 172.20.10.8:80 Route 1 0 0
-> 172.20.10.10:80 Route 2 0 0
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。