2017-06-03 54 views
0

我正在尝试为我的服务实现基于keepalived的故障转移。请在下面找到我的主备节点配置。keepalived转换没有按预期发生

主节点:

vrrp_script chk_splunkd { 
    script "pidof splunkd" 
    interval 2 
    fall 2 
    rise 2 
} 

vrrp_instance VI_1 { 
    interface eth0 
    state MASTER 
    advert_int 1 
    virtual_router_id 51 
    priority 200 
    nopreempt 
    smtp_alert 
    authentication { 
      auth_type PASS 
      auth_pass passme 
    } 
    virtual_ipaddress { 
      10.126.246.245 
    } 
    track_script { 
      chk_splunkd 
    } 
    notify_master /etc/keepalived/scripts/master.sh 
    notify_backup /etc/keepalived/scripts/stop_service.sh 
    notify_fault /etc/keepalived/scripts/stop_service.sh 
} 

备份节点:

vrrp_script chk_splunkd { 
    script "pidof splunkd" 
    interval 2 
    fall 2 
    rise 2 
} 
vrrp_instance VI_1 { 
    interface eth0 
    state BACKUP 
    advert_int 1 
    virtual_router_id 51 
    priority 100 
    nopreempt 
    smtp_alert 
    authentication { 
      auth_type PASS 
      auth_pass passme 
    } 

    virtual_ipaddress { 
      10.126.246.245 
    } 
    track_script { 
      chk_splunkd 
    } 
    notify_master /etc/keepalived/scripts/master.sh 
    notify_backup /etc/keepalived/scripts/stop_service.sh 
    notify_fault /etc/keepalived/scripts/stop_service.sh 
} 

然而,我发现,即使一个节点进入故障状态,并停止发送VRRP广告,其他节点不自动转换到主状态。当我尝试使用tcpdump -vv -i eth0 vrrp来监控VRRP通告数据包时,我发现即使在一个节点的广播停止后,另一个节点也不会自动开始发送指示它现在已成为主节点的广告。

请帮我找出我失踪的东西。

感谢,

Keerthana

回答

0

的问题是,在启动时,一个节点成为主过程中,另外一个进入故障模式由于pidof splunkd命令将返回1作为我Splunk的服务应该是只在主节点上运行。一旦我编辑通知脚本将当前状态写入外部文件并读取状态以在通知脚本中执行操作,事情就会正常运行。