主程序:ipvsadm
配置文件:
規則保存工具:/usr/sbin/ipvsadm-save規則重載工具:/usr/sbin/ipvsadm-restore配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm使用:
增:示例:ipvsadm -A -t 172.16.42.1:80 -s rripvsadm -a -t 172.16.42.1:80 -r 172.16.42.2 -w 1刪:示例:ipvsadm -d -t 172.16.42.1:80 -r 172.16.42.2改:示例:ipvsadm -E -t 172.16.42.1:80 -s wrr查:示例:ipvsadm -ln保存重載:示例:ipvsadm -S > /etc/sysconfig/ipvsadmipvsadm -R </etc/sysconfig/ipvsadm
調度方法:
靜態方法:僅根據算法本身進行調度;RR:輪詢;WRR: 加權輪詢;SH:實現session sticy,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定;DH:目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡;動態方法:主要根據每RS當前的負載狀態及調度算法進行調度;LC:least connectionsOverhead=activeconns*256+inactiveconnsWLC:Weighted LCOverhead=(activeconns*256+inactiveconns)/weightSED:Shortest Expection DelayOverhead=(activeconns+1)*256/weightNQ:Never QueueLBLC:Locality-Based LC,動態的DH算法;LBLCR:LBLC with Replication,帶復制功能的LBLC;
LVS-nat:
多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發;(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP;(2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸;(3)支持端口映射,可修改請求報文的目標PORT;(4)vs必須是Linux系統,rs可以是任意系統;
![]()
1.配置好IP地址即可
1.兩張網卡,配置好IP地址2.yum安裝ipvsadm3.添加lvs:ipvsadm -A -t 172.16.42.1:80 -s rr添加RS:ipvsadm -a -t 172.16.42.1:80 -r 172.16.42.2 -w 1ipvsadm -a -t 172.16.42.1:80 -r 172.16.42.3 -w 1
LVS-dr:
通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;Director和各RS都得配置使用VIP;(1) 確保前端路由器將目標IP為VIP的請求報文發往Director:(a) 在前端網關做靜態綁定;(b) 在RS上使用arptables;(c) 在RS上修改內核參數以限制arp通告及應答級別;arp_announcearp_ignore(2) RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;(3) RS跟Director要在同一個物理網絡;(4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;(5) 不支持端口映射;
1.編輯以下腳本, vim rs.sh,然后啟動 bash rs.sh start#!/bin/bash#vip=172.16.42.2mask=’255.255.255.255′case $1 instart)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #禁止廣播echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig lo:0 $vip netmask $mask broadcast $vip up #vip地址route add -host $vip dev lo:0 #路由表;;stop)ifconfig lo:0 downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announce;;*)echo “Usage $(basename $0) start|stop”exit 1;;esac
1.同上#!/bin/bash#vip=172.16.42.3……….…………..
1.yum安裝ipvsadm2.編輯以下腳本, vim vs.sh,然后啟動 bash vs.sh start#!/bin/bash#vip=’172.16.42.1′iface=’ens33:0′mask=’255.255.255.255′port=’80’rs1=’172.16.42.2′rs2=’172.16.42.3′scheduler=’wrr’type=’-g’case $1 instart)ifconfig $iface $vip netmask $mask broadcast $vip upiptables -Fipvsadm -A -t ${vip}:${port} -s $scheduleripvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1;;stop)ipvsadm -Cifconfig $iface down;;*)echo “Usage $(basename $0) start|stop”exit 1;;esac
LVS-tun:
轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而是在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP);(1) DIP, VIP, RIP都應該是公網地址;(2) RS的網關不能,也不可能指向DIP;(3) 請求報文要經由Director,但響應不能經由Director;(4) 不支持端口映射;(5) RS的OS得支持隧道功能;
端口綁定:
1.添加iptable規則打上標記,再用lvs綁定端口iptables -t mangle -A PREROUTING -d 172.16.0.99 -p tcp -m multiport–dport 80,443 -j MARK–set-mark 3ipvsadm -A -f 3 -s rripvsadm -a -f 3 -r 172.16.42.2 -gipvsadm -a -f 3 -r 172.16.42.3 -g
健康檢測:
使用ldirectord,安裝啟動即可,然后在配置文件中修改以下內容。配置示例:checktimeout=3checkinterval=1fallback=127.0.0.1:80autoreload=yeslogfile=”/var/log/ldirectord.log”quiescent=novirtual=5real=172.16.42.2:80 gatereal=172.16.42.3:80 gatefallback=127.0.0.1:80 gateservice=httpscheduler=wrrchecktype=negotiatecheckport=80request=”index.html” #這個文件得存在receive=”CentOS”
原創文章,作者:z long,如若轉載,請注明出處:http://www.www58058.com/84213