nginx轮询宕机解决

  nginx应对高并发的手段采用集群方法,如果一个服务域名背后的某个服务器发生了宕机,而此时又恰好轮询到了该服务器,那么就会发生长时间的等待,直到浏览器多次尝试后轮询到没有宕机的服务器才能完成一个服务,大大降低了服务器的效率和用户体验度,即相当于宕机的服务器白白占用了几次轮询尝试时间;

  为了解决该问题,案例如下:

    修改nginx.conf文件:

  upstream myserver{
        #ip_hash;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }
    server{
        listen       81;
        server_name  www.bproject.com;
        location / {
            root   html;
            proxy_pass  http://myserver;
            index  index.html index.htm;
            proxy_connect_timeout 1;
            proxy_send_timeout 1;
            proxy_read_timeout 1;
        }
    }

      通过一个服务名称的location里面配置代理响应超时时间,1表示1秒钟,如果1秒钟没有响应,就把请求按照轮询转发,加快响应处理的时间。

      proxy_connect_timeout:该指令设置与upstream server的连接超时时间,这个超时时间不能超过75秒;

      proxy_send_timeout:这个指令设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接,默认值为60s;

      proxy_read_timeout:该指令与代理服务器的读取超时时间。它决定了nginx会等待多长时间来获得请求的响应,这个时间不是获得整个response的时间,而是两次reading操作的时间,默认值为60s;

  测试:

    步骤一:配置两个Tomcat,两个端口分别为8081,8082

        

    步骤二:配置nginx.conf文件

        

    步骤三:分别启动Tomcat和nginx

        启动Tomcat:这里需要启动两次Tomcat,一次端口为8082,一次端口为8081

        进入Tomcat文件下的bin目录

          

         使用【./startup.sh】 命令启动  

          

        启动后可使用【ps -ef | grep tomcat 】命令查看当前Tomcat的进程

          

        启动nginx:

        进入nginx文件下的sbin目录

          

        使用【./nginx】命令启动nginx

          

        使用【ps -ef | grep nginx】命令查看当前nginx进程

           

        实现效果:在配置中配置了两个服务器,当其中一台服务器宕机之后,就是轮询到下一台服务器;

猜你喜欢

转载自www.cnblogs.com/wnwn/p/12290980.html