java1234开源博客系统
博客信息

通过shell脚本优化keepalived+Nginx高可用集群

0
发布时间:『 2020-01-07 14:10』  博客类别:Nginx  阅读(106)

通过shell脚本优化keepalived+Nginx高可用集群


前面我们测试的情况是 keepalived挂掉的情况,实际情况是keepalived不容易挂掉,容易挂掉的是nginx;

所以这里就有有问题了,nginx挂了,但是keepavlied没挂,这时候 依然可以访问机器,但是访问不到服务;

所以这里需要借助keepalived的vrrp_script配置;来调用自定义shell脚本;

我们给下脚本:

#!/bin/bash

echo 'xxxxxx'

count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`

echo $count_nginx

if [ $count_nginx -eq 0 ];then

    systemctl start nginx.service

    sleep 2

    if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then

        systemctl stop keepalived.service

    fi  

fi

 

这个shell脚本的意思是 统计nginx进程数,假如是0个 说明Nginx挂掉了,那就启动nginx,等2秒,再统计,假如还是0,说明nginx启动失败,

那我们就把keepalived也啥掉 切换备份机器,假如不是0,说明启动成功,那就继续运行;

 

把上面shello脚本命名nginx_check.sh文件,存/shell/目录下;

下面是shell脚本测试;

切换shell目录

QQ鎴浘20200106232932.jpg


ps -ef|grep -w nginx|grep -v grep 测试;



我们测试: sh nginx_check.sh

QQ鎴浘20200107140842.jpg

执行没问题,有2条记录,所以不用干啥;

 

假如我们把 nginx停掉 ; 模拟nginx宕机;systemctl stop nginx.service

QQ鎴浘20200106233325.jpg

我们执行shell脚本 是0 所以自动启动nginx

所以我们下面执行会发现 又有 Nginx了;

 

脚本没毛病;

我们配置下keepalived.conf;

 

vrrp_script chk_http_port {

 script "/shell/nginx_check.sh" #脚本地址

 interval 2 #检测脚本执行的间隔

 weight 2 #比重

}

 

这时候 我们重启keepalived测试,也是没问题;



关键字:   无
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有