Tomcat负载均衡及session共享


使用mod_proxy负载均衡:

[root@localhost conf]# vim httpd.conf
//引入配置文件
include /usr/local/apache/conf/http-proxy.conf 
[root@localhost conf]# vim http-proxy.conf 
//添加以下内容
ProxyRequests Off
<proxy balancer://lbcluster1>
BalancerMember ajp://192.168.1.115:8009 loadfactor=10 route=TomcatA
BalancerMember ajp://192.168.1.116:8009 loadfactor=10 route=TomcatB
ProxySet lbmethod=bytraffic
</proxy>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.w4ya.com
ProxyVia On
ProxyPass / balancer://lbcluster1/ stickysession=jsessionid
ProxyPassReverse / balancer://lbcluster1/
</VirtualHost>
<proxy *>
Require all granted
<proxy>
<Location />
Require all granted
</Location>
<VirtualHost *:80>
 ServerName www.w4ya.com
 <Location /manager>
  SetHandler balancer-manager
  Require all granted
  </Location>
</VirtualHost>


  

  

使用mod_jk实现负载均衡:

//引入配置文件
[root@localhost conf]# vim httpd.conf
include /usr/local/apache/conf/jk.conf
//新建并编辑 vim jk.conf 为如下内容:
[root@localhost conf]# vim jk.conf 
LoadModule  jk_module  modules/mod_jk.so
JkWorkersFile  /usr/local/apache/conf/workers.properties
JkLogFile  logs/mod_jk.log
JkLogLevel  debug
JkShmFile logs/jk.shm
JkMount  /*  dragon
JkMount  /status/  stat
新建并编辑workers.properties,添加如下内容:
[root@localhost conf]# vim workers.properties 
worker.list = dragon,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.host = 192.168.1.115
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 5
worker.TomcatB.type = ajp13
worker.TomcatB.host = 192.168.1.116
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 5
worker.dragon.type = lb
worker.dragon.sticky_session = 1
worker.dragon.balance_workers = TomcatA, TomcatB
worker.stat1.type = status
[root@localhost conf]# /usr/local/apache/bin/apachectl -t
Syntax OK
[root@localhost conf]# /usr/local/apache/bin/apachectl start



修改tomcat的server.xml,添加集群配置:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="222.222.0.1"  //公共iP
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="192.168.1.1115"  //tomcat本地主机,单网卡时也可以auto
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>


在tomcat的网站目录新建目录WEB-INFO,并且编辑web.xml,在复制进去。

[root@localhost conf]#mkdir /var/www/html/WEB-INFO 
[root@localhost conf]# cp /usr/local/tomcat/conf/web.xml /var/www/html/WEB-INF/
[root@localhost conf]# vim  /var/www/html/WEB-INF/web.xml
//在<web-app>之间添加
<distributable/>


查看到tomcatA和tomcatB交换心跳信息:

信息: Server startup in 3227 ms
2014-12-9 19:33:24 org.apache.catalina.tribes.io.BufferPool getBufferPool
信息: Created a buffer pool with max size:104857600 bytes of type:org.apache.catalina.tribes.io.BufferPool15Impl
2014-12-9 19:33:25 org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
信息: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 1, 115}:4000,{192, 168, 1, 115},4000, alive=1214, securePort=-1, UDP Port=-1, id={49 -69 -77 15 75 6 68 70 -99 69 79 4 -87 -19 -99 -24 }, payload={}, command={}, domain={}, ]
2014-12-9 19:33:26 org.apache.catalina.ha.session.ClusterSessionListener messageReceived
信息: Starting clustering manager at www.w4ya.com#
2014-12-9 19:32:04 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions
信息: Manager [www.w4ya.com#], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 1, 116}:4000,{192, 168, 1, 116},4000, alive=16797, securePort=-1, UDP Port=-1, id={8 -18 6 26 122 -98 66 -25 -68 -39 107 -7 -125 108 7 119 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds.
2014-12-9 19:32:04 org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor report



在apache查看负载均衡信息:

wKioL1SIEDngbrhMAAU-E83Rod4948.jpg


你可能感兴趣的:(tomcat)