nginx代理+负载均衡多个tomcat服务器

前面我已经写了centos安装nginx服务、及centos安装部署多个tomcat应用服务器的文章。这两篇文章都是单独部署的,nginxtomcat之间并无联动关系,下面我将记录下nginx代理、负载均衡多个tomcat的配置和部署。

 

准备工作:

  1. nginx服务器能正常单独运行

  2. 多个tomcat能正常单独运行(一个tomcat表示同一应用的多个节点)

     

    模拟情景:

    我们工作中往往会遇到用户高并发的情况,这种情况下如果是部署单一的应用服务器在性能上可能有些吃不消,可能导致应用服务器的宕机,为了避免单一服务器的各种原因的宕机,我们寻找集群的方式来解决这个问题。例如我们可以将同一个应用部署多个服务器,然后通过统一的代理服务器来将用户请求分发给这些应用服务器;这样做的好处有三点,第一就是直接减轻了单个服务器的并发压力;第二就是提高了应用服务器对外提供服务的可靠性,因为多台服务器中任何一台宕机都不影响用户使用;第三点就是方便应用的升级,可以说是0断线的升级,我们只需要依次将多个服务器按照先后顺序进行升级就好了。

     

    Nginxtomcat负载均衡配置:

    主要是更改nginxconf目录下的nginx.conf文件,具体配置如下:

    user root root;   

    worker_processes 2;   

    pid /opt/nginx/logs/nginx.pid;   

    error_log  /opt/nginx/logs/error.log;

    worker_rlimit_nofile 102400;   

    events   

    {   

    use epoll;   

    worker_connections 102400;   

    }   

    http   

    {   

      include       mime.types;   

      default_type  application/octet-stream;   

      fastcgi_intercept_errors on;   

      access_log    /opt/nginx/logs/access.log;

      charset  utf-8;   

      server_names_hash_bucket_size 128;   

      client_header_buffer_size 4k;   

      large_client_header_buffers 4 32k;   

      client_max_body_size 300m;   

      sendfile on;   

      tcp_nopush     on;   

          

      keepalive_timeout 60;   

          

      tcp_nodelay on;   

      client_body_buffer_size  512k;   

        

      proxy_connect_timeout    5;   

      proxy_read_timeout       60;   

      proxy_send_timeout       5;   

      proxy_buffer_size        16k;   

      proxy_buffers            4 64k;   

      proxy_busy_buffers_size 128k;   

      proxy_temp_file_write_size 128k;   

          

      gzip on;   

      gzip_min_length  1k;   

      gzip_buffers     4 16k;   

      gzip_http_version 1.1;   

      gzip_comp_level 2;   

      gzip_types       text/plain application/x-javascript text/css application/xml;   

      gzip_vary on;   

      log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '  

                  '$status $body_bytes_sent "$http_referer" '  

                  '"$http_user_agent"  $request_time $remote_addr';   

                      

    upstream web_app {   

     server 192.168.32.128:8080 weight=1 max_fails=2 fail_timeout=30s;   

     server 192.168.32.128:8081 weight=1 max_fails=2 fail_timeout=30s;   

    }   

        

    server {   

        listen 80;   

        server_name  chenfeng.test.com;   

        index index.jsp index.html index.htm;   

        root  /jeff/zx/;   

        location /   

        {   

        proxy_next_upstream http_502 http_504 error timeout invalid_header;   

        proxy_set_header Host  $host;   

        proxy_set_header X-Real-IP $remote_addr;   

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   

        proxy_pass http://web_app;   

        expires      3d;   

        }   

      }   

    }

    可以看到这个配置upstream web_app 中我将已经安装配置好的tomcat服务器进行了指向。

    至此我已经将nginxtomcat进行了负载均衡配置,接下来就是重新启动nginx服务器

    可以看到当我们输入原来的localhost请求地址时,返回的界面已经改成了两个tomcat中的一个,而不是原来的nginx的欢迎界面了。

    集成前localhost返回界面如下图:



      

    集成后localhost返回的是tomcat1,如下图所示:




     
      

    此时我继续刷新一下浏览器,可以看到返回的是tomcat2了,如下图所示:



      

    至此验证了我的配置是成功的,nginx已经反向代理了tomcat1tomcat2应用服务,并且在我刷新时自动切换tomcat1tomcat2,这就代表了nginx已经正确的按照配置进行了负载均衡工作。

     

    此时我还想继续验证nginx服务器在其中一个tomcat应用服务器宕机的情况下会出现什么情况,这里宕机我就直接将tomcat1的服务器停掉

     

     

    可以看到我将tomcat1停掉后单独访问tomcat1的服务地址localhost:800时已经不能正常访问了,如下图所示:



      

    此时我访问nginx代理服务器地址localhost时,看看还能不能正常访问,可以看到此时nginx还是能正常访问的,只不过现在每次刷新地址都返回的是tomcat2的页面了,nginx自动将宕机的tomcat1剔除了负载均衡的队列了,如下图:



      

    这个时候如果我又把tomcat1启动,会出现什么情况呢



      

    这个时候可以看到单独访问tomcat1地址时,已经能够正常访问了,如下图:



      

    这时我在访问nginx地址,并多刷几次,可以考到tomcat1有被自动加到了nginx负载均衡中,请求返回都在tomcat1tomcat2之间进行切换了,至此我这里成功的验证了各种情况,可以满足我前面所说的三个主要应用模拟情景了。

     

    附言:nginx.conf文件中的配置项中文释义可能没有进行说明,我这里直接引用别人的文章进行说明好了,有兴趣的可以看下面两个地址的内容,基本说本很清楚明了了。

    http://blog.csdn.net/tjcyjd/article/details/50695922

    http://www.cnblogs.com/sayou/p/3319635.html

     

     

猜你喜欢

转载自626333422-qq-com201110121851.iteye.com/blog/2368217
今日推荐