keepalived.conf
/etc/keepalived/keepalived.conf
# 全局配置
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.2.190 # 备机更改为自己的IP
smtp_connect_timeout 30
router_id LVS_DEVEL # 主机的名称,可以修改/etc/hosts添加:127.0.0.1 LVS_DEVEL
}
# 检测脚本的配置
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" #
# 当脚本中的条件成立,会设置以下参数
interval 2 # (检测脚本执行的间隔)
weight 2 # 设置权重
}
# 虚拟IP的配置
vrrp_instance VI_1 {
state MASTER // 备份服务器上MASTER改为BACKUP
interface ens33 //网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大100,备份机值较小90
advert_int 1 # 每隔多长时间发送一个心跳用来检测主机、或者服务器是否还活着,默认1秒
# 一种认证方式
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.30 // VRRP H 虚拟地址,可以绑定多个IP
}
}
nginx_check.sh
/usr/local/src/nginx_check.sh
#!/bin/bash
# 如果主服务器挂掉,会杀掉所有相关的服务,最后从服务器替代主服务器
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi