`

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

     

     

 

  • 大小: 26.5 KB
  • 大小: 42.8 KB
  • 大小: 48.9 KB
  • 大小: 44.9 KB
  • 大小: 27.7 KB
  • 大小: 24.4 KB
  • 大小: 26.8 KB
  • 大小: 23.3 KB
分享到:
评论

相关推荐

    Nginx+Tomcat 负载均衡 3分钟搞定

    要实现负载均衡,需要在 Nginx 服务器上配置 upstream 模块,以便将请求分配到多台 Tomcat 服务器上。具体配置如下: 1. upstream netitcast.com { server 127.0.0.1:18080 weight=1; server 127.0.0.1:28080 ...

    nginx+redis负载均衡、session共享

    这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP请求,并确保用户会话(session)在多台服务器之间的一致性。 首先,我们来详细了解一下Nginx。...

    Nginx+tomcat配置集群负载均衡实例

    配置Nginx+Tomcat集群负载均衡的第一步是安装Nginx和多个Tomcat实例。在多台服务器上部署Tomcat,形成一个集群,确保服务的高可用性。每台服务器上的Tomcat实例都需要配置相同的应用,以处理相同类型的请求。 接...

    nginx+tomcat负载均衡实现

    `nginx`作为一款高性能的反向代理服务器和负载均衡器,常用于处理静态资源和分配请求,而`tomcat`则是Java应用服务器,专门处理动态内容。本文将深入探讨如何利用`nginx`和`tomcat`实现负载均衡,以提升系统性能和...

    nginx+tomcat7负载均衡+redis缓存session

    在实际部署中,我们需要配置Nginx的反向代理规则,指定多个Tomcat7实例作为后端服务器。同时,要设置session sticky,确保同一用户的请求被定向到同一个Tomcat实例,以维护session一致性。接着,配置Redis与Tomcat7...

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    2. 安装Tomcat:部署多个Tomcat实例,每个实例运行在不同的端口上,以处理来自Nginx的请求。 3. 安装keepalived:解压`keepalived-1.2.22.tar.gz`,编译安装,并配置keepalived的配置文件,指定虚拟IP、主备Nginx...

    nginx负载均衡 nginx+tomcat tomcat实现负责均衡

    3. **负载均衡与容错**:Nginx支持简单的负载均衡机制,能够有效地分散流量至多个后端服务器,并具备一定的容错能力。 4. **丰富的HTTP服务器功能**:Nginx提供了一系列标准的HTTP服务器功能,如日志记录、数据压缩...

    Nginx+KeepAlived+Tomcat负载架构

    - **整体架构**:采用Nginx作为反向代理,后端部署多个Tomcat实例,利用KeepAlived实现Nginx的主备切换,形成一套完整的高可用架构。 - **关键组件**: - **Nginx**:作为前端负载均衡器。 - **KeepAlived**:用于...

    负载均衡nginx+tomcat+terracatta+nfs+mysql

    Terracotta是一个开源的Java集群框架,它允许在多个Tomcat服务器之间共享session数据,确保用户在集群中的任意节点切换时,其会话状态仍能保持连续。Terracotta通过监听和同步session对象,解决了跨服务器的会话复制...

    Nginx+tomcat 实现负载均衡session共享demo

    `Nginx`作为一款高性能的反向代理服务器,常被用于负载均衡,而`Tomcat`则是一款广泛使用的Java应用服务器,尤其适合处理Servlet和JSP应用。本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`...

    Nginx+Tomcat+Redis实现负载均衡过程中session所需架包

    首先,Nginx是一个强大的HTTP和反向代理服务器,它能够通过分发请求到多个后端服务器来实现负载均衡。Nginx支持多种负载均衡策略,如轮询、最少连接数、IP哈希等。例如,可以使用以下配置实现轮询策略: ```nginx ...

    linux下Tomcat+nginx+redis负载均衡配置

    在本配置中,nginx 作为反向代理服务器,将用户的请求分配到多个 Tomcat 服务器上,以便实现负载均衡。 二、Redis Session 共享 Redis 是一个高性能的 NoSQL 数据库,经常用于实现 Session 共享。在本配置中,...

    Windows+Nginx+Tomcat搭建负载均衡和集群的tomcat压缩包

    本教程将探讨如何在Windows环境中利用Nginx作为反向代理服务器,与多个Tomcat实例配合,搭建一个负载均衡和集群的系统。这个压缩包包含多个版本的Tomcat,即qdky-tomcat-6.0.44.6、qdky-tomcat-6.0.44.5、qdks-...

    nginx+tomcat负载均衡集群思路步骤过程.docx

    Nginx与Tomcat的组合是一个常见的解决方案,因为Nginx作为反向代理和负载均衡器,能有效分发流量到多个后端Tomcat服务器,提高系统性能和稳定性。以下是对【标题】“nginx+tomcat负载均衡集群思路步骤过程.docx”和...

    4 lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx

    LVS是Linux内核中的一个负载均衡模块,通过IP负载均衡技术和TCP负载均衡技术,将来自网络的请求分发到多个后端服务器。在这个拓扑中,有两台LVS服务器,一台作为主(master),一台作为备(slave)。当主LVS出现...

    nginx+tomcat在windows下做负载均衡

    现在,Nginx将根据配置的负载均衡策略将用户请求分发到两个Tomcat服务器,从而提高服务的稳定性和性能。 这个配置仅是最基础的轮询负载均衡,Nginx还支持更复杂的负载均衡策略,如权重分配、最少连接数、IP哈希等,...

    Nginx+Tomcat+Redis搭建均衡负载集群

    接着,需要在多台服务器上部署多个Tomcat实例,确保它们可以正确处理来自Nginx的请求。每个Tomcat实例应配置不同的监听端口,以便Nginx可以区分并分发请求。 对于Redis,需要在所有相关服务器上安装并配置。为了...

    win7下nginx+tomcat负载均衡

    本教程将详细介绍如何在Win7系统上配置Nginx作为反向代理,实现对多个Tomcat实例的负载均衡。 1. **Nginx介绍** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性和高并发处理能力而著名。在负载均衡...

Global site tag (gtag.js) - Google Analytics