Keepalived 常见问题

脑裂

keepalive脑裂时(即vip同时在主备机上出现)很可能和iptables有关,同时注意iptables规则顺序。
目前采用方案:将主备机IP分别添加到对方的iptables中,此处有多种方案可解决,参考资料链接
-A INPUT -s 192.168.25.10/32 -j ACCEPT

接管多服务

接管对象:192.168.25.10    redisA1 :6374(VIP192.168.25.100)     redisA2 :6375

                    192.168.25.11    redisB1 :6374(VIP192.168.25.101)     redisB2 :6375

Master配置

! Configuration File for keepalived
global_defs {
   router_id redis10
}
vrrp_script chk_redis6374 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6374" 
     interval 2 
     timeout 2
     fall 3
}
vrrp_script chk_redis6375                                                                                                           
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6375" 
     interval 2 
     timeout 2
     fall 3
}

vrrp_instance redis6374 {
     state MASTER
     interface eth0  
     virtual_router_id 60 
     priority  150       
     nopreempt # no seize,must add
     advert_int 1
         authentication {   #all node must same
         auth_type PASS
         auth_pass 1111
    }   
    virtual_ipaddress {  
         192.168.25.100/24
    }
    track_script { 
         chk_redis6374
    } 
     notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  192.168.25.11 6374"
     notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  192.168.25.11 6374"
     notify_fault "/etc/keepalived/scripts/redis_fault.sh 6374" 
     notify_stop "/etc/keepalived/scripts/redis_stop.sh 6374"
}

vrrp_instance redis6375 {
     state MASTER # master set to SLAVE also
     interface eth0  
     virtual_router_id 61 
     priority  150       
     nopreempt # no seize,must add
     advert_int 1
         authentication {   #all node must same
         auth_type PASS
         auth_pass 1111
    }   
    virtual_ipaddress {  
         192.168.25.101/24
    }
    track_script { 
         chk_redis6375
    } 
     notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  192.168.25.11 6375"
     notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  192.168.25.11 6375"
     notify_fault "/etc/keepalived/scripts/redis_fault.sh 6375"
     notify_stop "/etc/keepalived/scripts/redis_stop.sh 6375"
}

Backup配置

! Configuration File for keepalived
global_defs {
   router_id redis10
}
vrrp_script chk_redis6374 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6374" 
     interval 2 
     timeout 2
     fall 3
}
vrrp_script chk_redis6375                                                                                                           
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6375" 
     interval 2 
     timeout 2
     fall 3
}

vrrp_instance redis6374 {
     state BACKUP # master set to SLAVE also
     interface eth0  
     virtual_router_id 60 
     priority  100       
     nopreempt # no seize,must add
     advert_int 1
         authentication {   #all node must same
         auth_type PASS
         auth_pass 1111
    }   
    virtual_ipaddress {  
         192.168.25.100/24
    }
    track_script { 
         chk_redis6374
    } 
     notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  192.168.25.10 6374"
     notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  192.168.25.10 6374"
     notify_fault "/etc/keepalived/scripts/redis_fault.sh 6374" 
     notify_stop "/etc/keepalived/scripts/redis_stop.sh 6374"
}

vrrp_instance redis6375 {
     state BACKUP # master set to SLAVE also
     interface eth0  
     virtual_router_id 61 
     priority  100       
     nopreempt # no seize,must add
     advert_int 1
         authentication {   #all node must same
         auth_type PASS
         auth_pass 1111
    }   
    virtual_ipaddress {
         192.168.25.101/24
    }
    track_script { 
         chk_redis6375
    } 
     notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  192.168.25.10 6375"
     notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  192.168.25.10 6375"
     notify_fault "/etc/keepalived/scripts/redis_fault.sh 6375"
     notify_stop "/etc/keepalived/scripts/redis_stop.sh 6375"
}

 

屏蔽自动切回

keepalive如想设置master恢复后不接管, 需把主备的优先级priority设置成一样,  靠nopreempt无法控制master接管功能(待解决)

 

参考资料
#iptables详解 
http://blog.chinaunix.net/uid-26495963-id-3279216.html
#使用 iptables 时,特别注意规则的顺序
http://blog.csdn.net/alonesword/article/details/41648555
#Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)
http://blog.csdn.net/nimasike/article/details/52463806
#Keepalived环境开启iptables
http://www.topjishu.com/4460.htm
l

转载于:https://my.oschina.net/u/3614126/blog/1539641

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值