Loading... <p>上一篇讲解了http使用mod_http和mod_ajp代理模块实现tomcat负载均衡,下面我们来讲解使用http的mod_jk实现taomcat的负载均衡集群:</p> <p>注意:http的mod_jk是第三方扩展模块,在新http版本中以不支持,在httpd 1.3和2.0效果较好</p> <p></p> <p>6、使用mod_jk实现tomcat负载均衡集群</p> <p>6.1安装mod_jk</p> <pre class="brush:bash;toolbar:false">[root@node3 ~]# yum -y groupinstall "Development Tools" "Server Platfrom Development" \\安装编译环境 [root@node3 conf.d]# yum -y install httpd-devel \\安装httpd的开发包 [root@node3 ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz -C /usr/src \\解压软件包 [root@node3 ~]# cd /usr/src [root@node3 src]# cd tomcat-connectors-1.2.40-src/native/ \\cd解压后软件包的native目录 [root@node3 native]# ./configure --with-apxs=`which apxs` \\安装mod_jk时是指定httpd的apxs位置 [root@node3 native]# make;make install 安装</pre> <p>6.2 确保httpd含有mod_jk模块</p> <pre class="brush:bash;toolbar:false">[root@node3 native]# ls -l /usr/lib64/httpd/modules/mod_jk.so -rwxr-xr-x. 1 root root 1161241 Jul 18 16:44 /usr/lib64/httpd/modules/mod_jk.so</pre> <p>6.3 修改httpd配置文件,(注释掉默认文档存放位置)</p> <pre class="brush:bash;toolbar:false">[root@node3 conf.d]# pwd /etc/httpd/conf.d [root@node3 conf.d]# vim mod_jk.conf LoadModule jk_module modules/mod_jk.so \\装载mod_jk模块 JkWorkersFile /etc/httpd/conf.d/workers.properties \\指明运行时配置文件的位置 JkLogFile log/mod_jk.log \\指定log日志位置 JkLogFile debug \\指定日志级别,根据需求自定义 JkMount /* Cluster \\将所有httpd请求映射为Cluster集群中,名字自定义 JkMount /jk_status statA \\状态监控页面 [root@node3 conf.d]# vim workers.properties worker.list=Cluster,statA \\工作列表 worker.TomcatA.type=ajp13 \\定义后端TomcatA主机类型, worker.TomcatA.port=8009 \\定义后端主机的监听端口 worker.TomcatA.host=172.16.2.14 \\定义后端主机地址 worker.TomcatA.lbfactor=5 worker.TomcatB.type=ajp13 worker.TomcatB.port=8009 worker.TomcatB.host=172.16.2.13 worker.TomcatB.lbfactor=5 worker.Cluster.type=lb \\定义Cluster组的类型; worker.Cluster.sticky_session=0 \\会话保持关闭 worker.Cluster.balance_workers=TomcatA,TomcatB \\将后端主机TomcatA,TomcatB映射到Cluster组中 worker.statA.type=status \\定义statA的类型 type有三种类型: ajb13:用于负载调度 status:tomcat自身所带的监控页面,类似于httpd的status lb:集群类型</pre> <p>6.4 修改tomcat主配置文件,在engine添加以下信息</p> <pre class="brush:bash;toolbar:false"> node1节点: <Engine name="Catalina" defaultHost="www.mylinux.com" jvmRoute="TomcatA"> \\添加jvmRoute指令 node2节点 <Engine name="Catalina" defaultHost="www.mylinux.com" jvmRoute="TomcatB"> \\添加jvmRoute指令 重新启动tomcat: # catalina.sh stop # catalina.sh start</pre> <p>6.4 重新启动httpd,访问测试</p> <pre class="brush:bash;toolbar:false">[root@node3 conf.d]# httpd -t [root@node3 conf.d]# /etc/init.d/httpd restart</pre> <p>访问测试:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160621-92.png" title="1437210813575396.png" alt="17.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160621-71.png" title="1437210829755468.png" alt="18.png" /></p> <p></p> <p>6.5 开启httpd会话绑定,当客户端第一访问时若是有A主机提供页面信息,则后续的访问都有此主机提供;</p> <p> 修改配置文件:</p> <pre class="brush:bash;toolbar:false">[root@node3 conf.d]# vim workers.properties worker.list=Cluster,statA worker.TomcatA.type=ajp13 worker.TomcatA.port=8009 worker.TomcatA.host=172.16.2.14 worker.TomcatA.lbfactor=5 worker.TomcatB.type=ajp13 worker.TomcatB.port=8009 worker.TomcatB.host=172.16.2.13 worker.TomcatB.lbfactor=5 worker.Cluster.type=lb worker.Cluster.sticky_session=1 \\开启会话保持 worker.Cluster.balance_workers=TomcatA,TomcatB worker.statA.type=status</pre> <p>重启httpd,测试访问:</p> <pre class="brush:bash;toolbar:false">[root@node3 conf.d]# httpd -t [root@node3 conf.d]# /etc/init.d/httpd restart</pre> <p>访问测试:无论怎么刷新,以后请求都会有第一次响应的主机提供页面信息</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160621-61.png" title="1437210732375543.png" alt="16.png" /></p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信