1,下载源码
keepalived 官网 http://www.keepalived.org/
cd /usr/local/src/
wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz
2, 安装
tar -zxvf keepalived-1.4.0.tar.gz
cd keepalived-1.4.0.tar.gz
./configure --prefix=/usr/local/keepalived
make && make install
3,将 keepalived 安装成 Linux 系统服务
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
ln -s /usr/local/sbin/keepalived /usr/sbin/
4, 修改 Keepalived 配置文件
编辑/etc/keepalived/keepalived.conf配置文件
global_defs {
router_id nginx_130 #标识本节点的名称,通常为hostname
}
## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 #每2秒检测一次nginx的运行状态
weight -20 #失败一次,将自己的优先级-20
}
vrrp_instance VI_1 {
state MASTER # 状态,主节点为MASTER,备份节点为BACKUP
interface docker0 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
virtual_router_id 51 # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
mcast_src_ip 192.168.234.130 # 本机IP地址
priority 100 # 节点优先级,值范围0~254,MASTER要比BACKUP高
advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
# 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
virtual_ipaddress {
192.168.234.200
}
track_script {
chk_nginx # nginx存活状态检测脚本
}
}
5,添加检测脚本
创建检测脚本bin编辑
vim /etc/keepalived/nginx_check.sh
chmod +x /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
docker start keep_nginx # docker启动nginx容器
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi
6,启动keepalived
systemctl start keepalived