1.安装依赖
yum install -y keepalived
systemctl start keepalived
systemctl enable keepalived
2.配置
a. keepalived.conf配置
global_defs {
router_id nginx_server2 # 机器标识(backup节点为nfs_server2)
}
vrrp_script chk {
script "/etc/keepalived/check_port.sh 192.168.1.151"
interval 1 # 脚本执行间隔(s)
fall 2 # 转换为失败状态,所需的执行成功次数
rise 30 # 转换为成功状态,所需的执行成功次数
weight -20
}
vrrp_instance nfs {
state BACKUP
interface ens192 # 绑定的网卡(用来发VRRP包; 绑定VIP), 网卡down会进入FAULT状态
virtual_router_id 9
priority 90
advert_int 1
authentication {
# 认证权限,防止非法节点进入
auth_type PASS
auth_pass 12345678
}
virtual_ipaddress {
# VIP, 可设置多个
192.168.1.151
}
track_script {
# 健康检查脚本
chk
}
notify "/etc/keepalived/change_state.sh /var/log/keepalived.log"
}
b. check_port.sh监听脚本
#!/bin/sh
isMaster=`ip addr show | grep "scope global" | grep $1`
if [ -n "$isMaster" ]
then
PORT_PROCESS=`ps -ef | grep nginx | grep -v grep | wc -l`
if [ $PORT_PROCESS -eq 0 ]
then
echo "nginx Is Not Running, End."
exit 1
fi
else
echo "is backup"
fi
c. change_state.sh主从切换脚本(仅仅打印日志, 可去除)
#!/bin/sh
# 参数1: 转态变化输出文件; 参数3: VRRP 实例; 参数4: 新转态; 状态5: 权重
# 示例: /var/log/keepalived.log INSTANCE nfs MASTER 100
outFilename=$1
instance=$3
newState=$4
priority=$5
date=`date "+%Y-%m-%d %H:%M:%S"`
content="$date $3 change to $4, priority: $5"
echo "$content" >> $1