Tomcat集群——使用apache负载
使用Apache做Tomcat负载的好处:
1. 提升对静态文件的处理性能
2. 利用 Web 服务器来做负载均衡以及容错
3. 无缝的升级应用程序
这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。
Apache HTTP Server 与 Tomcat 的三种连接方式JK,http_proxy,ajp_proxy。下面逐个介绍一下(本篇介绍的示例都是基于前面介绍的已经搭建好的Tomcat集群,都是本机,端口分别为18080和28080):
JK:
JK是最常见的方式,JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.37,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本 1。
JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009(本机修改配置为18009和28009)。JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置。
配置JK
1.下载mod_jk,Tomcat官网下载即可
http://tomcat.apache.org/download-connectors.cgi,下载对应版本
2.修改httpd.conf
# (httpd.conf)# 加载 mod_jk 模块LoadModule jk_module modules/mod_jk.so## Configure mod_jk#JkWorkersFile conf/workers.propertiesJkMountFile conf/uriworkermap.propertiesJkLogFile logs/mod_jk.logJkLogLevel warn
## workers.properties## list the workers by name# DLOG4J的名字是随便起的worker.list=DLOG4J, status# localhost server 1# ------------------------worker.s1.port=18009worker.s1.host=localhostworker.s1.type=ajp13# localhost server 2# ------------------------worker.s2.port=28009worker.s2.host=localhostworker.s2.type=ajp13worker.DLOG4J.type=lbworker.retries=3worker.DLOG4J.balance_workers=s1, s2worker.DLOG4J.sticky_session=1worker.status.type=status
/*=DLOG4J/jkstatus=status!/*.gif=DLOG4J!/*.jpg=DLOG4J!/*.png=DLOG4J!/*.css=DLOG4J!/*.js=DLOG4J!/*.htm=DLOG4J!/*.html=DLOG4J
ProxyPass /images !ProxyPass /css ! ProxyPass /js !ProxyPass /balancer-manager !ProxyPass / balancer://mycluster/<Proxy balancer://mycluster/>BalancerMember http://localhost:18080/BalancerMember http://localhost:28080/</Proxy><Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow #Deny from all Allow from localhost ip6-localhost</Location>
ProxyPass /images !ProxyPass /css ! ProxyPass /js !ProxyPass /balancer-manager !ProxyPass / balancer://mycluster/<Proxy balancer://mycluster/>BalancerMember ajp://localhost:18009/BalancerMember ajp://localhost:28009/</Proxy><Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow #Deny from all Allow from localhost ip6-localhost</Location>