1. 安装 keepalived 软件

yum  install  -y  keepalived

安装完成后可以找到对应的配置文件   /etc/keepalived/keepalived.conf 


2.节点配置

主节点配置文件

! Configuration File for keepalived
! 检测脚本
vrrp_script chk_mycat {     
        script "/data/scripts/mycat_check.sh"  #这个脚本需要自己编写
        interval 2   # 检测脚本执行间隔 2s
        weight -20 
}
vrrp_instance VI_1 {
        state MASTER                   # 节点身份 ,主节点设置master ,备节点为backup
        interface eth0                 # 绑定虚拟 IP 的网络接口
        virtual_router_id 51           # 虚拟路由的 ID 号, 两个节点设置必须一样
        priority 100                   ## 节点优先级, 值范围 0-254,MASTER 要比 BACKUP 高
        Nopreempt                      ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1                   # 组播信息发送间隔,两个节点设置必须一样, 默认 1s
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        ## 将 track_script 块加入 instance 配置块
        track_script {
                chk_mycat              ## 执行 mycat 监控的服务
        } 
        # 虚拟ip地址
        virtual_ipaddress {
                10.130.36.220 
        }
}


备节点配置

! Configuration File for keepalived
vrrp_script chk_mycat {
        script "/data/scripts/mycat_check.sh"
        interval 2 
        weight -20 
}
vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
 
        track_script {
                chk_mycat
        } 
 
        virtual_ipaddress {
                10.130.36.220 
        }
}

备节点只需要更改 state, priority  就行,其他配置和主节点一致


/data/scripts/mycat_check.sh 脚本如下

#!/bin/bash
PATH="/usr/local/jdk1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
LANG="en_US.UTF-8"
counter=$(netstat  -anlp  | grep  8066 | wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/mycat/bin/mycat start
    sleep 2
    counter=$(netstat  -anlp  | grep  8066 | wc -l)
    if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
    fi
fi


默认为抢占模式

非抢占模式设定:主备节点的state 的值为 backup ,并且优先级高的节点设置为 nopreempt

Keepalived主备高可用环境搭建,主备模式_第1张图片