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

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


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

[[email protected] 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中;

[[email protected] vhosts]# cat check_nginx_RS.sh  
#!/bin/bash
#written by [email protected]
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


脚本执行结果如下图:

时间: 2024-10-06 10:12:44

shell脚本:nginx反向代理节点状态检查的相关文章

开发程序实现nginx代理节点状态检查及WEB界面展示

实现功能介绍: 利用shell程序及http服务巧妙的实现监控nginx代理节点状态检查,然后通过web界面实时刷新显示结果,是不是有些吃惊这样高大上的程序?那就赶紧看看吧!to用人单位:此课程可以体现学生shell编程功力,以及对nginx proxy企业实战及驾驭的能力. 不同的同学的三个实现方法分享,各位看官,你们看看哪个同学的更好,请评论. 第一个实现脚本:youjinyi 视频下载看地址:http://down.51cto.com/data/1914201 #!/bin/sh port

分析shell实现nginx反向代理后端realserver健康检查

今天阅读老男孩教育博客http://oldboy.blog.51cto.com/ 中一篇关于shell实现nginx反向代理后端realserver健康检查的文章,根据其中一个学员朋友的思路自己写了一个脚本. 一.nginx.conf部分内容如下:     upstream rs_pools {     server 10.0.0.8:80 weight=5;     server 10.0.0.9:80 weight=5;     server 10.0.0.10:80 weight=5;  

nginx 反向代理和服务器组状态

实现NGINX的代理(七层负载均衡): 拓扑图: web01            web02 |192.168.1.20     |192.168.1.21 ----------------------------- |192.168.1.254 nginx(反向代理); |1.1.1.254 | client(1.1.1.1); 要求:client1.1.1.1 可以通过反向代理1.1.1.254 访问到内网的两台web服务:web01  性能比较好,权值为二: **由于是资源有限,用IP虚

nginx反向代理

1. 操作系统 CentOS 6.4 x86_64 2.软件版本 Nginx 1.4.2 3.实验拓扑 注,实验拓扑见下文. 4.安装yum源 1 2 3 [root @nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh http://download.fedoraproject.org/

Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.

Nginx反向代理、缓存、负载均衡服务器构建

代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理. 反向代理服务器接受来

nginx反向代理缓存服务器构建

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网