|
一、web开发中,为什么需要tomcat集群,我个人认为有两点:
1、防止其中的一个单一的应用服务器出现意外(崩溃,断电),导致请求无法处理。
2、分发处理请求减少应用服务器的压力。
下面切入正题,如何配置:
二、软件准备:
Apache:http://apache.fayea.com/apache-mirror//httpd/binaries/win32/httpd-2.0.65-win32-x86-no_ssl.msi
mod_jk: http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/mod_jk-apache-2.0.55.so
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"/>
如此集群配置完成,查看测试小案例。 |
|
|