# 在防火墙上将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加入了后端服务器健康状态检测机制,只有后端正常的服务器才会接受请求。
这里引入一个新的软件包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