keepalvied双备模式

node1配置

! Configuration File for keepalived
vrrp_script chk_keepalive {
 
    script "/root/scripts/check.sh"    ###监控脚本 
    interval 2                         ###间隔时间
    }
 
#网卡需要注意,使用ifconfig查看一下当前活动网卡
 
vrrp_instance VI_1 {
    state BACKUP                ###设置为BACKUP
    nopreempt                   ###不抢占MASTER
    interface eth0              ###监控网卡   
    virtual_router_id 42
    priority 100                ###权重值 
    authentication {
        auth_type PASS          ###加密 
        auth_pass 1q2w3e        ###密码
    }
    #设置额外的监控,里面的任意一个网卡出现问题,都会进入FAULT状态
    track_interface {
       eth0
    }
    track_script {
         chk_keepalive          ###执行上面定义的chk_keepalive
    }
    virtual_ipaddress {
       10.0.36.201            ######VIP
    }
        notify_master /root/scripts/change_master.sh   # 当此节点切换为master时执行的脚本
        notify_backup /root/scripts/change_backup.sh   # 当此节点切换为backup时执行的脚本
        notify_fault  /root/scripts/change_fault.sh    # 当此节点故障时(chk_keepalive中脚本返回非0)执行的脚本
        notify_stop  /root/scripts/change_stop.sh      # 当此节点keepalived服务stop时执行的脚本
 
}

node2配置

! Configuration File for keepalived
 
vrrp_script chk_keepalive {
    script "/root/scripts/check.sh"
    interval 2                
    }
 
 #同样要注意网卡
 
vrrp_instance VI_1 {
    state BACKUP        ###设置为BACKUP 
    interface eth0      ###监控网卡(注意这里没有nopreempt配置)
    virtual_router_id 42
    priority 10         ###比MASTRE权重值低 
    authentication {
        auth_type PASS
        auth_pass 1q2w3e        ###密码与MASTRE相同 
    }
    #设置额外的监控,里面的任意一个网卡出现问题,都会进入FAULT状态
    track_interface {
       eth0
    }
    track_script {
    chk_keepalive        ###执行上面定义的chk_keepalive
    }
    virtual_ipaddress {
        10.0.36.201 ####vip
    }
        notify_master /root/scripts/change_master.sh
        notify_backup /root/scripts/change_backup.sh
        notify_fault  /root/scripts/change_fault.sh
        notify_stop  /root/scripts/change_stop.sh
}

脚本

四个notify脚本根据业务需要配置,我的是在改变状态时同时插入一条日志

check.sh脚本

#!/bin/bash

cmd=`ps -C haproxy --no-header |wc -l`
if [ $cmd -eq 0 ];then
        exit 1
else
        exit 0
fi

此脚本针对双备keepalive不抢占的脚本,当主检查haproxy无进程时,返回非0,此时keepalive进入故障状态并移除VIP。

posted @ 2016-11-01 09:31  Cool_King  阅读(827)  评论(0编辑  收藏  举报