• Tengine笔记3:Nginx的反向代理和健康状态检查


    通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端;

     
    下面是一个反向代码的物理网络图:
     
    下面通过三台服务器来实现这个经典的反向代理结构:
      反向代理服务器:1台Tengine服务器
      Web服务器:2台Web服务,搭载Tomcat的应用服务器
    Tomcat的应用服务器的搭建:
     
    安装Java JDK
    安装命令: 
    rpm -ivh jdk-7u79-linux-x64.rpm
        
    配置环境变量 :    
    vi ~/.bash_profile 
    PATH=$PATH:$HOME/bin
    JAVA_HOME=/usr/java/jdk1.7.0_79/
    PATH=$PATH:$JAVA_HOME/bin
    export PATH
    保存完以后  java -version 查看是否成功
     
    安装Tomecat
    安装Tomcat,Tomcat是绿色版软件,所以下载后直接解压到相应的目录即可,下载地址:http://tomcat.apache.org/download-70.cgi  
    复制代码
    #解压:
    tar -zxvf apache-tomcat-7.0.61.tar.gz 
    mv apache-tomcat-7.0.61 /usr/local/tomcat
    #将端口改为80
    vim /usr/local/tomcat/conf/server.xml 
    
    #启动Tomcat  
     sh /usr/local/tomcat/bin/startup.sh
    复制代码
     
    关闭防火墙查看效果;
        
     
    为了能够区分出两个Tomcat,我们将Tomcat的默认页面,改为Tomcat 1 : ip  和Tomcat 2 : ip 
        
        
    #将Tomcat的默认端口8080改为80
    vim /usr/local/tomcat/webapps/ROOT/index.jsp

       

      

    Tengine的服务器的搭建:
     
    参照:http://www.cnblogs.com/lovelanglangyou/p/7422916.html
     
     
    配置Tengine的配置文件,将客户端请求的IP转发向两台Web应用服务器:
     
    #upstream   localhost{  
    ##weigth参数表示权值,权值越高被分配到的几率越大  
    #server 127.0.0.1:9001 weight=1  max_fails=2 fail_timeout=30s;  
    #server 127.0.0.1:9004 weight=1  max_fails=2 fail_timeout=30s;  
    #server 127.0.0.1:9007 weight=1  max_fails=2 fail_timeout=30s;     
    } 
    复制代码
    vim /etc/usr/local/tengine-2.1.0/conf/nginx.conf
    #通过  upstream 进行请求转发  
    upstream  backend{
            server 192.168.163.13:80;
            server 192.168.163.14:80;
        }
    server {
            location / {
                proxy_pass http://backend;
            }
            location /status{
                    check_status;
            }
       }
    复制代码
     

     重启Nginx

    然后我们用不同的浏览器,去反复请求 192.168.163.11 会发现,服务器会在两个Tomecat之间来回切换;

     

    为添加tengine的状态监控

    Tengine的状态监控分为两种:

        

    文档:http://tengine.taobao.org/documentation_cn.html

    我们演示一个最简单的健康检查模块,只需要在upstream里面添加下面代码,然后在location中启用即可:
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_keepalive_requests 100;
    check_http_send "HEAD / HTTP/1.1
    Connection: keep-alive
    
    ";
    check_http_expect_alive http_2xx http_3xx;
     
    例:
    复制代码
    upstream  backend{
            server 192.168.163.13:80;
            server 192.168.163.14:80;
            check interval=3000 rise=2 fall=5 timeout=1000 type=http;
            check_http_send "HEAD / HTTP/1.0
    
    ";
            check_http_expect_alive http_2xx http_3xx;
    
        }
    server {
            location / {
                proxy_pass http://backend;
            }
            location /status{
                    check_status;
            }
       }
    复制代码
     
    然后重启Nginx,在浏览器中输入 IP/status即可查看到监控状态,比Nginx的功能要好的多;
       
    当我停掉其中一台服务器的时候,健康状态检查就会显示有一台服务器挂了;
       
    当Nginx请求超过5次,还是处于宕机状态时,就会标红显示;
       
    当我恢复其中一台服务器以后,两台Web服务器的状态马上又恢复了;
       
     
     
     
  • 相关阅读:
    vue开发中v-for在Eslint的规则检查下出现:Elements in iteration expect to have 'v-bind:key' directives
    一步步构造自己的vue2.0+webpack环境
    函数的扩展
    数值的扩展
    DB2数据库代码页和实例代码页的区别(解决DB2乱码问题)
    【翻译】探究Ext JS 5和Sencha Touch的布局系统
    【翻译】培训提示:解决常见编码问题的简单技巧
    【翻译】对于Ext JS 5,你准备好了吗?
    Git工程迁移方法总结(命令行)
    Ext JS 5初探(三)
  • 原文地址:https://www.cnblogs.com/lovelanglangyou/p/7423841.html
Copyright © 2020-2023  润新知