Tomcat+Nginx集群与负载均衡

转载自 http://blog.csdn.net/l1028386804/article/details/48272857



今天就和大家一起来实现Tomcat和nginx的集群与负载均衡

一、Tomcat 集群配置端口规划

注:该端口是在同一台机器上启动2个tomcat,需要修改一下端口不重复,如果一台机器只部署1个tomcat其端口可以一样。

序号

SHUTDOWN

AJP

http

集群Receiver

1

8005

8009

8080

5001

2

8015

8019

8081

5002
1、Tomcat 集群配置

在server.xml中修改:

将:

[html]  view plain  copy
  1. <Engine name="Catalina" defaultHost="localhost">  
修改为:
[html]  view plain  copy
  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">    

其中 jvmRoute="jvm1" 在不同的tomcat中名称不一样。

在<Engine></Engine>节点中加入如下内容实现Session复制共享:

[html]  view plain  copy
  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  
  2.          channelSendOptions="8">  
  3.   
  4.   <Manager className="org.apache.catalina.ha.session.DeltaManager"  
  5.            expireSessionsOnShutdown="false"  
  6.            notifyListenersOnReplication="true"/>  
  7.   
  8.   <Channel className="org.apache.catalina.tribes.group.GroupChannel">  
  9.     <Membership className="org.apache.catalina.tribes.membership.McastService"  
  10.                 address="228.0.0.4"  
  11.                 port="45564"  
  12.                 frequency="500"  
  13.                 dropTime="3000"/>  
  14.     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
  15.               address="auto" <!--可写你自己的ip地址-->  
  16.               port="5001"  
  17.               autoBind="100"  
  18.               selectorTimeout="5000"  
  19.               maxThreads="6"/>  
  20.   
  21.     <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  22.       <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>  
  23.     </Sender>  
  24.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  
  25.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>  
  26.   </Channel>  
  27.   
  28.   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  
  29.          filter=""/>  
  30.   <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>  
  31.   
  32.   <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  
  33.             tempDir="/tmp/war-temp/"  
  34.             deployDir="/tmp/war-deploy/"  
  35.             watchDir="/tmp/war-listen/"  
  36.             watchEnabled="false"/>  
  37.   
  38.   <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>  
  39.   <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  
  40. </Cluster>      

注意在同一台机器上:Receiver 节点端口:port="5001"要不一样。

2、修改tomcat的web.xml

需要修改tomcat的web.xml配置参数才能真正实现session同步复制的设置

[html]  view plain  copy
  1. <welcome-file-list>  
  2. <welcome-file>index.html</welcome-file>  
  3. <welcome-file>index.htm</welcome-file>  
  4. <welcome-file>index.jsp</welcome-file>  
  5. </welcome-file-list>  
  6. <distributable /> (在倒数第二行增加这个代码才能实现session同步复制功能)  
  7. </web-app>  

二、优化:

1、内存优化配置
1)Windows:

[html]  view plain  copy
  1. set JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M   
  2. -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails    
  3. -XX:+PrintGCTimeStamps -Djava.awt.headless=true"    

2)Linux

[html]  view plain  copy
  1. JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M   
  2. -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC  -XX:+PrintGCDetails    
  3. -XX:+PrintGCTimeStamps -Djava.awt.headless=true"   

2、其他优化配置:
1)加入如下配置1

[html]  view plain  copy
  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"  
  2.         maxThreads="500" minSpareThreads="50" />  
修改
[html]  view plain  copy
  1. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  
  2.                redirectPort="8443" />  

[html]  view plain  copy
  1. <Connector port="8080"  executor="tomcatThreadPool" protocol="HTTP/1.1"  
  2.                connectionTimeout="60000"  
  3.                enableLookups="false" redirectPort="8443" />  
修改:
[html]  view plain  copy
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  

[html]  view plain  copy
  1. <Connector port="8009" executor="tomcatThreadPool"  
  2.                connectionTimeout="60000"  
  3.                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />  

2)或者

修改

[html]  view plain  copy
  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.                connectionTimeout="20000"  
  3.                redirectPort="8443" />  

[html]  view plain  copy
  1. <Connector port="8080"  protocol="HTTP/1.1"  
  2.                maxThreads="500"  
  3.                acceptCount="50" connectionTimeout="60000"  
  4.                enableLookups="false" redirectPort="8443" />  
修改
[html]  view plain  copy
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  

[html]  view plain  copy
  1. <Connector port="8009"  
  2.          maxThreads="500"  connectionTimeout="60000"  
  3.          enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />  

注:两者的主要区别是:executor被起用且关联时maxThreads="500" 被忽略。

3)几个属性解释:
  • maxThreads

Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。 可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。

  • acceptCount

指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。 

  • minSpareThreads

Tomcat初始化时创建的线程数。默认值4。 

  • connnectionTimeout

网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。(本系统由于与后台系统接口超时时间较长,使用设置为60000)

  • enableLookups

是否反查域名,默认值为true。为了提高处理能力,应设置为false 

  • Executor节点

表示Tomcat组件之间共享的线程池。

  • maxIdleTime

空闲线程被关闭之前的毫秒数。默认值是60000。

三、Nginx + Tomcat负载均衡配置

在配置文件/usr/local/nginx/conf/nginx.conf文件中新增以下代码

[plain]  view plain  copy
  1. upstream  tomcat {  
  2.       server 192.168.100.50:8080  weight=1;  
  3.       server 192.168.100.50:8081  weight=1;  
  4. }  
其中tomcat名称随意,注意IP地址和端口。
修改Server节点中location:

[html]  view plain  copy
  1. location / {  
  2.         root   html;  
  3.         index  index.html index.htm;  
  4.     }  

[plain]  view plain  copy
  1. location  / {  
  2.    #root   html;  
  3.    #index  index.html index.htm;  
  4.            proxy_pass  http://tomcat6;  
  5. }  

注意http://tomcat中tomcat名称与上面的配置一样。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值