1. 程式人生 > >keepalived設定master故障恢復後不重新搶回VIP配置

keepalived設定master故障恢復後不重新搶回VIP配置

允許組播,兩臺裝置上都需要執行
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
或修改:vim /etc/sysconfig/iptables
適當位置新增行:
-A INPUT -d 224.0.0.18 -j ACCEPT

預設情況下keepalived 有一臺主伺服器(master,以後稱之為M伺服器),一臺備伺服器(backup,以後稱之為B伺服器)。
正常情況下M伺服器接管VIP成為【主】,當M伺服器宕機後,B伺服器接管VIP成為【主】,已達到災備的效果,如果M伺服器再次恢復正常,那麼M伺服器會重新搶回VIP成為【主】 B伺服器變成【備】。

核心配置如下,配置這裡不全,需要注意:
Master配置

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.80.120
}
#notify_master /home/keepshell/notify_master.sh
#notify_backup /home/keepshell/notify_backup.sh
#notify_fault /home/keepshell/notify_fault.sh
#notify_stop /home/keepshell/notify_stop.sh
}

Backup配置

vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
nopreempt
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.80.120
}
#notify_master /home/keepshell/notify_master.sh
#notify_backup /home/keepshell/notify_backup.sh
#notify_fault /home/keepshell/notify_fault.sh
#notify_stop /home/keepshell/notify_stop.sh
}

有的時候我們需要M伺服器在恢復正常後不要重新接管VIP,讓B伺服器繼續為【主】 讓後來恢復正常的M伺服器為【備】。

修改Master配置, Backup伺服器的配置不變。

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.80.120
    }
    notify_master /home/keepshell/notify_master.sh
    notify_backup /home/keepshell/notify_backup.sh
    notify_fault  /home/keepshell/notify_fault.sh
    notify_stop   /home/keepshell/notify_stop.sh
}

state MASTER 修改為 state BACKUP 
nopreempt  設定為不搶奪VIP

沒錯,修改M,B伺服器的  state BACKUP 都為【備】型別,同時設定 nopreempt  設定為不搶奪VIP,然後先啟動M伺服器,M伺服器會成為【主】,
然後啟動B伺服器,由於M的優先順序高【priority 100】 所以B不會搶奪VIP,這時M宕機,B成為【主】,接著M恢復正常,由於設定了nopreempt 所以M不會搶奪VIP,B繼續為【主】而M為【備】。