配置Tomcat的集群系统
来源:互联网 发布:擎洲软件 编辑:程序博客网 时间:2024/05/22 15:32
一、配置集群系统的负载平衡器
背景:Windows中,把Apache服务器和两个Tomcat服务器集成,Tomcat1的AJP端口为8009,Tomcat2的AJP端口为8109。(如果两个Tomcat服务器运行在不同的机器上,它们可以使用相同的AJP端口)
以下是Apache和两个Tomcat服务器集成,以及配置负载平衡器的步骤:
1、安装Apache HTTP
2、JK插件mod_jk.so放进<APACHE_HOME>/modules目录
3、<APACHE_HOME>/conf目录下创建workers.properties
#指定Tomcat服务器名单worker.list = worker1, worker2, loadbalancer#Tomcat服务器使用的AJP端口worker.worker1.port = 8009#Tomcat服务器的ipworker.worker1.host = localhost#Tomcat服务器与Apache HTTP服务器之间的通信协议worker.worker1.type = ajp13#负载平衡因数(Load Balance Factor)。只有使用了负载平衡器(LoadBalancer)的情况下,才有意义worker.worker1.lbfactor = 100worker.worker2.port = 8109worker.worker2.host = localhostworker.worker2.type = ajp13worker.worker2.lbfactor = 100#负载平衡器worker.loadbalancer.type = lb#可被负载平衡器分配工作的Tomat服务器worker.loadbalancer.balanced_workers = worker1, worker2#是否一个会话始终访问某一个Tomcat。true是,且不会复制会话;false不是,可复制会话worker.loadbalancer.sticky_session = false#把请求转发给集群系统中其他的Tomcat服务器。true不转发,false转发worker.loadbalancer.sticky_session_force = false
4、修改<APACHE_HOME>/conf/httpd.conf,使用负载平衡器进行转发,在尾部加入:
#使用mod_jk.so重定向动态调用Tomcat服务器#加载指定的JK插件LoadModule jk_module modules/mod_jk.so#指定JK的工作文件JkWorkersFile conf/workers.properties#指定JK的日志文件,可以通过这个文件跟踪JK插件的运行过程JkLogFile logs/mod_jk.log#指定JK插件的日志级别JkLogLevel debug#指定JK插件处理的URL映射信息JkMount /postgresql-1128/* loadbalancer
5、分别修改两个Tomcat服务器的conf/server.xml文件,使AJP连接器的端口分别为:8009和8019,确保与worker.properties文件中的配置对应;另外,<Engine>元素的jvmRoute属性与worker的名字一致,分别为:worker1和worker2。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/><Engine defaultHost="localhost" name="Catalina" jvmRoute="worker1">...</Engine>
注:为了能同时启动多个Tomcat服务器,至少修改3个"port"使Tomcat之间端口不重复:
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1" ... />
<Connector port="8009" protocol="AJP/1.3" ... />
6、分别启动两个Tomcat服务器和Apache HTTP服务器。访问http://localhost:8088/postgresql-1128/hello/id查看当前session id
二、配置集群管理器
前提:通过访问上面的地址,可以看见session id每次都不一样,因为每次请都由不同的Tomcat服务器响应,而这两个Tomcat服务器之间没有进行会话同步。为了解决上面的问题,需要配置集群管理器,使得会话同步,步骤如下:
1、分别修改Tomcat1和Tomcat2的conf/server.xml文件,在<Engine>元素内加入<Cluster>子元素,使Tomcat能够启用集群管理器。
对于大多数Web应用而言,使用默认配置已经足够。
默认配置:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
完整配置:
<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"bind="127.0.0.1"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><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>
2、分别修改Tomcat1和Tomcat2中Web应用的web.xml文件,加入<distributable />元素:
<distributable />
3、分别启动两个Tomcat服务器和Apache HTTP服务器。
详细内容参考《Tomcat与Java Web开发技术详解(第2版)》的<Tomcat与其他HTTP服务器继承>
注意事项:
(1)存放在会话范围中的所有属性都实现了java.io.Serializable接口。(2)集群系统中的Tomcat服务器之间通过组播的形式来通信。如果机器有多个网卡或配置了虚拟网卡,可能会组播失败,导致无法正常复制会话。需要设置bind属性:
<Membership className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1" ... />
(3)如果集群系统规模较小, 可以采用DeltaManager会话管理器;如果规模很大,可以使用BackupManager。
(4)<Membership>元素的address属性设置组播地址,本次实验设置为228.0.0.4。仅在计算机连在Internet上才能组播,否则无法访问该组播地址。
(5)workers.properties文件中sticky_session和sticky_session_force属性:
sticky_session:默认值为true,为true表示一个会话始终访问集群系统中的某一个Tomcat服务器,集群系统不会进行会话复制。若希望一个浏览器能与多个Tomcat服务器展开同一个会话,则需要设置为false。
sticky_session_force:sticky_session为false时,sticky_session_force对集群系统没什么影响。通常设置值与sticky_session一致。
0 0
- 配置Tomcat的集群系统
- tomcat的集群配置
- Apache和tomcat的集群配置
- 关于Apache与 Tomcat的集群配置
- 更详细点的tomcat集群配置
- apache+tomcat的集群--Session复制配置
- Apache HTTP Server + Tomcat的集群配置
- TOMCAT集群session复制的配置
- 简单易懂的Tomcat+Apache集群配置
- tomcat集群外加负载均衡的配置
- Tomcat的集群配置(Apache + mod_jk + tomcat来实现tomcat集群的负载均衡)
- 配置 Tomcat 集群
- 配置Tomcat集群
- 配置Tomcat集群
- 配置 Tomcat 集群
- 配置Tomcat集群
- 配置 Tomcat 集群
- tomcat集群配置(转贴)
- Android自定义view以及组合view
- Bitmap的高效加载
- 标准C语言库
- 一个正整数的位数
- Know Your Stack - Scala to Java to Bytecode to Assembly
- 配置Tomcat的集群系统
- Qt QApplication 类简介--Qt 类简介专题(四)
- java流操作对文件的分割和合并
- 关于《火星救援》
- 在C语言中执行python的环境调试和问题解决
- 第十三周项目五 拓扑排序算法验证
- Big Number
- scala:函数即对象
- C语言基础IO操作