lvs:linux virtual server,linux虛擬服務(wù)器。是linux平臺下的負(fù)載均衡軟件。
優(yōu)點(diǎn):a、開源,免費(fèi)b、在網(wǎng)上能找到相關(guān)技術(shù)資源c、具有軟件負(fù)載均衡的優(yōu)點(diǎn)。
技術(shù)簡介:
lvs集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請求均衡的轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,調(diào)度器自動屏蔽服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個高性能的高可用的虛擬服務(wù)器。整個服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,無需修改客戶端和服務(wù)器端的程序。
集群的三層架構(gòu):
A、負(fù)載調(diào)度器,是整個集群對外面的前端機(jī),負(fù)責(zé)將客戶的請求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來自一個IP地址
B、服務(wù)器池,是一組真正執(zhí)行客戶請求的服務(wù)器,執(zhí)行的服務(wù)有web、mail、ftp和dhs等
C、共享存儲,為服務(wù)器提供一個共享的存儲區(qū),很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。
調(diào)度器:
調(diào)度器是服務(wù)器集群系統(tǒng)的唯一入口點(diǎn),可以采用IP負(fù)載均衡技術(shù)、基于內(nèi)容請求分發(fā)技術(shù)或者兩者的結(jié)合。
調(diào)度器采用ip負(fù)載均衡技術(shù),基于內(nèi)容請求分發(fā)技術(shù)或者兩者的結(jié)合。在IP負(fù)載均衡技術(shù)中,需要服務(wù)器池?fù)碛邢嗤膬?nèi)容提供相同的服務(wù)。當(dāng)客戶請求到達(dá)時,調(diào)度器根據(jù)服務(wù)器負(fù)載情況和設(shè)定的調(diào)度算法從服務(wù)器池中選擇一個服務(wù)器,將帶請求轉(zhuǎn)發(fā)到選出的服務(wù)器,并記錄這個調(diào)度;當(dāng)這個請求的其他報文到達(dá),也會被轉(zhuǎn)發(fā)到前面選出的服務(wù)器。
在基于內(nèi)容請求分發(fā)技術(shù)中,服務(wù)器可以提供不同的服務(wù),當(dāng)客戶請求到達(dá)時,調(diào)度器可以根據(jù)請求的內(nèi)容選擇服務(wù)器執(zhí)行請求。
調(diào)度算法:
輪叫調(diào)度:以輪叫的方式依次將請求調(diào)度不同的服務(wù)器,算法簡潔,無需記錄當(dāng)前所有鏈接的狀態(tài),是無狀態(tài)的調(diào)度
加權(quán)輪叫調(diào)度:用相應(yīng)的權(quán)值表示服務(wù)器的處理性能,默認(rèn)權(quán)值為1.按權(quán)值的高低和輪叫方式分配請求到各服務(wù)器
最小連接調(diào)度:把新的鏈接請求分配到當(dāng)前連接數(shù)最小的服務(wù)器,是一種動態(tài)的調(diào)度算法,通過服務(wù)器當(dāng)前活躍的連接數(shù)來估算服務(wù)器的負(fù)載情況。
加權(quán)最小連接調(diào)度:各個服務(wù)器相應(yīng)的權(quán)值表示其處理性能。盡可能使服務(wù)器已經(jīng)建立的連接數(shù)和其權(quán)值成比例
基于局部性的最小鏈接:在服務(wù)器的負(fù)載平衡情況下,將相同目標(biāo)IP地址的請求調(diào)度到同一臺服務(wù)器,提高各服務(wù)器的訪問局部性和主存cache命中率。
帶復(fù)制的基于局部性的最少鏈接:與基于局部性的最小鏈接不同的是,這個需要維護(hù)從一個目標(biāo)IP到一組服務(wù)器的映射。
目標(biāo)地址散列調(diào)度:靜態(tài)映射算法,通過一個散列函數(shù)將一個目標(biāo)IP地址映射到一臺服務(wù)器
源地址散列調(diào)度:與目標(biāo)地址散列調(diào)度相反,根據(jù)請求的源IP地址作為散列值,從靜態(tài)分配的散列表找出相應(yīng)的服務(wù)器。
負(fù)載均衡技術(shù) vs/nat:通過網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù),將一組服務(wù)器構(gòu)成一個高可用的,高性能的虛擬服務(wù)器。 vs/tun:通過ip隧道實現(xiàn)虛擬服務(wù)器 vs/dr:通過直接路由實現(xiàn)虛擬服務(wù)器虛擬ip:director用于向客戶端計算機(jī)提供服務(wù)的ip地址真實ip:在集群節(jié)點(diǎn)上使用ip地址,提供真實服務(wù)的機(jī)器 director的ip:director用于連接到D/rip網(wǎng)絡(luò)的ip地址客戶端ip:分配給客戶端計算機(jī)的ip地址,用作發(fā)送給集群的請求的源地址
1、lvs(nat模式配置)
(1)準(zhǔn)備好網(wǎng)絡(luò)環(huán)境
真實服務(wù)器(應(yīng)用服務(wù),ip地址,網(wǎng)關(guān))
調(diào)度服務(wù)器(ip地址,數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)置)
防火墻服務(wù)器(ip地址,數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)置,NAT配置)
(2)調(diào)度服務(wù)器配置
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
# yum install ipvsadm
# ipvsadm -A -t 172.16.10.111:80 -s rr
# ipvsadm -a -t 172.16.10.111:80 -r 10.0.0.11:80 -m
# ipvsadm -a -t 172.16.10.111:80 -r 10.0.0.12:80 -m
# ipvsadm -a -t 172.16.10.111:80 -r 10.0.0.13:80 -m
# service ipvsadm save
(3)防火墻的配置
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
# iptables -t nat -A PREROUTING -i eth1 -s 10.10.10.0/24 -p tcp --dport 80 -j DNAT --to-destination=172.16.10.111:80
2、lvs(dr模式配置)
(1)客戶端(Client)配置
eth0(cip):10.10.10.10
gw:10.10.10.110
(2)防火墻配置(Fireware)配置
ip配置
eth0:172.16.10.111 (防火墻和調(diào)度服務(wù)器通信地址)
eth1:10.10.10.11 (客戶端網(wǎng)關(guān))
eth2:10.0.0.163 (防火墻和真實機(jī)的通信地址)
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
# iptables -t nat -A PREROUTING -i eth1 -s 10.10.10.0/24 -p tcp --dport 80 -j DNAT --to-destination=172.16.10.111:80
(3)調(diào)度服務(wù)器(ldirector)配置
ip配置
eth0:10.0.0.164 (和真實服務(wù)器通信地址)
eth1:172.16.10.100 (虛擬ip(vip))
gw:172.16.10.111
注意:解決Error, some other host already uses address 10.0.0.164.問題
# vim /etc/sysconfig/network-scripts/ifup-eth 注釋掉一下四行
# if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
# net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
# exit 1
# fi
配置數(shù)據(jù)包轉(zhuǎn)發(fā)
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
配置調(diào)度
# ipvsadm -A -t 172.16.10.100:80 -s rr
# ipvsadm -a -t 172.16.10.100:80 -r 10.0.0.11:80 -g
# ipvsadm -a -t 172.16.10.100:80 -r 10.0.0.12:80 -g
# ipvsadm -a -t 172.16.10.100:80 -r 10.0.0.13:80 -g
# ipvsadm -L -n 查看ipvsadm配置
# ipvsadm -L -n --stats 查看ipvsadm狀態(tài)
添加網(wǎng)關(guān)
# route add default gw 172.16.10.111
(4)真實服務(wù)器(real server)配置
ip配置
1)ip:10.0.0.11/16
gw:10.0.0.139
vip:172.16.10.100
# ifconfig lo:0 172.16.10.100/32 broadcast 172.16.10.100
禁用接收廣播回應(yīng)配置
#vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
# sysctl -p
或者
# yum install arptables_jf
# arptables -A IN -d 172.16.10.100 -j DROP
添加路由
# route add -host 172.16.10.100 dev lo:0