一、web开发中,为什么需要tomcat集群,我个人认为有两点:
1、防止其中的一个单一的应用服务器出现意外(崩溃,断电),导致请求无法处理。
2、分发处理请求减少应用服务器的压力。
下面切入正题,如何配置:
二、软件准备:
Apache:http://apache.fayea.com/apache-mirror//httpd/binaries/win32/httpd-2.0.65-win32-x86-no_ssl.msi
Tomcat:相信做web开发基本上电脑上都有。
三、安装Apache,一步一步点下去就OK
四、安装Tomcat(现在我们用的一般都是解压版的,好用)
五、将多个Tomcat解压到Apache的安装目录下:如:C:\Program Files\Apache Group
C:\Program Files\Apache Group\Apache2 C:\Program Files\Apache Group\tomcat6_1 C:\Program Files\Apache Group\tomcat6_2
习惯性命名为tomcat_v_order形式,方便区分。
六、修改C:\Program Files\Apache Group\Apache2\conf目录下的配置文件:httpd.conf
在最好一行添加如下内容:
#集群配置 include conf/mod_jk.conf
七、将下载的mod_jk-apache-2.0.55.so文件拷贝到C:\Program Files\Apache Group\Apache2\modules目录下。
八、在C:\Program Files\Apache Group\Apache2\conf下创建mod_jk.conf 文件,内容配置如下:
#加载mod_jk Module LoadModule jk_module modules/mod_jk-apache-2.0.55.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 JkMount /*.jsp controller #如果还要指定*.do也进行分流就再加一行 #JkMount /*.do controller #如果你想对所有的请求进行分流只需要写成 #JkMount /* controller
九、C:\Program Files\Apache Group\Apache2\conf目录下创建workers.properties文件,内容配置如下:
worker.list = controller,tomcat6_1,tomcat6_2 #server 列表 #========tomcat6_1======== worker.tomcat6_1.port=8209 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat6_1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat6_1.type=ajp13 worker.tomcat6_1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多 #========tomcat6_2======== worker.tomcat6_2.port=8109 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat6_2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat6_2.type=ajp13 worker.tomcat6_2.lbfactor = 2 #server的加权比重,值越高,分得的请求越多 #========controller,负载均衡控制器======== worker.controller.type=lb #指定分担请求的tomcat worker.controller.balanced_workers=tomcat6_1,tomcat6_2 #指明session是否是黏性的。 #其默认值为1(true),表示使用黏性session,即一个会话中的请求始终由一个tomcat进行处理; #为0时表示使用非黏性session,即同一会话中的请求可由不同的tomcat处理, #各tomcat之间需同步Session worker.controller.sticky_session=1 #指明session的黏性是否是绝对的、强制的。 #其默认值为0(false),表示非强制,当集群中某台服务器多次请求没响应时,则将请求转发到其它tomcat处理; #为1时表示强制,即使某台服务器宕机也不会将请求转发到其它服务器。 worker.loadbalancer.sticky_session_force=0
十、修改对应tomcat的server.xml文件AJP13端口要保持和workers.properties指定的端口号一致:
Tomcat6_1:
<Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />
Tomcat6_2:
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
其次分别修改其中一个server.xml文件中的这两个元素的端口号,以防止相同而冲突。
<!--默认端口号位8005--> <Server port="8105" shutdown="SHUTDOWN"> <!--默认端口为8080--> <Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
为了能共享session,还要对tomcat对应server.xml文件中修改Cluster的注释:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
如此集群配置完成,查看测试小案例。