shell脚本:nginx反向代理节点状态检查

简介:

lvs可以使用ipvsam -Ln 查看RS节点的情况,当RS宕机后剔除,当RS恢复后自动加入,nginx上面无法查看,需要安装插件或自己写脚本实现;


反向代理的配置如下:(server 去掉前面的空格,为了方便后面脚本使用sed做文本替换;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost vhosts] # cat upstream01.conf
upstream backend {
server 192.168.20.10:80 weight=5;
server 192.168.20.11:80 weight=5;
}
server {
     listen 80;
     server_name blog.yong.com;
     location / {
         proxy_pass http: //backend ;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-For $remote_addr;
     }
}


检查nginx后端real server脚本,实现发现宕机剔除,恢复服务自动加入功能;

脚本解释:

使用守护进程的方式,每隔5秒执行一次脚本,判断后端RS服务是否是正常,发现有宕机的RS,则sed修改配置文件#号注释掉对应的RS,ip地址,并重启nginx服务;当发现服务恢复的时候,去掉#号,并重启nginx服务,加入到RS中;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost vhosts] # cat check_nginx_RS.sh  
#!/bin/bash
#written by mofansheng@2015-11-26
ip_array=($( grep  "192.168.20"  upstream01.conf | awk  '{print $2}' | awk  -F ":"  '{print $1}' ))
while  true
do
     for ((i=0;i<${ #ip_array[*]};i++))
     do
          egrep  "^#.*${ip_array[$i]}.*"  upstream01.conf &> /dev/null
          [ $? - eq  0 ] &&  continue
          status=`curl -s -w  "%{http_code}"  -o  /dev/null  ${ip_array[$i]}`
          if  [ ${status} - ne  200 ]
              then
               sed  -i  "s/server ${ip_array[$i]}/#server ${ip_array[$i]}/g"  upstream01.conf
               /etc/init .d /nginx  reload
          fi
     done
sleep  5
 
for ((i=0;i<${ #ip_array[*]};i++))
do
  a=`curl -s -w  "%{http_code}"  -o  /dev/null  ${ip_array[$i]}`
      if  [ ${a} - eq  200 ]; then
       egrep  "^#.*${ip_array[$i]}.*"  upstream01.conf &> /dev/null
       if  [ $? - eq  0 ]; then
            sed  -i -r  "s/#(.*${ip_array[$i]}.*)/\1/g"  upstream01.conf
            /etc/init .d /nginx  reload
       fi
      fi
done
done


脚本执行结果如下图:





本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1717464,如需转载请自行联系原作者
目录
相关文章
|
20天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
58 1
|
4天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
6天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
21 2
6种方法打造出色的Shell脚本
|
25天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
114 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
11天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
36 6
|
7天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
30天前
|
负载均衡 算法 应用服务中间件
nginx反向代理与负载均衡
nginx反向代理与负载均衡
31 1
|
29天前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
20 0
|
机器学习/深度学习 应用服务中间件 Shell
Shell实现简单的管理Nginx服务启动脚本
实现的功能 一:Nginx启动自检功能二:自检报错,自动进入所在文件的所在行,让运维人员进行修改!三:文件锁功能使得该脚本只能让系统管理员执行,并保证不能同时执行多次!四:可适用较好,实现简单的start,status,restart,reload,stop等功能! 脚本的缺点 一:未引用方法,使.
1320 0
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
60 12