从前面三篇可以看出,各个部分都能正常工作,那么他们三者之间如何连携,是本篇的内容。在做之前,先整体了解一下mod_jk的整体功能。
mod_jk模块的总体功能
由于tomcat的HTTP处理部分都由Java所写(5.5.12版本以后出现了native库,用以提高其I/O和SSL的性[1]),在高并发的情况下负载较高。而apache对于静态文件的处理能力比tomcat强,所以tomcat开发组开发了与apache结合使用的mod_jk模块。该协议由apache作请求代理,将HTTP协议的请求转化为AJP协议包,并传给后端的tomcat。(ajp worker)
mod_jk和apache现在普遍使用AJP1.3协议[2]。它是一个二进制格式的协议,比字符格式的HTTP协议解析速度要快。
除了性能的提升,还有以下几个作用:
1.mod_jk另外的一个作用可以实现apache与tomcat一对多的对应,使后端tomcat负载均衡。(lb worker)
2.mod_jk也提供apache与tomcat链接情况的监控。(status worker)
mod_jk模块的典型工作流程是这样的:
一个HTTP请求过来,mod_jk模块根据其URI选择合适的worker来进行处理。如果是lb_worker(负载均衡的worker),就再根据各种条件选择后台合适的ajp_worker(处理AJP协议的worker)。ajp_worker将HTTP协议的包,组装成AJP协议格式的包,然后选取一条空闲的链接,发送给后台的tomcat服务器。等到后台将数据发送过来时,接收并解析AJP协议,重新组装成HTTP协议,然后把结果发送给客户端。
三者连携
1.和配mod_jk的status worker一样,配置ajp worker也要涉及到两个配置文件:
1)./etc/httpd/conf.d/mod_jk.conf
追加-->JKMount /* tomcat1
2)./etc/httpd/conf/workers.properities
worker.list=tomcat1,jkstatus
# Define status worker
#
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8009
worker.jkstatus.type=status
2.重启apache
systemctl restart httpd
3.访问URL
http://192.168.100.29/test/index.jsp
结论,成功通过apache(80)访问了tomcat的资材