Apache+Tomcat + mod_jk 负载均衡
博客专区 > ZFrances 的博客 > 博客详情
Apache+Tomcat + mod_jk 负载均衡
ZFrances 发表于3年前
Apache+Tomcat + mod_jk 负载均衡
  • 发表于 3年前
  • 阅读 43
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 原因:1 通过做tomcat集群,减少单个服务器上访问压力 2 tomcat服务器异常或部署新项目时,不影响整个系统(使用)

工作上的需求,跟着别人的思路走了一遍

原理的话:参考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分发到不同服务器上操作!

 8: 日志配置

 8.1  Mysql   my.cnf

log-error="D:/mysqlLog/error.log"  
general-log=1  
general-log-file="D:/mysqlLog/mysql.log"  
long_query_time=3  
slow_query_log=1  
slow-query-log_file="D:/mysqlLog/slowquery.log"

 8.2   Tomcat 日志格式

pattern=“%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i MSISDN=%{x-up-calling-line-id}i”

8.3 Apache 日志   

 #ErrorLog “|bin/rotatelogs.exe logs/vicp_net_error-%y%m%d.log 86400 480″
 #CustomLog “|bin/rotatelogs.exe logs/vicp_net_access-%y%m%d.log 86400 480″ common

8.4   mod_jk.conf 日志格式:  

#指定日志级别  
JkLogLevel info  
 
# Select the log format  
JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"  
   
# JkOptions indicates to send SSK KEY SIZE  
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories     
# JkRequestLogFormat  
JkRequestLogFormat "%w %V 8.0%T"



共有 人打赏支持
粉丝 4
博文 5
码字总数 3335
×
ZFrances
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: