上一篇讲解了http使用mod_http和mod_ajp代理模块实现tomcat负载均衡,下面我们来讲解使用http的mod_jk实现taomcat的负载均衡集群:
注意:http的mod_jk是第三方扩展模块,在新http版本中以不支持,在httpd 1.3和2.0效果较好
6、使用mod_jk实现tomcat负载均衡集群
6.1安装mod_jk
[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 安装
6.2 确保httpd含有mod_jk模块
[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
6.3 修改httpd配置文件,(注释掉默认文档存放位置)
[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:集群类型
6.4 修改tomcat主配置文件,在engine添加以下信息
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
6.4 重新启动httpd,访问测试
[root@node3 conf.d]# httpd -t [root@node3 conf.d]# /etc/init.d/httpd restart
访问测试:
6.5 开启httpd会话绑定,当客户端第一访问时若是有A主机提供页面信息,则后续的访问都有此主机提供;
修改配置文件:
[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
重启httpd,测试访问:
[root@node3 conf.d]# httpd -t [root@node3 conf.d]# /etc/init.d/httpd restart
访问测试:无论怎么刷新,以后请求都会有第一次响应的主机提供页面信息
原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/6370