worker.loadbalancer.balanced_workers=worker1,worker2 worker.loadbalancer.local_worker_only=1 worker.loadbalancer.sticky_session=true worker.loadbalancer.sticky_session_force=true
注:以上定义了两个worker,一个为worker1,另一个为worker2,定义了一个负载平衡服务器loadbalancer,其中标蓝 色的为重点配置项,相关的详细说明可以看官方的网站文档:http://tomcat.apache.org/connectors-doc/
worker.list=loadbalancer
设定工作的负载平衡器,各Tomcat节点不能加入此列表。 worker.worker1.lbfactor
负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。
worker.loadbalancer.balance_workers=worker1,worker2 指定此负载平衡器负责的Tomcat应用节点。 worker.loadbalancer.sticky_session=true
此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。
worker.loadbalancer.sticky_session_force=true
如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果集群中某台Tomcat服务器在多次请求没有响 应后,是否将当前的请求,转发到其它Tomcat服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它 Tomcat服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。
4.3 修改server.xml
#vi /usr/local/tomcat/conf/server.xml
第一臺TOMCAT主機在120行左右加入如下语句 (work1在apachel的workers.properties文件上定義的名稱)
查找Connector port=\,修改成如下: protocolHandlerClassName=\ redirectPort=\protocol=\ 并且把下面群集配置释放出来,也就是去掉注释。 className=?org.apache.catalina.cluster.mcast.McastService? mcastAddr=?228.0.0.4? mcastPort=?45564? mcastFrequency=?500? mcastDropTime=?3000?/> className=?org.apache.catalina.cluster.tcp.ReplicationListener? tcpListenAddress=?10.3.15.85? tcpListenPort=?4001? tcpSelectorTimeout=?100? tcpThreadCount=?6?/> className=?org.apache.catalina.cluster.tcp.ReplicationTransmitter? replicationMode=?pooled?/> 5第二臺TOMCAT主機安裝配置: 5.1安装JDK # cd /usr/local/ # chmod 777 jdk-1_5_0_04-linux-i586-rpm.bin # ./jdk-1.5.0_04-linux-i586-rpm.bin # cd /usr/java/ # ln -s /usr/java/jdk-1_5_0_04 /usr/local/java # vi /etc/profile #添加如下内容 JAVA_HOME=/usr/local/java/ CLASSPATH=/usr/local/java/lib/dt.jar:/usr/local/java/lib/tools.jar PATH=/usr/local/java/bin:$PATH export PATH JAVA_HOME CLASSPATH 5.2安装Tomcat # cd /usr/local/ # tar xvfz jakarta-tomcat-5.5.9.tar.gz # ln –s /usr/local/jakarta-tomcat-5.5.9 /usr/local/tomcat # vi /usr/local/tomcat/bin/catalina.sh JAVA_HOME=/usr/local/java 启动服务后,访问本机8080端口,查看端口是否正常 # /usr/local/tomcat/bin/startup.sh /startup.bat 关闭服务 # /usr/local/tomcat/bin/shutdown.sh /shutdown.bat 5.3修改server.xml #vi /usr/local/tomcat/conf/server.xml 查找TOMCAT的8080端口,改為80 第二臺TOMCAT主機在120行左右加入如下语句 (work2在apachel的workers.properties文件上定義的名稱) 查找Connector port=\,修改成如下: protocolHandlerClassName=\ redirectPort=\protocol=\ 并且把下面群集配置释放出来,也就是去掉注释。 className=?org.apache.catalina.cluster.mcast.McastService? mcastAddr=?228.0.0.4? mcastPort=?45564? mcastFrequency=?500? mcastDropTime=?3000?/> className=?org.apache.catalina.cluster.tcp.ReplicationListener? tcpListenAddress=?10.3.15.85? tcpListenPort=?4001? tcpSelectorTimeout=?100? tcpThreadCount=?6?/> className=?org.apache.catalina.cluster.tcp.ReplicationTransmitter? replicationMode=?pooled?/> 至此,系统已经整个完毕 启动apache和tomcat服务 # /usr/local/apache/bin/apachectl start #/usr/local/tomcat/bin/catalina.sh start 将如下内容添加至/etc/rc.d/rc.local文件末尾,以便系统启动后开启apache,tomcat服务 /usr/local/tomcat/bin/catalina.sh start /usr/local/apache/bin/apachectl start 6 测试群集 经过以上所有步骤,一个具有2个节点的tomcat群集已经配置完毕,但有时可能不能进行节点间的会话复制,是因为要把所有节点的 server.xml中的tcpListenAddress=?auto?改为tcpListenAddress=?10.3.15.85? ,也就是改为真实的ip地址。 如果在启动时,出现如下信息:skipping state transfer. No members active in cluster group. 也需要修改上面的信息。否则,session是不能在多个tomcat间复制session的。 5.1 编写一个简单web应用,包含如下内容: 写一个如下的2个jsp页面。 test.jsp内容如下: