上一篇講解了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.www58058.com/6370