LVS实现负载均衡详解(4)

# 在防火墙上将VIP的80端口请求和8080端口请求都标记为100
[root@LVS ~]# iptables -F
[root@LVS ~]# iptables -t mangle -A PREROUTING -d 192.168.0.105 -p tcp --dport 80 -j MARK --set-mark 100
[root@LVS ~]# iptables -t mangle -A PREROUTING -d 192.168.0.105 -p tcp --dport 8080 -j MARK --set-mark 100
# 利用标记添加ipvs规则(借助ipvsadm命令的-f选项)
[root@LVS ~]# ipvsadm -C
[root@LVS ~]# ipvsadm -A -f 100 -s wrr -p
[root@LVS ~]# ipvsadm -a -f 100 -r 192.168.239.129 -m -w 1
[root@LVS ~]# ipvsadm -a -f 100 -r 192.168.239.133 -m -w 2

后端RS的配置:

# 开通后端服务器的80端口和8080端口的服务,然后他们各自的访问内容分别如下
[root@Web1 ~]# curl :80
This is web1 with 80
[root@Web1 ~]# curl :8080
This is web1 with 8080
[root@Web2 ~]# curl :80
This is web2 with 80
[root@Web2 ~]# curl :8080
This is web2 with 8080
# 因为是NAT的工作模式,因此需要将后端RS的网关指向DIP
[root@Web1 ~]# route add default gw 192.168.239.130
[root@Web2 ~]# route add default gw 192.168.239.130

最后访问VIP的80端口和8080端口,发现请求都会被调度到同一台RS上。

LVS实现负载均衡

LVS健康监测

LVS本身是无法监测后端服务器的状态的,即使后端某台服务器宕机,LVS还是会把请求调度到这台宕机的服务器上边,这样用户就会无法得到响应,这对用户的体验是极差的。因此为LVS加入了后端服务器健康状态检测机制,只有后端正常的服务器才会接受请求。
这里引入一个新的软件包ldirectord,这个软件包会为系统开启一个名叫ldirectord的守护进程,该进程专门用来管理ipvs的规则。该软件的rpm包下载地址如下:
ldirectord-3.9.6(CentOS6)下载
下载完成之后完成安装即可。安装命令如下:

[root@LVS ~]# yum -y localinstall ldirectord-3.9.6-0rc1.1.1.x86_64.rpm

ldirectord软件包的主配置文件为
  /etc/ha.d/ldirectord.cf
其中软件包中会默认提供一个主配置文件的模板文件供参考,它是
  /usr/share/doc/ldirectord-3.9.6/ldirectord.cf
以实验的LVS-DR模型的环境拓扑为例,这里使用ldirectord定义ipvs的规则,而不再使用ipvsadm命令。ldirectord的主配置文件的主要参数与其意义如下:

checktimeout=5      # 超时时间
checkinterval=1      # 两次检查的时间间隔
autoreload=yes      # 如果ldirectord的配置文件更新,是否主动重读配置文件
logfile="/var/log/ldirectord.log"    # 定义日志文件
quiescent=no        # 当后端某台服务器故障的时候,yes表示将节点的权值降为0,no表示将节点剔除ipvs的规则,当恢复正常后自动恢复值ipvs规则中
virtual=192.168.239.250:80  # 虚拟IP:port
    real=192.168.239.129:80 gate 1  # RS的IP:port+<工作模式>+[权值]
    real=192.168.239.133:80 gate 2
    service=http
    scheduler=wrr    # 调度算法
    #persistent=600
    protocol=tcp
# ldirectord实际上是根据下面参数来具体地监控RS是否正常
    checktype=negotiate  # ldirectord进程监控RS的方法
    checkport=80            # 监控的Port
    request="check.html" # 监控的文件
    receive="This web is OK" # 监控的文件内容

VIP的设置和后端服务器的ARP抑制的相关操作请参考实验的LVS-DR模型,这里不再重写。
在后端的服务器的web根目录下放入监控的文件

[root@Web1 web]# pwd
/data/web
[root@Web1 web]# cat check.html
This web is OK
[root@Web2 web]# pwd
/data/web
[root@Web2 web]# cat check.html
This web is OK

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8ab43d6d7bbc75edca557abee90f05e3.html