主程序: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.178linux.com/84213