lvs:linux virtual server,linux虛擬服務(wù)器。是linux平臺(tái)下的負(fù)載均衡軟件。
優(yōu)點(diǎn):a、開(kāi)源,免費(fèi)b、在網(wǎng)上能找到相關(guān)技術(shù)資源c、具有軟件負(fù)載均衡的優(yōu)點(diǎn)。
技術(shù)簡(jiǎn)介:
lvs集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡的轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,調(diào)度器自動(dòng)屏蔽服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶(hù)是透明的,無(wú)需修改客戶(hù)端和服務(wù)器端的程序。
集群的三層架構(gòu):
A、負(fù)載調(diào)度器,是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶(hù)的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶(hù)認(rèn)為服務(wù)是來(lái)自一個(gè)IP地址
B、服務(wù)器池,是一組真正執(zhí)行客戶(hù)請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有web、mail、ftp和dhs等
C、共享存儲(chǔ),為服務(wù)器提供一個(gè)共享的存儲(chǔ)區(qū),很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。
調(diào)度器:
調(diào)度器是服務(wù)器集群系統(tǒng)的唯一入口點(diǎn),可以采用IP負(fù)載均衡技術(shù)、基于內(nèi)容請(qǐng)求分發(fā)技術(shù)或者兩者的結(jié)合。
調(diào)度器采用ip負(fù)載均衡技術(shù),基于內(nèi)容請(qǐng)求分發(fā)技術(shù)或者兩者的結(jié)合。在IP負(fù)載均衡技術(shù)中,需要服務(wù)器池?fù)碛邢嗤膬?nèi)容提供相同的服務(wù)。當(dāng)客戶(hù)請(qǐng)求到達(dá)時(shí),調(diào)度器根據(jù)服務(wù)器負(fù)載情況和設(shè)定的調(diào)度算法從服務(wù)器池中選擇一個(gè)服務(wù)器,將帶請(qǐng)求轉(zhuǎn)發(fā)到選出的服務(wù)器,并記錄這個(gè)調(diào)度;當(dāng)這個(gè)請(qǐng)求的其他報(bào)文到達(dá),也會(huì)被轉(zhuǎn)發(fā)到前面選出的服務(wù)器。
在基于內(nèi)容請(qǐng)求分發(fā)技術(shù)中,服務(wù)器可以提供不同的服務(wù),當(dāng)客戶(hù)請(qǐng)求到達(dá)時(shí),調(diào)度器可以根據(jù)請(qǐng)求的內(nèi)容選擇服務(wù)器執(zhí)行請(qǐng)求。
調(diào)度算法:
輪叫調(diào)度:以輪叫的方式依次將請(qǐng)求調(diào)度不同的服務(wù)器,算法簡(jiǎn)潔,無(wú)需記錄當(dāng)前所有鏈接的狀態(tài),是無(wú)狀態(tài)的調(diào)度
加權(quán)輪叫調(diào)度:用相應(yīng)的權(quán)值表示服務(wù)器的處理性能,默認(rèn)權(quán)值為1.按權(quán)值的高低和輪叫方式分配請(qǐng)求到各服務(wù)器
最小連接調(diào)度:把新的鏈接請(qǐng)求分配到當(dāng)前連接數(shù)最小的服務(wù)器,是一種動(dòng)態(tài)的調(diào)度算法,通過(guò)服務(wù)器當(dāng)前活躍的連接數(shù)來(lái)估算服務(wù)器的負(fù)載情況。
加權(quán)最小連接調(diào)度:各個(gè)服務(wù)器相應(yīng)的權(quán)值表示其處理性能。盡可能使服務(wù)器已經(jīng)建立的連接數(shù)和其權(quán)值成比例
基于局部性的最小鏈接:在服務(wù)器的負(fù)載平衡情況下,將相同目標(biāo)IP地址的請(qǐng)求調(diào)度到同一臺(tái)服務(wù)器,提高各服務(wù)器的訪(fǎng)問(wèn)局部性和主存cache命中率。
帶復(fù)制的基于局部性的最少鏈接:與基于局部性的最小鏈接不同的是,這個(gè)需要維護(hù)從一個(gè)目標(biāo)IP到一組服務(wù)器的映射。
目標(biāo)地址散列調(diào)度:靜態(tài)映射算法,通過(guò)一個(gè)散列函數(shù)將一個(gè)目標(biāo)IP地址映射到一臺(tái)服務(wù)器
源地址散列調(diào)度:與目標(biāo)地址散列調(diào)度相反,根據(jù)請(qǐng)求的源IP地址作為散列值,從靜態(tài)分配的散列表找出相應(yīng)的服務(wù)器。
負(fù)載均衡技術(shù) vs/nat:通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù),將一組服務(wù)器構(gòu)成一個(gè)高可用的,高性能的虛擬服務(wù)器。 vs/tun:通過(guò)ip隧道實(shí)現(xiàn)虛擬服務(wù)器 vs/dr:通過(guò)直接路由實(shí)現(xiàn)虛擬服務(wù)器虛擬ip:director用于向客戶(hù)端計(jì)算機(jī)提供服務(wù)的ip地址真實(shí)ip:在集群節(jié)點(diǎn)上使用ip地址,提供真實(shí)服務(wù)的機(jī)器 director的ip:director用于連接到D/rip網(wǎng)絡(luò)的ip地址客戶(hù)端ip:分配給客戶(hù)端計(jì)算機(jī)的ip地址,用作發(fā)送給集群的請(qǐng)求的源地址
1、lvs(nat模式配置)
(1)準(zhǔn)備好網(wǎng)絡(luò)環(huán)境
真實(shí)服務(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)客戶(hù)端(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 (客戶(hù)端網(wǎng)關(guān))
eth2:10.0.0.163 (防火墻和真實(shí)機(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 (和真實(shí)服務(wù)器通信地址)
eth1:172.16.10.100 (虛擬ip(vip))
gw:172.16.10.111
注意:解決Error, some other host already uses address 10.0.0.164.問(wèn)題
# 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)真實(shí)服務(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