本文共 4018 字,大约阅读时间需要 13 分钟。
client -> vs -> Rs ->client
主机名 | IP |
---|---|
server1 | 172.25.64.1 |
server2 | 172.25.64.2 |
server3 | 172.25.64.3 |
[root@server2 ~]# yum install httpd -y
[root@server2 ~]# cd /var/www/html[root@server2 html]# vim index.htmlwww.westos.org - server2
[root@server3 ~]# cd /var/www/html[root@server3 html]# vim index.htmlwww.westos.org - server3
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo [rhel-source]name=Red Hat Enterprise Linux $releasever - $basearch - Sourcebaseurl=http://172.25.64.250/rhel6.5enabled=1gpgcheck=0[LoadBalancer] ##负载均衡name=LoadBalancerbaseurl=http://172.25.64.250/rhel6.5/LoadBalancerenabled=1gpgcheck=0
[root@server1 yum.repos.d]# yum clean all[root@server1 yum.repos.d]# yum repolist
[root@server1 yum.repos.d]# yum install ipvsadm -y
[root@server1 ~]# ipvsadm -A -t 172.25.64.100:80 -s rr[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.2:80 -g[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.3:80 -g##保存策略[root@server1 ~]# /etc/init.d/ipvsadm saveipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@server1 ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.25.64.100:http rr -> server2:http Route 1 0 0 -> server3:http Route 1 0 0 [root@server1 ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.25.64.100:80 rr -> 172.25.64.2:80 Route 1 0 0 -> 172.25.64.3:80 Route 1 0 0
[root@server1 ~]# ip addr add 172.25.64.100/24 dev eth0[root@server2 html]# ip addr add 172.25.64.100/32 dev eth0[root@server3 html]# ip addr add 172.24.64.100/32 dev eth0
[root@server2 html]# /etc/init.d/httpd start[root@server3 html]# /etc/init.d/httpd start
以上情况,server1,2,3都有可能被访问到
如果绑定的MAC地址是server1,则在server2,3轮询
如果绑定的MAC地址是sever2或sever3的,那么我们会发现,在测试端根本不会形成轮叫,而是直接去了MAC绑定的后端服务器 (显然这样在企业中是不允许的)
绑定的MAC地址是server1的情况
arp -an | grep 100 查看绑定的MAC地址发现绑定的就是server1的MAC地址
arp -d 172.25.64.100 删除现有绑定MAC地址
绑定的MAC地址是server2的情况
如何避免这种情况实现?
要避免这种情况,要求只能绑定server1(调度器)的MAC地址,所以我们要配置server2和server3的arp路由策略
[root@server2 html]# yum install arptables_jf -y# 当网内广播需要172.25.64.100这个ip时,它丢弃所有网内的请求[root@server2 html]# arptables -A IN -d 172.25.64.100 -j DROP# 当它自身需要在网内发包时,伪装为自己原本的ip172.25.64.2[root@server2 html]# arptables -A OUT -s 172.25.64.100 -j mangle --mangle-ip-s 172.25.64.2#保存添加的两条策略[root@server2 html]# /etc/init.d/arptables_jf save#打开arptables服务[root@server2 html]# /etc/init.d/arptables_jf start##server3和server2一样[root@server3 html]# yum install arptables_jf -y[root@server3 html]# arptables -A IN -d 172.25.64.100 -j DROP[root@server3 html]# arptables -A OUT -s 172.25.64.100 -j mangle --mangle-ip-s 172.25.64.3[root@server3 html]# /etc/init.d/arptables_jf save[root@server3 html]# /etc/init.d/arptables_jf start
转载地址:http://zghrn.baihongyu.com/