当前位置:文档之家› 负载均衡方案及详细配置

负载均衡方案及详细配置

Apache+Tomcat+mod_jk实现负载均衡方案一、概述:原理图:提高系统可用性,对系统性能影响较小。

对于一台服务器Down机后,可自动切换到另最少需要两台机器,Tomcat1 和Tomcat2可在同一台服务器上。

若条件允许最好是各用一台服务器。

二、详细配置步骤:1、Apache http Server安装32位的按照提示操作即可。

64位系统的不是安装包。

64位安装配置:以管理员身份运行cmd执行:httpd -k install 若无法运行并提示配置错误,请先安装vcredist_x64.exe后再执行。

安装后在Testing httpd.conf...时会报错,不影响。

httpd -k start 启动Apache、httpd -k shutdown 停止Apache 、httpd -k restart重启测试Apache:在IE中输入:127.0.0.1 打开网页显示It work就OK2、将Mod_jk的压缩包解压,找到mod_jk.so 复制到Apache目录下modules目录下64位的下载mod_jk1.2.30_x64.zip32位的下载tomcat-connectors-1.2.35-windows-i386-httpd-2.0.x.zip3、修改Apache conf目录下的httpd.conf文件在最后增加:Include conf/extra/mod_jk.conf4、在conf/extra 下创建mod_jk.conf文件增加如下:#load module mod_jk.soLoadModule jk_module modules/mod_jk.so#mod_jk config#load workersJkWorkersFile conf/workers.properties#set log fileJkLogFile logs/mod_jk.log#set log levelJkLogLevel info#map to the status server#mount the status serverJkMount /private/admin/mystatus mystatusJkMount /* balance5.在conf目录下创建workers.properties文件增加:worker.tomcat1 中的tomcat1和tomcat2必须和Tomcat中的配置相同。

Tomcat配置下面介召worker.list=balance,mystatus#first worker configworker.tomcat1.type=ajp13worker.tomcat1.host=192.168.8.204worker.tomcat1.port=8009 #Tomcat的监听端口worker.tomcat1.lbfactor=1worker.tomcat1.socket_timeout=30worker.tomcat1.socket_keepalive=1#second worker configworker.tomcat2.type=ajp13worker.tomcat2.host=192.168.8.204worker.tomcat2.port=8010 #Tomcat的监听端口实验是在同一机器上做的,所以两个不同worker.tomcat2.lbfactor=1worker.tomcat2.socket_timeout=30worker.tomcat2.socket_keepalive=1worker.balance.type=lbworker.balance.balance_workers=tomcat1,tomcat2worker.balance.sticky_session=1worker.mystatus.type=status6、Tomcat配置两台配置相同打开Tomcat的conf/server.xml找到如下行:<!-- You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">--><Engine name="Catalina" defaultHost="localhost">修改为:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">另一台Tomcat的jvmRoute="tomcat2" tomcat1和tomcat2必须和上面Apache 的workers.properties文件中配置相同7、两台Tomcat的Session复制(提高了系统可用性,但会消耗系统性能)项目的Web.xml中必须加上<distributable/>需要同步的Session会话属性必须实现java.io.Serializable,否则不能同步在两台Tomcat做相同操作。

在Tomcat的server.xml中找到<!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> -->取掉注释并修改为:若两个Tomcat在同一机器上,在Receiver中的Port不能重复取值范围4000-4100<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"channelSendOptions="8"><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="127.0.0.1"port="4002"autoBind="100"selectorTimeout="5000"maxThreads="6"/><SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter"><TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/><ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>。

相关主题