1.下载apache mod_jk模块,按照官方网站进行相应的名称修改
2.在httpd.conf文件中增加
LoadModule jk_module modules/mod_jk.so
我的apache是2.2版本的,当我配置jk_module为mod_jk的时候apache起不来,估计这个名称的命名是有规定的 (有待进一步学习)
3.增加worker.properties文件,文件内容
worker.list = tomcatA
worker.tomcatA.type=ajp13
worker.tomcatA.host=127.0.0.1
worker.tomcatA.port=8009
上面是一个简单的配置,还有其他一些属性可以配置
connection_pool_size:连接池中为本worker保持的连接数,默认是threads-per-child值,在2.2中默认为250
connection_pool_minisize:默认为pool_size/2
connection_pool_timeout:在本worker生命结束的前,他在连接池中保持的秒数
retries:在转寄请求期间,当一个worker返回错误时,他控制mod_jk将再次重发本worker的时间
socket_timeout:控制mod_jk提示错误前,将等待socket上的worker响应的时间,默认是0,表示无限长时间
socket_keepalive:指示是否保持到worker的链接处于活动状态,默认0 false
lbfactor: 指示负载平衡因素的整数
以上的参数是极不ajp13类型的worker,本类型的worker代表了运行的tomcat实例
4.在httpd.conf中附加mod_jk指令
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkRequestLogFormat "%w %U %T"
JkMount /examples/jsp/* tomcatA #将这个请求发送到tomcatA实例
JkMount /jkstatus/ stat1
SetEnvIf Request_Url "/nomap/jsp/*" no-jk
5. 修改tomcat conf中的server.xml,启动ajp连接器,因为apache是用ajp来与tomcat进行通信的
启动tomcat进行测试
6.tomcat负载平衡
主要是用apache在三个tomcat之间进行请求的负载
修改worker.properties
worker.list = ball,stat1
worker.tomcatA.type=ajp13
worker.tomcatA.host=127.0.0.1
worker.tomcatA.port=8009
worker.tomcatA.lbfactor=10
worker.tomcatB.type=ajp13
worker.tomcatB.host=127.0.0.1
worker.tomcatB.port=8010
worker.tomcatB.lbfactor=10
worker.tomcatC.type=ajp13
worker.tomcatC.host=127.0.0.1
worker.tomcatC.port=8011
worker.tomcatC.lbfactor=10
worker.ball.type=lb
worker.ball.sticky_session=1
worker.ball.balance_workers = tomcatA,tomcatB,tomcatC
worker.stat1.type=status
里面定义了5个worker,3个是ajp类型的,运行的tomcat实例
ball类型是lb表示本类型的worker是用来负载平衡的,
属性有:balance_workers:平衡负载的一组worker
lock:控制负载平衡器如何访问、共享运行内存容器stats来确定将使用哪个worker,默认0,乐观锁,1悲观锁
method:使用哪种方式来转寄请求数到worker,R,T或B,R请求书,T流量,B
sticky_session:告知mod_jk遵守请求中的会话,默认1,
sticky_session_force:用于转移故障,当session_id处于错误的状态,请求将转移到另一个worker
stat1的类型是status,可以查看各个tomcat的负载情况
7.根据worker,修改相应的tomcat的ajp,同时在Engine中增加jvmRoute,为每个tomcat实例的名称