LVS调度算法+防火墙解决轮询调度问题+会话解决

lvs的调度算法

  1. 类型分配:依据负载状态

  • 静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

  • 动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

静态调度方法:
  • RR(roundrobin): 轮询 RS分别被调度,当RS配置有差别时不推荐

  • WRR(Weighted RR):加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

  • SH(Source Hashing):实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

  • DH(Destination Hashing):目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

(以上不考虑后端的负荷情况)

动态调度算法
  • LC(least connections)(最少链接发)适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活动链接数);

  • WLC(Weighted LC)(权重最少链接)默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight (可能第一次发的流量打入性能不好的);

  • SED(Shortest Expection Delay):初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接

  • NQ(Never Queue):第一轮均匀分配,后续SED;

  • LBLC(Locality-Based LC):动态的DH算法,使用场景:根据负载状态实现正向代理;

  • LBLCR(LBLC with Replication):带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS。

看是否有这些算法 ,在调度器LVS里查看

新增调度算法(4.15版本内核以后 )
.FO调度算法:

(Weighted Fai Over) 常用作灰度发布

在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_FOVERLOAD标志)的且权重最高的真实服务器,进行调度

当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度器就不会把链接调度到有过载标记的主z

.OVF调度算法:

(Overflow-connection)调度算法;基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:

  1. 未过载(未设置IP_VS_DEST_F OVERLOAD标志)

  2. 真实服务器当前的活动连接数量小于其权重值

  3. 其权重值不为零

防火墙解决轮询调度问题

实验环境:

在完成DR模式的基础下,进行防火墙标记,给指定的报文做记号

实现过程:
  1. 首先在内网中的主机websever1与websever2上安装mod_ss模块让服务器支持https,并重启httpd服务

  2. 接着在调度器LVS-DR上配置

# 先查看之前的策略
[root@lvsrd ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0
  -> 192.168.0.20:80              Masq    1      0          0
TCP  192.168.0.200:80 wrr
  -> 192.168.0.10:80              Route   1      0          0
  -> 192.168.0.20:80              Route   2      0          0
TCP  192.168.0.200:443 rr
  -> 192.168.0.10:443             Route   1      0          0
  -> 192.168.0.20:443             Route   1      0          0

# 清空之前的路由策略
[root@lvsrd ~]# ipvsadm -C

#设置端口标签把80与433合为一个整体66(打标记)
[root@lvsrd ~]# iptables -t mangle -A PREROUTING  -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

# 重写路由策略
[root@lvsrd ~]#  ipvsadm -A -f 66 -s rr
[root@lvsrd ~]#  ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvsrd ~]#  ipvsadm -a -f 66 -r 192.168.0.20 -g
# 查看
[root@lvsrd ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr
  -> 192.168.0.10:0               Route   1      0          0
  -> 192.168.0.20:0               Route   1      0          0

#测试 客户端上
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
websever2 - 192.168.0.20
websever1 - 192.168.0.10

  1. lvs-解决会话问题--采用持久链接

    如果单纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单粗暴,可能会导致调度失衡,所以可以依据设定时间 -p

    # 查看时间设定
    [root@lvsrd ~]# ipvsadm -Ln

# -p 设置时间 
[root@lvsrd ~]# ipvsadm -E -f 66 -s rr -p
[root@lvsrd ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr persistent 360
  -> 192.168.0.10:0               Route   1      0          0
  -> 192.168.0.20:0               Route   1      0          0
​

测试看效果

#在client上测试
[root@client ~]# for i in {1..10}
> do
> curl 192.168.0.200
> done
websever2 - 192.168.0.20
websever1 - 192.168.0.10
websever2 - 192.168.0.20
websever2 - 192.168.0.20
websever1 - 192.168.0.10
websever2 - 192.168.0.20
websever2 - 192.168.0.20
websever1 - 192.168.0.10
websever2 - 192.168.0.20
websever2 - 192.168.0.20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值