版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Android_Mrchen/article/details/83342587
下载apache和tomcat
Apache 2.2.15+mod_jk-1.2.30-httpd-2.2.3.so 下载地址
tomcat下载地址
安装apache和tomcat
1. 双击 httpd-2.2.15-win32-x86-no_ssl.msi文件进行安装到D:\Apache Software Foundation\就好了,后面填写自己域名可以随便填。
2. 2个tomcat也解压到同一个目录
将其中的一个占用的端口号前面全部加1,另外一个占用的端口前面全部加2
3. 配置apache
- 取出下载的mod_jk-1.2.30-httpd-2.2.3.so。将其放置到Apache2.2\modules目录下
- 打开Apache2.2\conf\ httpd.conf文件。在其末尾添加上一行:
include "D:\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"
即调用conf目录下的mod_jk.conf这个配置文件。当然,apache conf目录下原来是没有这个文件的。我们需要自己新建这个文件。
- 在conf目录下新建Mod_jk.conf内容如下:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.30-httpd-2.2.3.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
- 接着,我们在conf目录下新建workers.properties内容如下:
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13 #定向包协议
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
worker.tomcat1.redirect = tomcat2
#========tomcat2========
worker.tomcat2.port=18009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13 #定向包协议
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
worker.tomcat2.redirect = tomcat1
worker.tomcat2.activation = disabled # 这句配置的意思是,负载均衡启动的时候,其实负载都到tomcat1上面去
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1
4. Tomcat集群配置
- 修改集群设置在,Engine标签或Host标签元素下添加以下内容均可
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="224.0.0.1"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"
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>
- 修改Engine标签的属性。
2个tomcat, jvmRoute分别配置成tomcat1和tomcat2,即和apache/conf里worker.properites配置文件中配置的worker名称对应。
- 修改本项目的web.xml,添加
<Context distributable="true" /><Context distributable="true" />
需要而外注意的是,2个tomcat里添加到上面这段配置,其下的Port元素必需配置成不同的。如其中一个是4001,一个是4002.(tomcat默认可以检测到4000~4100之间的端口)。
4. 启动tomcat发现运行 浏览器访问locahost 发现运行正常
5.在我其中一台机器上可以启动tomcat,但是跑到另外一台机器上配置了集群之后tomcat就无法启动报错
org.apache.catalina.tribes.ChannelException: java.net.SocketException: error setting options; No faulty members identified.
看见这个错只需要把元素下的address属性默认值为224.0.0.1 . 这个配置在我的系统上始终会出现2个tomcat无法交换数据包的问题。需改成228.0.0.4才能正常使用。