工作上的需求,跟着别人的思路走了一遍
原理的话:参考http://www.thinksaas.cn/group/topic/279676/
1: 配置好JAVA 与 tomcat apache环境变量
2: tomcat配置:如果在一台机器上部署多个tomcat服务器,其中端口必须不同,并且 %CATALINA_HOME% 也需不同,避免同时启动时冲突。eg:
2.1 : tomcat-7\bin; 修改 %CATALINA_HOME% 变量 (startup.bat catalina.bat setclasspath.bat)
2.2 : tomcat-7\conf\server.xml; 不同tomcat端口与负载节点jvmRount 均要不同
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000" acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5" useURIValidationHack="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" uRIEncoding="utf-8" redirectPort="8543" />
<Connector port="8009" maxThreads="300" minSpareThreads="50" protocol="AJP/1.3" redirectPort="8443" acceptCount="350" uRIEncoding="utf-8" jvmRoute="worker1"/> <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">
3:apache\conf\httpd.conf
最后加上:
<IfModule mpm_winnt.c> ThreadsPerChild 2000 MaxRequestsPerChild 10000 Win32DisableAcceptEx </IfModule> # module mod_jk config file Include conf/extra/mod_jk.conf
4: conf/extra/mod_jk.conf : 配置负载均衡器 所有请求均需经过这层处理,再进行分发
#load module mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x. LoadModule jk_module modules/mod_jk.so #配置 mod_jk conf #加载集群中的workers JkWorkersFile conf/workers.properties #加载workers的请求处理分配文件 JkMountFile conf/uriworkermap.properties #指定jk的日志输出文件 JkLogFile logs/mod_jk.log #指定日志级别 JkLogLevel info
5: conf/workers.properties tomcat集群部署
worker.list=LB_worker,jkstatus #第一个worker的配置,名为worker_1 #tomcat的主机地址,如不为本机,请填写ip地址 worker.worker1.host=localhost #ajp13 端口号,对应tomcat配置文件server.xml中Connector port="8009",默认8009 worker.worker1.port=8009 worker.worker1.type=ajp13 #负载的权重值,越高表示负载越大 worker.worker1.lbfactor=1 #LB_worker,用于负载均衡分发的控制器 worker.LB_worker.type=lb #重试次数 worker.LB_worker.retries=3 #指定负载的worker列表,用逗号分隔 worker.LB_worker.balance_workers=worker1 #配置session会话是否为粘性 #这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互 worker.LB_worker.sticky_session=true #如果sticky_session设为true时,此处一般设为false worker.LB_worker.sticky_session_force=false #设置运行状态的控制器 worker.jkstatus.type=status
6: conf/uriworkermap.properties
#所有请求都由LB_worker这个worker处理 ,注意:请求可以直接在这过滤,添加你需要的规则((.do,*.jsp) 如果只想处理项目相关的操作, 则 /project/* = LB_worker #所有请求 /* = LB_worker #所有包含jkstatus请求的都由名称叫jkstatus的这个worker处理 /jkstatus=jkstatus
7:modules/mod_jk.so 可直接去apache官网下载
tomcat servlet 连接apache服务器的一个apache模块
部署完成后,直接启动多个tomcat进行测试,可发现一个请求可能会根据apache分发到不同服务器上操作!