我们将它写成一个脚本,目标是为了将LVS1的VIP和LVS2的VIP分别配置在lo:0和lo:1上面
接受start参数的时候,做arp限制;接受stop参数的时候,取消限制。
这样做是为了,当两个VIP都切换过来的时候,可以进行响应。
[root@node3 ~]# vim RealServer.sh
#!/bin/bash
usage(){
echo "This Script is design for setting the arp argument for lvs-dr RealServer"
echo "Usage:`basename $0` start|stop"
}
case $1 in
start)
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 192.168.2.221/32 broadcast 192.168.2.221 up
ifconfig lo:1 192.168.2.222/32 broadcast 192.168.2.222 up
route add -host 192.168.2.221 dev lo:0
route add -host 192.168.2.222 dev lo:1
;;
stop)
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 192.168.2.221/32 broadcast 192.168.2.221 down
ifconfig lo:1 192.168.2.222/32 broadcast 192.168.2.222 down
route del -host 192.168.2.221 dev lo:0
route del -host 192.168.2.222 dev lo:1
;;
*)
usage
;;
esac
(5)测试方法
由于这一步十分难做演示,所以说一下主要的步骤。
当node1使用systemctl stop keepalived.service的时候,
使用192.168.2.221会转移到node2,浏览器依然可以使用192.168.2.221访问node3和node4
同时使用192.168.2.222依然可以访问node3和node4,不影响node2的正常运作。
当node2使用systemctl stop keepalived.service的时候,
使用192.168.2.221依然可以访问node3和node4,不影响node1的正常运作。
同时192.168.2.222此时会转移到node1,浏览器依然可以使用192.168.2.221访问node3和node4
所以你怎么刷,或者关掉任意一个LVS,都可以用192.168.2.221和192.168.2.222这两个ip访问后端两台主机。
注意:
因为这里为了显示效果,使用了IP访问。使用IP访问的时候,假如有多台虚拟主机,一定会默认访问第一个。
上面的Keepalived配置的ACTIVE/ACTIVE模式,一般是httpd配置放两个虚拟主机网站。
这样用域名访问网站的时候,假如指向同一个IP的时候,也能显示不同的网站。
一些关于Keepalived相关教程集合:
CentOS 7下Keepalived + HAProxy 搭建配置详解
Keepalived高可用集群应用场景与配置
Nginx+Keepalived实现站点高可用
Nginx+Keepalived实现站点高可用(负载均衡)
构建高可用集群Keepalived+Haproxy负载均衡
CentOS6.5下 Keepalived高可用服务单实例配置
Keepalived安装与配置
Nginx之Keepalived高可用
Linux下Keepalived服务安装文档