文章目录
前言
一、环境介绍
二、踩过的坑
1.keepalived 不执行自动检测nginx的脚本
总结
前言
随着网站访问量的日益激增,nginx等反向代理服务器得到广泛使用,为了保证nginx的高可用性,我们就需要搭建nginx高可用的集群。keepalived+nginx 就是业界成熟的方案。 在自己实际操作搭建的过程中,遇到过很多坑,踩坑的过程漫长、耗时且痛苦。所以写下这篇博文,希望所有看过这篇文章的小伙伴们不要走多余的弯路,麻溜的起飞!
环境的准备,软件的安装,网上的资料随处可见,这里就不在赘述!!
一、环境介绍
两个linux服务器 linux01和linux02 , 给每台服务器都安装上nginx和keepalived。实现的效果就是,用户通常的访问会分配到主nginx上,如果主nginx 宕机,自动切换到备用nginx上,从而实现高可用主从热备集群。架构图如下:
二、踩过的坑
1.keepalived 不执行自动检测nginx的脚本
遇到keepalived不执行自动检测脚本时,应该做好如下几个检查步骤,如果做完如下几个检测步骤后,还是不能解决问题,请在评论区留言!!
1.1 亲测有效的检测脚本
#!/bin/sh
nginxpid=$(ps -C nginx --no-header|wc -l)
#1.判断Nginx是否存活,如果不存活则关闭keepalived
if [ $nginxpid -eq 0 ];then
service keepalived stop
fi
1.2 确认脚本当前用户有执行权限
首先cd进入检测脚本所在的目录,然后执行chomod u+x check_nginx.sh 请注意,check_nginx.sh 请修改为你自己检测脚本的名称。
1.3 确认脚本没有语法错误
cd进入到脚本所在目录,执行./check_nginx.sh 看看是不是能执行成功。请注意,check_nginx.sh 请修改为你自己检测脚本的名称。
1.4 keepalived配置文件问题
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
script_user root
enable_script_security
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.116.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check { #请注意,这个花括号前面是有空格的
script "/usr/local/src/check_nginx.sh" # 复制这个路径去执行下,确保路径和脚本名称没错
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.116.50
}
track_script {
check # 这里为啥是“check”,不是其他的字符串呢? 这里务必和上面配置“vrrp_script check”中的check保持一致
}
}
总结
环境的安装以及配置,网上的资料有很多。本文就keepalived无法自动执行检测nginx 健康状况的脚本问题,进行了总结。 希望小伙伴们少走弯路~~~