文章目录

前言

一、环境介绍

二、踩过的坑

1.keepalived 不执行自动检测nginx的脚本

 

总结




前言

随着网站访问量的日益激增,nginx等反向代理服务器得到广泛使用,为了保证nginx的高可用性,我们就需要搭建nginx高可用的集群。keepalived+nginx 就是业界成熟的方案。   在自己实际操作搭建的过程中,遇到过很多坑,踩坑的过程漫长、耗时且痛苦。所以写下这篇博文,希望所有看过这篇文章的小伙伴们不要走多余的弯路,麻溜的起飞!

 

环境的准备,软件的安装,网上的资料随处可见,这里就不在赘述!!

 

一、环境介绍

两个linux服务器 linux01和linux02  , 给每台服务器都安装上nginx和keepalived。实现的效果就是,用户通常的访问会分配到主nginx上,如果主nginx 宕机,自动切换到备用nginx上,从而实现高可用主从热备集群。架构图如下:

nginx 热备配置 nginx主从热备_linux

二、踩过的坑

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 健康状况的脚本问题,进行了总结。 希望小伙伴们少走弯路~~~