日期:2014-05-16  浏览次数:20971 次

利用apache+tomcat+jk+terracotta实现负载均衡和session共享

? ? ? ?

? ? ? ? 今天尝试了一下在本机上用apache+tomcat+JK+Terracotta 实现负载均衡、session共享(一台机器两个tomcat),注意jk一定要和apache版本相对应。

?

?

?

一、负载均衡设置

?

安装完成后首先将mod_jk.so复制到apache\modules\中,然后在apache\conf\目录下面找到httpd.conf文件。修改文件的最后一行在最后面加上一句:

?

include "D:\apache\conf\mod_jk.conf"

?

? ? ? ? 然后在apache\conf目录下面新建mod_jk.conf文件。文件内容如下:?

?

#加载mod_jk Module?

LoadModule jk_module modules/mod_jk.so?

#指定 workers.properties文件路径?

JkWorkersFile conf/workers.properties?

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器?

JkMount /* controller ?

?

? ? ? 在http.conf同目录下新建 workers.properties文件,内容如下:?

?

worker.list = controller,tomcat,tomcat2 ?#server 列表?

#======== tomcat========?

worker.tomcat.port=8009 ? ? ? #ajp13 端口号,在tomcat下server.xml配置,默认8009?

worker.tomcat.host=localhost ?#tomcat的主机地址,如不为本机,请填写ip地址?

worker.tomcat.type=ajp13?

worker.tomcat.lbfactor = 1 ? ?#server的加权比重,值越高,分得的请求越多?

#======== tomcat2========?

worker.tomcat2.port=9009 ? ? ? #ajp13 端口号,在tomcat下server.xml配置,默认8009?

worker.tomcat2.host=localhost ?#tomcat的主机地址,如不为本机,请填写ip地址?

worker.tomcat2.type=ajp13?

worker.tomcat2.lbfactor = 1 ? ?#server的加权比重,值越高,分得的请求越多?

#========controller,负载均衡控制器========?

worker.controller.type=lb?

worker.controller.balanced_workers=tomcat,tomcat2 ?#指定分担请求的tomcat?

worker.controller.sticky_session=1?

?

? ? ? ?因为我是一台电脑上配置,所以最后还要修改第二个tomcat服务器的配置端口。如果在两台电脑上就不用修改端口了。

?

?

<Server port="9005" shutdown="SHUTDOWN">将关闭端口改为9005。?

<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />将连接端口改为9080。?

? <!-- Define an AJP 1.3 Connector on port 8009 -->?

? ?<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />将ajp1.3端口改为9009?

?

?

? ? ? ?至此负载均衡的配置完成。直接将手上的项目拷贝到两个tomcat目录下。即可进行负载均衡测试。打开多个ie窗口,观察两个tomcat后面的输出。

?

二、session共享

?

? ? ?1、 tomcat自带session复制机制

?

? ? ? 在tomcat1里面的server.xml 增加?

?

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">?

?

? ? ? tomcat2里面增加:?

?

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">?

?

? ? ? ? 对于Cluster元素的配置。将以下内容 粘贴到两个tomcat的sever.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="228.0.0.4" ?

? ? ? ? ? ? ? ? ? ? ? ?port="45564" ?

? ? ? ? ? ? ? ? ? ? ? ?frequency="500" ?

? ? ? ? ? ? ? ? ? ? ? ?dropTime="3000"/> ??

? ? ? ? ? ?<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" ?

? ? ? ? ? ? ? ? ? ? ?address="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> ??

? ? ? ? ? ?<Interce