1.环境说明
操作系统:Windows XP
JDK:jdk1.6.0_16,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 。
Apache :httpd-2.2.17 (一个),下载地址:http://httpd.apache.org/ 。
Tomcat:tomcat-7.0.2 (两个),下载地址:http://tomcat.apache.org/download-70.cgi 。
mod_jk:mod_jk-apache-2.0.55.so (1个),下载地址:http://tomcat.apache.org/download-70.cgi 。
2. 负载均衡
负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理。
1.1. Apache配置:
1. 找到Apache安装目录下conf目录中的httpd.conf文件,新增如下内容:
# 装载代理模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
# Configure mod_jk
JkWorkersFile conf/workers.properties
# mod_jk 日志配置
JkLogFile logs/mod_jk.log
JKLogLevel info
JKLogStampFormat "[%a % b %d %H:%M:%S:Y]"
JKRequestLogFormat "%w %V %T"
JKMount /* lbworker
JKMount /balancer-manager/* statusworker
# 访问负载平衡管理器页面
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
# 配置需要负载平衡的tomcat群
<Proxy balancer://mycluster>
BalancerMember http://127.0.0.1:8009/
BalancerMember http://127.0.0.1:8010/ loadfactor=2
</Proxy>
# 配置需要tomcat群处理请求的URL
ProxyPass /servlet/* balancer://mycluster/stickysession=jsessionid nofailover=Off
ProxyPassReverse / balancer://mycluster/
截图如下所示:
2. 在http.conf同目录下新建 workers.properties文件,内容如下:
worker.list=lbworker,statusworker
#========worker1 在tomcat1下server.xml配置========
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1 #tomcat的主机地址,如不为本机,请填写ip地址
worker.worker1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.worker1.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========worker2 在tomcat2下server.xml配置========
worker.worker2.type=ajp13
worker.worker2.host=127.0.0.1 #tomcat的主机地址,如不为本机,请填写ip地址
worker.worker2.port=8010 #ajp13 端口号,在tomcat下server.xml配置,默认8010
worker.worker2.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.lbworker.type=lb
worker.lbworker.balance_workers=worker1,worker2
worker.lbworker.sticky_session=FALSE #粘性会话设置
worker.statusworker.type=status
1.2. Tomcat配置:
注:如果您在不同电脑上安装tomcat,tomcat的安装数量只为一个,可以不必修改tomcat配置文件。
我是在一台电脑上上安装了两个tomcat,所以需要更改其中一个的设置。
打开tomcat1/conf/server.xml文件:
找到:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将8080修改成8081,可改可不改,为了标记所以我改了。
找到:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
将jvmRoute参数值修改成:worker1(tomcat1的别名)。
打开tomcat2/conf/server.xml文件:
找到:<Server port="8005" shutdown="SHUTDOWN">
将8005修改成8006,因为8005已让tomcat1占用了。
找到:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将8080修改成8082,如果tomcat1没改8080端口,这里会冲突。
找到:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将8009修改成8010,因为8009已让tomcat1占用了。
找到:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
将jvmRoute参数值修改成:worker2(tomcat2的别名)。
3. Tomcat集群配置,进行全局的Session复制
修改2个节点的server.xml文件。
1. 找到<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,去掉该行上下的<!-- -->注释。使用默认的配置,会调用DeltaManager 进行Session复制,该类会将任何一个节点中添加的Session,同步复制到集群中其他的节点上。针对少量节点的集群,可以直接使用默认配置。
注:官网的集群的详细配置代码如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<!--<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>-->
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
需要去掉:
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
注:如果加上该部分配置,会出现:严重: FarmWarDeployer can only work as host cluster subelement! 错误。
2. 修改需要Session复制的应用中WEB-INF/web.xml文件,在文件中的<web-app>标签中增加:<distributable/>在应用的web.xml中增加上述配置后,就表示该应用需要进行Session复制。
3. 配置Tomcat集群后,需要注意workers.properties中的sticky_session属性配置:
worker.router.sticky_session=True,当该属性值=True(或1)时,代表Session是粘性的,即同一Session在集群中的同一个节点上处理,Session不跨越节点。在集群环境中,一般将该值设置为False。
分享到:
相关推荐
Apache Tomcat集群和负载均衡是提高Web应用程序性能和可用性的关键策略。通过在Windows平台上配置Apache HTTP Server与多个Tomcat实例协同工作,可以有效地分散用户请求,避免单一服务器过载,确保服务的连续性和...
Apache Tomcat 集群负载均衡 ##### 1.13 Tomcat 端口配置 为了实现集群中的负载均衡,需要对 Tomcat 实例上的端口进行配置。这通常涉及到以下端口: - **HTTP 端口**:用于接收客户端的 HTTP 请求。 - **AJP 端口*...
在构建高性能、高可用性的Web应用系统中,Apache和Tomcat的集群以及负载均衡是非常关键的技术环节。这里我们将深入探讨这些知识点。 首先,Apache HTTP Server(简称Apache)是世界上最广泛使用的Web服务器,它提供...
Apache与Tomcat集群和负载均衡
在Apache Tomcat集群中,多台Tomcat服务器共享相同的应用程序和会话状态,这样即使单个服务器出现故障,其他服务器也能接管服务,确保服务不间断。集群的主要目的是提高系统的容错能力和处理能力。 要设置Apache ...
### Apache+Tomcat集群与负载均衡配置详解 #### 一、环境说明 为了实现Apache与Tomcat集群的负载均衡,我们需要准备以下环境: 1. **服务器配置**:四台服务器,其中一台安装Apache,三台安装Tomcat。 - Apache...
【Apache+Tomcat 集群与负载均衡及Session...通过以上配置,Apache+Tomcat集群可以实现高效的负载均衡和高可用性,同时通过Session绑定确保用户会话的连续性。注意定期监控和优化集群性能,以应对不断变化的业务需求。