`

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在windows下做负载均衡

    Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站的运行。另外,在访问量大的情况下,Tomcat的线程数会不断增加。由于Tomcat自身...

    性能调优 海量并发 系统架构

    基于nginx的tomcat负载均衡和集群 实现多服务器负载均衡 系统性能优化 数据库 Nginx+Squid负载均衡 配置好的集群 总共三十个文档">Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 ...

    详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点

    Nginx + Tomcat 反向代理 如何在一台服务器部署多个站点,节省服务器开支,就在这篇文章了。 首先我们需要安装好Nginx、jdk、Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述。 下来看一下我们的需求,我这里有...

    Windows nginx +多个 tomcat 配置

    下载nginx;下载tomcat ;配置nginx ;多个tomcat负载

    Linux下Nginx负载均衡多个tomcat配置的方法步骤

    Linux下安装nginx和安装多个tomcat的方法这里不过多介绍,不清楚的可参考: Linux安装nginx: https://www.jb51.net/article/159519.htm Linux安装多个tomcat: https://www.jb51.net/article/159521.htm 当我们...

    nginx 代理问题,负载均衡问题

    Nginx负载均衡【`重点`】Nginx为我们默认提供了三种负载均衡的策略: ​ 轮询:将客户端发起的请求,平均的分配给每一台服务器。 ​ 权重:会将客户端的请求,根据服务器的权重值不同,分配不同的数量。 ​ ip_...

    负载均衡haproxy_+tomcat实战

    服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为: 高性能集群:将单个重负载的请求分散到多个节点进行处理,最后再将处理结果进行汇总 高可用集群:提高冗余单元,避免单...

    Debian下搭建Nginx和Tomcat服务器实现负载均衡的方案

    负载均衡的基本概念 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、...

    Nginx负载均衡与地址映射配置的完整配置

    这里已经完整的配置了nginx的地址映射和负载均衡,只需要将里面的服务改成本地的多个Tomcat的就行了。关注我 可以到2017-4-29写的博客看详情 博客名:简单认识Nginx---负载均衡

    Nginx+Tomcat高性能负载均衡集群搭建教程

    Nginx是一个高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3...在这里我们采用集群部署方式,使用多个Tomcat,反向代理使用Nginx。 架构如下: 准备工作 apache-tomcat-7.0.61 nginx-1.12.2 Redis-x64-3.2.10

    Nginx服务器详解加配置教程

    目录 常见WEB服务器 1 ...4.1、在Linux上安装多个Tomcat 11 4.1.1解压tomcat 11 4.1.2修改tomcat2中server.xml 11 4.1.3 Nginx的负载均衡的配置: 12 4.1.1 配置Tomcat的session共享可以有三种解决方案: 13

    nginx+tomcat+redis集群部署环境的搭建(附环境包)

    集群部署即一个应用多实例部署,通过负载均衡将客户端高并发求情分散到集群部署的多个实例中去,实例处理完客户端请求,将结果返回个客户端; 集群部署的服务器对外提供统一访问接口,后端的部署对客户端来说是透明...

    Nginx反向代理、负载均衡、动静分离、高可用集群详解

    nginx常用做静态内容服务和反向代理服务器,直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java webapp跑在里面的东西,对应同级别的有jboss,je

    nginx 代理转发

    nginx window版本的 主要用户服务的代理转发 ,用于多个tomcat 服务器的集群 和负载均衡

    通过Nginx+Tomcat+Redis实现持久会话

    样才能真正实现后台多个Tomcat负载平衡,用户请求能够发往任何一个tomcat主机。 keeplived、zabbix与ansible暂不在本文章的范围当中,会在之后的文章逐一进行讲解 实验架构图 部署环境 CentOS7 Nginx1.10.2 ...

    Tomcat9+Nginx+Redis+集群各节点war包自动同步部署实施文件配合本人文章使用

    Tomcat9集群负载使用Nginx,session同步使用Redis,使用Tomcat自带FarmWarDeployer功能实现应用部署到一个服务器上,集群就会将部署分发到整个集群的各个节点中,本文描述全部由亲自试验所得,部分源码借鉴各位无私...

    Nginx为Tomcat服务器作反向代理的配置教程

    nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,...

    nginx+tomcat单个域名及多个域名配置教程

    这类分布式的系统,一般也都会用到nginx来做负载均衡。 从公司刚成立就进来,赶鸭子上架来做架构师,负责公司的所有研发事情,搭建公司的整个技术架构,起初的所有核心业务代码基本都由自己亲自把关来进行编码。系统...

    apache负载均衡的安装和实现方法

    如果一台服务器装多个tomcat,那么即使是负载均衡,性能也提高不了太多,不过可以提高稳定性,即容错性。当其中一个主tomcat当掉,其他的tomcat也可以补上,因为tomcat之间实现了Session共享。待tomcat服务器修复后再次...

    通过Nginx搭建Tomcat9集群并实现Session共享

    如果在多个服务器上分别启动tomcat 则不存在此问题。 2.实现Nginx集群 修改nginx.conf配置文件,实现集群 3.Redis实现Session 共享 在tomcat/lib 目录下添加以下三个jar 包 然后更改tomcat的context.xml文件 然后...

Global site tag (gtag.js) - Google Analytics