`
z_jiankun
  • 浏览: 164290 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

nginx 整合 tomcat 做负载均衡

    博客分类:
  • Java
 
阅读更多

 http://tengine.taobao.org/book/index.html

 

 

我的测试环境是:windows7 32bit / jdk1.6 / tomcat6.0 /nginx 1.08
1、解压tomcat ,复制成2份,修改server.xml 里的端口设置,使得两个tomcat不冲突。请确保两个tomcat可以访问到你的应用:http://localhost:8080 和 http://localhost:8081
2、修改nginx 的配置(在conf/nginx.conf):
a.在 #gzip on; 下面添加下面代码

upstream backend {
                   server localhost:8080;
                   server localhost:8081;
                   #ip_hash;  #这个好像是记录访问session的,同一session会发往同一个服务器处理,貌似这样,一开始我开启这个选项,我用浏览器狂刷新,一直访问的是第一个tomcat,后来我注释掉这行,于是访问被分散到了各tomcat中。
         }

b.
修改第一个 server{} 配置中的 listen  80; 改为新的端口号,如果有必要的话
并将:

location / {
            root   html;
            index  index.html index.htm;
}

修改为:
location / {
            root   html;
            index  index.html index.htm;
           proxy_pass                  http://backend
           proxy_redirect              off;
           proxy_set_header            Host $host;
           proxy_set_header            X-Real-IP $remote_addr;
           proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
           client_max_body_size        10m;
           client_body_buffer_size     128k;
           proxy_connect_timeout       90;
           proxy_send_timeout          90;
           proxy_read_timeout          90;
           proxy_buffer_size           4k;
           proxy_buffers               4 32k;
           proxy_busy_buffers_size     64k;
           proxy_temp_file_write_size  64k;
}

如此即以通过最简单方式配置完成,启动nginx 和tomcat ,即可通过  nginx 访问后端的 tomcat 集群了。

nginx 在windows下双击,窗口一闪而过,但其实可能已经开启成功,可通过查看端口来检查或者通过访问nignix来验证。
也可在 cmd 里运行  nginx.exe 来启动,这样如果启动不成功,会有提示。
nginx 的关闭,cmd 中:  nginx.exe -s stop

 

 

解决访问路径要加斜杠问题

 location ~ ^/WEB {
            #root   html;
            #index  index.html index.htm;
            proxy_pass                  http://backend;
            proxy_redirect              off;
            proxy_set_header            Host $host:89;
            proxy_set_header            X-Real-IP $remote_addr;
            proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size        10m;
            client_body_buffer_size     128k;
            proxy_connect_timeout       90;
            proxy_send_timeout          90;
            proxy_read_timeout          90;
            proxy_buffer_size           4k;
            proxy_buffers               4 32k;
            proxy_busy_buffers_size     64k;
            proxy_temp_file_write_size  64k;
        if (-d $request_filename)
            {
                rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
            }
        }

 

 

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:

upstream bakend {
server 192.168.159.10 weight=10;
server 192.168.159.11 weight=10;
}


3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:

upstream resinserver{
ip_hash;
server 192.168.159.10:8080;
server 192.168.159.11:8080;
}


4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream resinserver{
server server1;
server server2;
fair;
}


5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法


upstream resinserver{
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

tips:

 

upstream resinserver{#定义负载均衡设备的Ip及设备状态
ip_hash;
server 127.0.0.1:8000 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6801;
server 127.0.0.1:6802 backup;
}

在需要使用负载均衡的server中增加

proxy_pass http://resinserver/;


每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

 

 
分享到:
评论

相关推荐

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

    在构建高性能、高可用性的Web应用系统时,"nginx+tomcat7负载均衡+redis缓存session"是一种常见的架构模式。这种模式结合了Nginx的反向代理和负载均衡能力,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用于...

    Nginx+Tomcat负载均衡企业实战.docx

    Nginx+Tomcat负载均衡企业实战.docx 本文档主要介绍了 Nginx+Tomcat 负载均衡的企业实战,涵盖了从0开始构建 Nginx WEB 平台、Tomcat WEB 集群、代码发布、Nginx 负载均衡 Tomcat 集群、动静分离、Rewrite 实战等...

    nginx-tomcat整合实现JAVA程序负载均衡

    ### Nginx-Tomcat整合实现JAVA程序负载均衡 #### 一、背景介绍与目标设定 随着互联网技术的发展,单一服务器往往难以满足高并发、大数据量处理的需求。因此,采用多服务器集群部署策略来提高系统的稳定性和响应...

    linux下Nginx+tomcat整合的安装与配置

    在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将详细解析在Linux环境下如何安装和配置Nginx与Tomcat...

    nginx+tomcat负载整合完整实例

    这个实例涵盖了`nginx`与`tomcat`的整合、`nginx`的反向代理与负载均衡配置以及`tomcat`集群的设置。这样的架构有助于提高系统性能,当某个`tomcat`实例出现问题时,`nginx`能够自动将流量导向其他正常运行的实例,...

    nginx整合tomcat

    【Nginx 整合 Tomcat】是一种...Nginx整合Tomcat的整个过程涉及到服务器管理、网络配置、Java应用的部署以及性能优化等多个方面。理解这些知识点对于运维人员来说至关重要,能够帮助他们构建稳定且高效的Web服务环境。

    windows系统上nginx+memcached+tomcat的负载均衡

    通过以上步骤,我们可以构建一个在Windows上的Nginx+Memcached+Tomcat负载均衡系统,这个系统能够提供高可用性和高性能的服务,并通过缓存机制进一步提升响应速度。在实际应用中,可以根据需求调整服务器权重、缓存...

    tomcat整合nginx负载均衡+memcache共享session全部程序包

    这个程序包“tomcat7+nginx+memcached”旨在实现通过Nginx进行负载均衡,以及利用Memcache来共享Tomcat服务器之间的Session数据。以下是关于这个集成方案的详细解释: 1. **Nginx**: - **功能**:Nginx是一款高...

    Nginx与Tomcat

    - **负载均衡**:Nginx可以轻松实现负载均衡,将请求分发到多个Tomcat实例,提高系统的可用性和可靠性。 - **优化性能**:静态资源由Nginx直接处理,减少了Tomcat的负担,提升了响应速度。 - **安全增强**:Nginx...

    nginx+tomcat

    这种组合通常用于优化性能和负载均衡,因为Nginx可以处理静态内容并分发动态请求到Tomcat。 **Nginx** Nginx以其高效的非阻塞I/O模型而著名,尤其在处理高并发请求时表现优秀。作为前端服务器,Nginx能够迅速响应...

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    #对 "/Dossm3RabbitMQConsumer/" 启用负载均衡 location /Dossm3RabbitMQConsumer/ { proxy_pass http://localhost:8086; #保留用户真实信息 proxy_set_header X-Real-IP $remote_addr; proxy_set_header ...

    Linux下Nginx+Memcached+Tomcat负载均衡集群服务搭建所需jar包

    总结,构建Linux下Nginx+Memcached+Tomcat的负载均衡集群服务,需要深入了解每个组件的工作原理,正确配置和整合这些组件,以实现高效、稳定的Web服务。同时,不断优化和调整集群策略,以适应业务的增长和变化。

    nginx+tomcat7+memcached集成 负载均衡初体验

    标题 "nginx+tomcat7+memcached集成 负载均衡初体验" 涉及的是一个常见的Web服务器和应用服务器的集成方案,用于提升网站性能和处理能力。在这个组合中,nginx作为前端反向代理服务器,负责负载均衡;Tomcat7是Java...

    nginx+tomcat+memcached

    通过配置`nginx`,我们可以设置多个`tomcat`实例作为后端,当用户请求到达`nginx`时,它会根据配置策略决定将请求转发给哪个`tomcat`服务器,从而实现负载均衡。 其次,`tomcat`是Apache软件基金会的Java Servlet...

    centos nginx安装及和tomcat整合

    如果有多个Tomcat实例,可以通过Nginx实现负载均衡,配置 `upstream` 指令。 3. **安全考虑**: 考虑使用SSL/TLS进行加密传输,配置Nginx支持HTTPS。同时,确保Nginx和Tomcat的安全配置,限制不必要的端口访问。 ...

    linux下Nginx+tomcat整合的安装与配置.pdf

    整合Nginx和Tomcat的目的是为了结合Nginx作为高性能的反向代理服务器和负载均衡器的能力,以及Tomcat作为应用服务器对Java应用的支持能力,实现Web服务器的高可用、高性能及易于维护的目的。 1. Linux操作系统下的...

    ngnix + memcached + tomcat6负载均衡中session复制依赖jar全

    这里我们关注的焦点是`ngnix`(通常写作Nginx)、`memcached`以及`tomcat6`之间的整合,用于实现会话管理与负载均衡。下面将详细介绍这些技术及其在该配置中的作用。 首先,`Nginx`是一个强大的反向代理服务器和...

Global site tag (gtag.js) - Google Analytics