1. 高可用
2. 修改 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.18.100
smtp_connect_timeout 30
#标识本节点的字符串,通常为hostname,可以在/etc/hosts 文件中设置 本机对应的id
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
# 检测 nginx 状态的脚本路径
script "/home/eric/file/nginx_check.sh"
#(检测脚本执行的间隔)
interval 2
#如果条件成立,权重 减 20
weight -20
}
vrrp_instance VI_1 {
# 主节点为 MASTER 对应的备份节点为 BACKUP
state MASTER
# 绑定虚拟IP的网络接口,与本机 IP 所在的网络接口相同
interface ens33
# 虚拟路由的ID号,两个节点设置必须一样,相同的 virtual_router_id 为一个组
virtual_router_id 50
# 本机IP地址
mcast_src_ip 192.168.18.100
# 主、备机取不同的优先级,主机值较大,备份机值较小
priority 100
#优先级高的设置,nopreempt 解决异常恢复后再次抢占的问题
nopreempt
#组播信息发送间隔,两个节点设置必须一样,默认 1s
advert_int 1
#设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
# 将track_script 块加入 instance 配置块
track_script{
# 执行nginx 监控的服务
chk_nginx
}
virtual_ipaddress {
# 虚拟地址 , 可以定义多个
192.168.18.50
}
}
3. 添加 nginx_check.sh
检测脚本
作用:如果nginx没有启动,则启动nginx ,如果启动不成功,则杀掉keepalived
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/home/eric/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
4. 启动 nginx
和 keepalived
# 启动nginx
./nginx
# 启动keepalived(或者加入系统服务)
./keepalived -f /home/eric/keepalived/etc/keepalived/keepalived.conf
5. 测试,当一台nginx
挂掉, 依然能正常访问
# 访问虚拟ip
http://192.168.18.50:9000/1.html