keepalived脑裂切换思路

keepalived切换脚本
实现ps -ef查看nginx进程少于2个则判定nginx宕机,而后关闭keepalived

[root@nginx-proxy ~]# cat keepalived.sh 
#!/bin/bash
while true
do
if [ `ps -ef|grep nginx|grep -v grep|wc -l` -lt 2 ]
    then
    /etc/init.d/keepalived stop
fi
sleep 5
done
[root@nginx-proxy ~]# 

两台机器通过同一个机房使用keepalived时候,竟可能使用串口线之类的直连
1,使用单独的网卡直连
2,使用电源管理器
3,脚本(只要发生切换则报警,人为介入)
例子:假设备用节点收到vip地址且主节点还活着则人为是脑裂状态可以如下的判定,在备节点上运行脚本ping主节点,如果主节点能ping同,且vip飘逸到备几点则判定为脑裂

另外,我们可以使用arping来ping,如下

[root@DS-VM-linuxea /etc/graylog/collector-sidecar/generated]# arping -c 1 10.10.194.100
ARPING 10.10.194.100 from 10.10.231.61 eth0
Unicast reply from 10.10.194.100 [88:88:2F:9A:97:84]  1.768ms
Unicast reply from 10.10.194.100 [88:88:2F:60:CD:40]  1.858ms
Sent 1 probes (1 broadcast(s))
Received 2 response(s)
[root@DS-VM-linuxea /etc/graylog/collector-sidecar/generated]# 

但我们在旁路机器上arping vip地址如果出现脑裂这会有两个mac地址!

更多可参考这几篇文章:
heartbeat心跳问题解决二fence思路 http://www.linuxea.com/939.html
heartbeat列脑的发生和防止思路 http://www.linuxea.com/941.html

[root@nginx-proxy scripts]# cat lienao.sh 
#!/bin/sh
while true
do
ping -c 5 -w 3 10.0.0.91 &>/dev/null
if [ $? -eq 0 -a `ip add|grep 10.0.0.100|wc -l` -eq 1 ]
then
    echo "HA is Brain column!"
else
    echo "HA is run OK!"
fi
sleep 5
done
[root@nginx-proxy scripts]# 

keepalived双主

[root@nginx-proxy scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   734943463@qq.com   
}
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.100/24
    }
}

    vrrp_instance VI_2 {
        state BACKUP
        interface eth1
        virtual_router_id 52
        priority 50
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
        10.0.0.101/24
        }
    }
    [root@nginx-proxy scripts]# 
[root@nginx-proxy2 scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   734943463@qq.com   
}
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.100/24
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eth1
    virtual_router_id 52
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.101/24
    }
}
[root@nginx-proxy scripts]# 

0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2016-01-30分类: Nginx

标签: nginx

发表评论