Apache + Tomcat + JK 实现负载均衡和集群(状态复制)

原文请见

本文介绍了集群和负载均衡的基本开源实现,实现了用Apache分发请求到多个Tomcat里面对应的应用。

模块介绍

– Apache作为Web服务器,用于处理静态Http请求;

– Tomcat作为应用服务器(Servlet容器),处理动态请求;

– JK 作为Apache与Tomcat之间的桥梁,实现了Apache与Tomcat一对多的对应,使后端Tomcat负载均衡。

开发环境

– Windows 7操作系统

– Java SE8

– Apache 2.2.14 (本地安装路径:D:\Apache2.2\)

– Tomcat 7.0.42 ( ),如果在同一台机器上模拟,下载zip版本. 实例中展示了2个节点

– mod_jk: 1.2.37: ( )

安装步骤:

1.安装jdk2.安装Apache2.2,使用默认设置,并且安装路径中不要空格.3.解压tomcat4.拷贝mod_jk.so到Apache安装路径的modules文件夹下

配置步骤

的源码包参看

(

include "D:\Apache2.2\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

文件

#这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器.#host和port根据自己实际配置.实例配置的是本机两个tomcat,分别使用不同的端口.避免冲突#如果Tomcat不再同一机器上,没必要改端口的。#server 列表worker.list=controller,tomcat1,tomcat2#========tomcat1========worker.tomcat1.port=9988#ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat1.host=localhost#tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat1.type=ajp13worker.tomcat1.lbfactor=1#server的加权比重,值越高,,分得的请求越多#========tomcat2========worker.tomcat2.port=9999#ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat2.host=localhost#tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat2.type=ajp13worker.tomcat2.lbfactor=1#server的加权比重,值越高,分得的请求越多 #========controller,负载均衡控制器========worker.controller.type=lb#指定此负载平衡器负责的Tomcat应用节点。worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat#此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台#Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。worker.controller.sticky_session=false#设为false,则表明需求会话复制。.因为实例中我们定义了

以tomcat-node1为实例

port. <!– 定义一个AJP 1.3 连接端口为9988 ,默认值为8009,这里我们改成我们自己定义的9988端口 –><Connector port="9988" protocol="AJP/1.3" redirectPort="8443" /> <!–增加jvmRoute,值为在Apache中配置的list集群结点中的值,这里定义为tomcat1结点–><Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">3.去掉默认注释掉的集群配置 <!–取消集群结点相关的注释,该句默认值注释掉的,我们需要配置集群所以去掉注释,让其起作用–><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

修改前

<!– Define an AJP 1.3 Connector on port 8009 –><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><!– You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">–><Engine name="Catalina" defaultHost="localhost"><!–For clustering–><!–<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>–>修改后的tomcat-node1

<!– 定义一个AJP 1.3 连接端口为9988 ,默认值为8009,这里我们改成我们自己定义的9988端口 –><Connector port="9988" protocol="AJP/1.3" redirectPort="8443" /><!–增加jvmRoute,值为在Apache中配置的list集群结点中的值,这里定义为tomcat1结点–><Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"><!–取消集群结点相关的注释,该句默认值注释掉的,我们需要配置集群所以去掉注释,让其起作用–><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>修改后的tomcat-node2

<!– Define an AJP 1.3 Connector on port 8009 –><Connector port="9999" protocol="AJP/1.3" redirectPort="8443" /><!– You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">–><Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"><!–For clustering–><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

Tomcat–node1

没有什么可凭仗,只有他的好身体,没有地方可去,

Apache + Tomcat + JK 实现负载均衡和集群(状态复制)

相关文章:

你感兴趣的文章:

标签云: