前言
假设要做443和80端口的LVS集群,LVS规则定义如下:
VIP:192.168.30.100
RIP:192.168.20.20
RIP:192.168.20.30
为什么要做mark?
<font color="red">将共享一组RS的集群服务统一进行定义。</font>
80端口的集群
~]# ipvsadm -A -t 192.168.30.100:80 -s wrr #加权的轮询算法
~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.20 -g -w 1 #dr模型,权重为1其实可省。
~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.30 -g -w 3 #dr模型,权重为3
443端口的集群
~]# ipvsadm -A -t 192.168.30.100:443 -s wrr #加权的轮询算法
~]# ipvsadm -a -t 192.168.30.100:443 -r 192.168.20.20 -g -w 1 #dr模型,权重为1其实可省。
~]# ipvsadm -a -t 192.168.30.100:443 -r 192.168.20.30 -g -w 3 #dr模型,权重为3
这样的操作的形式比较繁琐,我们有没有办法将它们合二为一呢?
答案当然是有的,这里我们就需要配合iptables
在mangle
链上定义mark
;
@> mangle:拆开报文,封装报文; mark:给报文打上标记
一、给报文打标记
~]# iptables -t mangle -A PREROUTING -d 192.168.30.100 -p tcp --dport 80 -j MARK --set-mark 20
~#] iptables -t mangle -A PREROUTING -d 192.168.30.100 -p tcp --dport 443 -j MARK --set-mark 20
!> 合并为一个的话,就需要打上同样的标记。如上:目标地址是VIP和端口为80/443的报文全部标记为20。也可以像下面这样写
~#] iptables -t mangle -A PREROUTING -d 192.168.30.100 -p tcp -m multiport --dports 80:443 -j MARK --set-mark 20
这样就给报文打上标记了
二、添加集群
ipvsadmin -A -f 标记值 -s wrr #添加集群
ipvsadmin -a -f 标记值 -r RS服务器 -g #添加Real Server
~#] ipvsadm -A -f 20 -s wrr
~#] ipvsadm -a -f 20 -r 192.168.20.20 -g -w 1
~#] ipvasdm -a -f 20 -r 192.168.20.30 -g -w 3
这样一来,不仅可以将80/443两个集群服务合二为一,还可以简化规则.
LVS集群DR模型的搭建:
<center>END</center>