1、下载
点击keepalived官方网站进行下载,由于工作需要,本人下载安装版本为1.3.6 。
2、安装
# 解压
tar -zxvf keepalived-1.3.6.tar.gz
# 配置校验
cd keepalived-1.3.6
./configure
# 安装
make
make install
# 检查版本
keepalived -v
# 如果需要卸载,请执行 make uninstall
3、配置
3.1 新增/etc/keepalived/keepalived.conf配置文件
! Configuration File For Keepalived
# 全局配置
global_defs {
# 集群中本节点的名称,可使用主机名
# 设置主机名名称的命令 hostname nginx-1
router_id nginx-1
# 指定执行脚本的用户
script_user root
enable_script_security
}
vrrp_script chk_nginx {
# 健康检查脚本
script "/etc/keepalived/nginx_check.sh"
# 检查时间间隔
interval 3
}
vrrp_instance VI_1 {
# 状态,MASTER表示主节点,BACKUP表示备节点
state MASTER
# 网卡名称
interface ens33
# 虚拟路由ID,同网段中不同组不能重复!!!
# 同主节点保持一致
virtual_router_id 51
# 优先级,主节点要高于备节点
priority 100
# 进行通告
advert_int 1
# 本机IP,实现定向传递心跳,减小网络广播
unicast_src_ip 192.168.141.133
unicast_peer {
# 集群中其他节点地址
192.168.141.135
}
authentication {
# 认证方式,密码认证
auth_type PASS
# 密码
auth_pass 1111
}
track_script {
# 指向上面自定义的健康检查模块
chk_nginx
}
virtual_ipaddress {
# 虚地址,会自动启一个该虚拟网卡,客户可以访问该地址
192.168.141.188
}
}
3.2 新增vi /etc/keepalived/nginx_check.sh配置文件
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ]; then
/home/nginx/nginx/sbin/nginx -c /home/nginx/nginx/conf/nginx.conf
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
pkill keepalived
fi
fi
3.3 BACKUP节点keepalived.conf配置(只有该配置文件不一样)
! Configuration File For Keepalived
# 全局配置
global_defs {
# 集群中本节点的名称,可使用主机名
# 设置主机名名称的命令 hostname nginx-2
router_id nginx-2
# 指定执行脚本的用户
script_user root
enable_script_security
}
vrrp_script chk_nginx {
# 健康检查脚本
script "/etc/keepalived/nginx_check.sh"
# 检查时间间隔
interval 3
}
vrrp_instance VI_1 {
# 状态,MASTER表示主节点,BACKUP表示备节点
state BACKUP
# 网卡名称
interface ens33
# 虚拟路由ID,同网段中不同组不能重复!!!
# 同主节点保持一致
virtual_router_id 51
# 优先级,主节点要高于备节点
priority 90
# 自动检测心跳时间
advert_int 1
# 本机IP,实现定向传递心跳,减小网络广播
unicast_src_ip 192.168.141.135
unicast_peer {
# 集群中其他节点地址
192.168.141.133
}
authentication {
# 认证方式,密码认证
auth_type PASS
# 密码
auth_pass 1111
}
track_script {
# 指向上面自定义的健康检查模块
chk_nginx
}
virtual_ipaddress {
# 虚地址,会自动启一个该虚拟网卡,客户可以访问该地址
192.168.141.188
}
}
4、注意事项
4.1 严格配置三个时间
vrrp_instance模块中的advert_int(自动检测心跳时间)一定要小于vrrp_script模块中的interval(检查脚本执行间隔时间),vrrp_script模块中的interval(检查脚本执行间隔时间)一定要大于执行脚本中的sleep时间!
这里如果配置不好,会导致报/etc/keepalived/nginx_check.sh exited due to signal 15
错误。
4.2 要确保执行脚本有执行权限
这里如果配置不好,会无法调用执行脚本。
4.3 执行脚本中的开启nginx的命令必须是全路径,即便配置了全局变量也要是全路径。
这里如果配置不好,会导致检查脚本无法启用nginx,而直接杀死keepalived。