一、前言
1. Apache是Web服务器,它支持静态页面,有很好的静态页面处理能力;Tomcat是应用(Java)服务器,它支持动态页面(例如Servlet,JSP)。一般在使用Apache + Tomcat的配置下,Apache都是实现对JSP的转发,交给Tomcat来处理,两者搭配可以支持静态和动态页面。
2. Tomcat,它只是一个servlet容器,是Apache的扩展,但可以独立于Apache运行;如果以独立方式运行,功能与Apache等效,但对静态页面的处理不太理想。
3. 为了提高整个系统的可用性和性能,常常会用到负载均衡,而Apache和Tomcat经常联合在一起来实现负载均衡技术。
①.保证多台Tomcat服务器之间会话的同步,确保任何一台当机都不会影响系统的运行,从而提高系统的可用性。
②.在负责负载平衡的Apache主机上记录每个请求的Session ID(这个ID是由Tomcat分配的)及回应Session的Tomcat Server对应关系,在下一个请求到来时先判断每个Session ID,如果有标识连接已经建立,那么转到对应服务器;负责就是新的连接,根据每个后台Tomcat服务器的状态分配一个服务器并记录Session ID.
二、Apache + Tomcat 组合配置
1. 通讯方式
Apache和Tomcat之间的通讯基本有三种方式(Mod_Jk、HTTP_Proxy和AJP_Proxy),由于当前流行方式且官方文档非常全的为Mod_Jk,所以本文中采用的为Mod_Jk方式(具体介绍可自行百度,本文不做具体介绍)
2.配置步骤安装
①. 安装Apache HTTP服务器,从Apache官方网站下载,我安装的是apache_httpd-2.4.18
②. 安装Apache Tomcat,可以安装在Apache同一个机器,也可以在其他的机器
③. Mod_Jk配置
Ⅰ.下载Mod_Jk.so将其放置到目录Apache/Modules下
Ⅱ.修改httpd.conf,增加一行:Include conf/mod_jk.conf
Ⅲ.在conf目录下新建Mod_jk.conf文件,内容为:
#Load mod_jk module.
LoadModule jk_module modules/mod_jk.so
#Where to find workers.properties
JkWorkersFile conf/workersOne.properties
JkMountFile conf/workersTwo.properties
#Where to put jk logs
JkLogFile logs/mod_jk.log
#Set the jk log level[debug/error/info]
JkLogLevel info
#Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
#JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer
Ⅳ. 在conf目录下新建workersOne.properties文件,内容为:
#worker.list=loadbalancer
worker.list=loadbalancer,tomcat1,tomcat2 #server列表
#define the first node
worker.tomcat1.port=8009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#define the first node
worker.tomcat2.port=8009
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#Now we define the load-balancing behavior
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1, tomcat2
worker.loadbalancer.sticky_session=true
worker.loadbalancer.sticky_session_force=true
Ⅴ.在conf目录下新建workersTwo.properties文件,内容为:
!/*.htm=loadbalancer