11.4.5 LVS负载均衡常见工作模式总结以及ipvsadm

时间:2023-03-10 04:37:09
11.4.5 LVS负载均衡常见工作模式总结以及ipvsadm
  NAT TUN DR
RS any Tunneling Non-arp device
RS network private LAN/WAN LAN
RS number  low(10-20) High(100) High(100)
RS gateway load balancer own router Own router
优点 端口转换 WAN 性能最好
缺点 性能瓶颈 支持隧道 不支持跨网段
lvs-nat与lvs-fullnat:
请求和响应报文都经由Director
lvs-nat:RIP的网关要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信
lvs-dr与lvs-tun:
请求报文要经由Director,但响应报文由RS直接发Client
lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

LVS 调度算法

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态
分为两种:静态方法 动态方法

静态方法

仅根据算法本身进行调度
1.RR:roundrobin 轮训
2.WRR:weighted RR 加权轮训
3.SH:Source Hashing 源地址hash 可以实现session sticky
将来自于同一个IP地址的请求始终转发往第一次跳中的RS,从而实现会话绑定
4.DH:Destination Hashing 目标地址hash,
第一次轮训调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型应用场景:Web缓存

动态方法

主要根据每台RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
1.LC Least connections 适用于长连接应用
overhead=activeconns*256+inactiveconns
2.WLC weighted LC 默认调度算法,比较常用
overhead=(activeconns*256+inactiveconns)/weight
3.SED shortest expection delay 初始连接高权重优先,只检查活动连接,而不考虑非活动连接
overhead=(activeconns+1)*256/weight
4.NQ Never Queue 第一轮rr,后续SED
5.LBLC locality-based lc 动态的DH算法,使用场景:根据负载均衡状态实现正向代理,实现Web cache等
6.LBLCR LBLC with replication ,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载中的复制到负载轻的RS,实现web cache

其它调度算法

内核4.15版本后新增调度算法:FO OVF

LVS软件包组成

ipvsadm:
程序包:ipvsadm(LVS管理工具)
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
grep -i -C 10 "ipvs" /boot/config-3.10.0-957.el7.x86_64
#查看内核是否支持IPVS

ipvsadm

yum install ipvsadm -y

lvs命令使用

-t 表示为tcp服务
-u 表示为udp服务
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh |
sed | nq 默认调度算法是 wlc
ipvsadm -A -t 192.168.1.2:80 -s wlc
-a --add-server #在服务器表中添加一条新的真实主机记录
-t --tcp-service 说明虚拟服务器提供tcp服务
-u --udp-service 说明虚拟服务器提供udp服务
-r --real-server 真实服务器地址
-m --masquerading 指定LVS工作模式为NAT模式
-w --weight 真实服务器的权值
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip 指定LVS的工作模式为隧道模式
-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间
ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list 显示内核虚拟服务器表
--numeric, -n:以数字形式输出地址和端口号
--exact:扩展信息,精确值
--connection,-c:当前IPVS连接输出
--stats:统计信息
--rate :输出速率信息
参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]]
[-M netmask]
修改VIP为192.168.1.2的LVS中 http服务的调度算法为Round Robin
ipvsadm –E –t 192.168.1.2:80 –s rr
ipvsadm -D -t|u|f virtual-service-address
删除VIP为192.168.1.2的Service
ipvsadm -D -t 192.168.1.2:80
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m]
[-w weight]
修改RS权重为3 ipvsadm -e -t 192.168.1.2:80 -r 192.168.1.3 –g -w 3
ipvsadm -d -t|u|f service-address -r server-address
删除一个RS:ipvsadm -d -t 192.168.1.2:80 -r 192.168.1.3:80
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]

LVS规则保存和加载

保存:建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service
重载:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service