1.当用户向负载均衡器(Directory Server)发起请求,调度器将请求发往至内核空间
2.PREROUTING链首先会接受到用户请求,判断目标IP是本机IP,将数据包发往INOUT链
3.IPVS是工作在INPUT链上的,当用户请求和自己已经定好的集群服务进行对比,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址 和端口,并将新的数据包发网POSTOUTING链
4.POSTOUTING链接受数据包后发现目标IP刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器。
实验:
准备工作:
1.在server1上配置扩展yum源
首先在yum源挂载的目录下可以看到下面的目录:
将这个HighAvailability加入到yum源:
查看yum源可以看到有HighAvailability这个包。设置完成,将yum配置复制到另外的两台机器上。
scp rhel-source.repo root@172.25.6.3:/etc/yum.repos.d/rhel-source.repo
scp rhel-source.repo root@172.25.6.2:/etc/yum.repos.d/rhel-source.repo
在server6上配置:
将之前在eth1上面加的IP 删掉:
ip addr del 172.25.31.100/24 dev eth1
给server1加上隧道模式:
modprobe ipip ####加上隧道模式
ip addr add 172.25.31.100/24 dev tunl0 ###给隧道加上IP
ip link set up tunl0 ####将隧道的链接打开
ip addr show ###查看tunl0的配置;
此时可以但到tunl0的状态是UNKNOWN,IP是172.25.31.100/24 ,配置成功
将之间的ipvsadm的配置清空:
ipvsadm -C
ipvsadm -A -t 172.25.31.100:80 -s rr
ipvsadm -a -t 172.25.31.100 :80 -r 172.25.31.7 -i
ipvsadm -a -t 172.25.31.100:80 -r 172.25.31.8 -i ###配置ipvsadm的规则
此时配置就完成了:
查看ipvsadm配置的规则:
ipvsadm -ln
看到上面的图的时候配置完成。
在server7上的配置:
1.下载httpd软件:
yum install httpd -y
vim /var/www/html/index.html ###文件中写server7作为标注
/etc/init.d/httpd start ###将httpd服务打开
删除eth1所配置的ip(如果是连着DR模式做的话要进行这一步)
modprobe ipip ###加上网卡隧道模式
ip addr show ###此时可以看到新的tunl0
ip addr add 172.25.31.100/32 dev tunl0 ##将ip加到这个隧道中
ip link set up dev tunl0 ####激活隧道模式
ip addr show ##查看ip配置信息
sysctl -a |grep rp_filter
此时可以看上面有四个1,将这四个1修改为0
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w net.ipv4.conf.eth1.rp_filter=0
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -p ###保存修改
sysctl -a |grep rp_filter ####再次查看策略:
显示如上图的时候就表示修改成功。
server8上面的操作和server7的操作是一样的。
测试:
在真机上:
curl 172.25.31.100
得到下面的结果:
此时在server6上面查看,是否命中: