Apache + Tomcat 集群负载均衡配置

 

 

 

1、 环境

Apache 2.2.15

Tomcat 6.0.20

Jdk 1.6

2、 软件

代理模块 mod_jk-1.2.28-httpd-2.2.X.so 下载地址:

http://labs.renren.com/apache-mirror/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/x86_64/mod_jk-1.2.28-httpd-2.2.X.so

将下载的 mod_jk-1.2.28-httpd-2.2.X.so 文件复制到 %apache_home% 安装目录 modules 目录下

 

3、 测试 tomcat

http://IP:8080/     tomcat1 所在服务器)

http://IP:8080/     tomcat2 所在服务器)

如下图表示正常

 

4、 配置 apache 服务器

a、 %apache_home% 目录下的 conf/httpd.conf 文件末尾中添加:

include conf/mod_jk.conf

b、 conf 目录中新建 mod_jk.conf 文件,内容如下:

# 加载 mod_jk Module

LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.X.so

 

JkWorkersFile conf/workers.properties

指定 workers.properties 文件路径

JkLogFile logs/mod_jk.log

JkLogLevel info

 

JkMount /* controller

指定那些请求交给 tomcat 处理 ,"controller" 为在 workers.propertise 里指定的负载均衡器

c、 conf 目录下新建 workers.properties 文件,内容如下:

worker.list=controller,tomcat1,tomcat2

负载均衡器列表

 

worker.controller.type=lb

负载均衡器类型

worker.controller.balance_workers=tomcat1,tomcat2

指定分担请求的 tomcat 实例名

worker.controller.sticky_session=true

是否使用粘性会话,表示从同一窗口发来的请求都将有集群中的同一个 tomcat 进行处理

 

#========tomcat1========

worker.tomcat1.host=10.10.14.89

tomcat 的主机地址,如不为本机,请填写 ip 地址

worker.tomcat1.port=10009

ajp13 端口号,在 tomcat server.xml 配置 , 默认 10009

worker.tomcat1.type=ajp13

实例节点类型

worker.tomcat1.lbfactor=1

worker 的加权比重,值越高,分得的请求越多

 

#========tomcat2========

worker.tomcat2.host=10.10.14.137

worker.tomcat2.port=20009

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

 

 

5、 修改 tomcat 配置文件

% tomcat_home%/conf/server.xml 的如下内容

a、 Engine 配置

修改前:

  name = "Catalina"   defaultHost = "localhost" >

修改后:

  name = "Catalina"   defaultHost = "localhost"   jvmRoute = "tomcat1" >

  name = "Catalina"   defaultHost = "localhost"   jvmRoute = "tomcat2" >

具体 tomcat jvmRoute 的值根据在 workers.properties 的配置,注意 IP 地址、 tomcat 实例名称和 jvmRoute 值必须一一对应。

b、 Connector 配置

修改前:

  port = "8009"   protocol = "AJP/1.3"   redirectPort = "8443"   />  

修改后:

  port = "9009"   protocol = "AJP/1.3"   redirectPort = "8443"   />

这里 tomcat port 值必须与在 workers.properties 中的 port 值一致。

c、 Cluster 配置

  className = "org.apache.catalina.ha.tcp.SimpleTcpCluster"    channelSendOptions = "8" >  

          className = "org.apache.catalina.ha.session.DeltaManager"

                 expireSessionsOnShutdown = "false"

                 notifyListenersOnReplication = "true" />   

          className = "org.apache.catalina.tribes.group.GroupChannel" >

            className = "org.apache.catalina.tribes.membership.McastService" address = "228.0.0.4" port = "45564"   frequency = "500"   dropTime = "3000" />

            className = "org.apache.catalina.tribes.transport.nio.NioReceiver"   address = "auto" port = "4001" autoBind = "100" selectorTimeout = "5000" maxThreads = "6" />

         

            className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" >

              className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender"   />

         

            className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />

            className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />

            className = "org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />

       

          className = "org.apache.catalina.ha.tcp.ReplicationValve"

               filter = ".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;" />

          className = "org.apache.catalina.ha.session.JvmRouteBinderValve" />

        className = "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir = "/tmp/war-temp/" deployDir = "/tmp/war-deploy/" watchDir = "/tmp/war-listen/" watchEnabled = "false" / >

          className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />

          className = "org.apache.catalina.ha.session.ClusterSessionListener" />

     

 

6、 配置应用程序 web.xml

http://java.sun.com/xml/ns/j2ee "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd "version="2.4">

      TestDemo

      

此配置说明当前 Web 工程处于分布式部署环境。如果不进行这个配置,每次访问页面 tomcat 都会产生一个新的 sessionid

 

7、 可能出现的问题

a、 Java 未先安装,或未正确配置 JAVA_HOME 体统环境变量;

b、 Linux 系统的防火墙 指定的 Tomcat 端口未被设置为远程可访问;

 

你可能感兴趣的:(tomcat,apache,集群,负载均衡,服务器,include)