高性价比开源软件集群(3)--tomcat apache集群
来源:互联网 发布:c语言一维数组删除重复 编辑:程序博客网 时间:2024/04/27 15:42
前面介绍了数据库的集群,现在我们接着来研究Web层面的集群.
由于笔者使用JAVA开发Web应用程序,用到了tomcat,这里介绍tomcat集群,tomcat本身不能单独集群,要和apache结合才能达到集群的目的.apache接收请求,然后使用负载均衡器均匀的把请求发送到每个不同的tomcat中.
软件:apache-2.24 tomcat-5.5.23 mod_jk-2.24 linux-ubuntu-server-6.10 vmware-5.5
1.配置apache,在配置文件后加上
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk2.log"
JkLogLevel debug
JkMount /*.jsp controller
在conf下创建workers.properties,内容如下:
worker.list = controller,tomcat1,tomcat2
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
为了防止两进程占用一个端口,第二个tomcat2的port改为9009(后面在配置文件中也要改8009为9009,这个port是tomcat与apache的通讯port)
2.配置tomcat
取消tomcat1和tomcat2的配置文件server.xml中
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
两端的注释,上面的配置内部在tomcat2中要把tcpListenPort="4001"改为tcpListenPort="4002",防止端口占用
在<Engine name="Catalina" defaultHost="localhost">中添加 jvmRoute="tomcat1"使之成为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
tomcat2中相应的改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
这里面的字符串tomcat1和tomcat2要对应worker.properties中的tomcat1和tomcat2.
tomcat除了与apache的通讯port外,内部还使用了一些port,所以相应的要把tomcat2中与tomcat1中相同的port全改掉,分别是:
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
把上面的端口号分别改为9005,9080,9009(其它数字也行).
上面的步骤就实现了web jsp请求负载均衡以及session在不同tomcat之间的复制.
若只要实现apache与tomcat结合,用apache处理请求,tomcat作jsp,servlet容器,则只需步骤一,tomcat的配置不用作任何更改.
下面是我的配置文件:
此文参考了下列文章:
http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1.html
- 高性价比开源软件集群(3)--tomcat apache集群
- 高性价比开源软件集群(2)--mysql集群
- 高性价比开源软件集群(1)--引子
- 架构高性价比的分布式计算机集群
- Apache+tomcat实现高可用WEB集群
- apache+tomcat负载集群
- apache&tomcat集群
- Apache+JK+Tomcat 集群
- Apache tomcat 集群
- apache与tomcat集群
- Apache+tomcat集群
- apache tomcat 集群
- apache与tomcat集群
- tomcat+apache+linux集群
- Apache+Tomcat 集群
- apache tomcat 集群
- apache+tomcat集群配置
- Apache+tomcat集群
- I forgive you
- 要事第一1
- GridView中选择行
- 为什么我下载的资料都打不开啊
- 几个关于正确及错误PL/SQL对照使用的示例
- 高性价比开源软件集群(3)--tomcat apache集群
- 关于JavaScript弹出式窗体传替参数问题
- Asp.net FMS 开发视频网站
- 【转】南京的夜景
- read open-iscsi code
- Linux那些事儿之我是Sysfs(4)举例一lddbus
- 好酷网络企业网站整站系统(完全免费功能无限制版)
- [原创]18行代码实现无限级填充TreeView的例子与函数
- 在lotus domino 中使用flash 与domino表单内容交互