一、Apache HTTP Server 与 Tomcat 的四种连接方式
- JK
- http_proxy
- ajp_proxy
- mod_cluster
四者比较:
相对于 JK 的连接方式,http_proxy、ajp_proxy、mod_cluster在配置上相对简单,灵活性也更高。但就稳定性而言就不像 JK 这样久经考验,但是随着时间的推移,使用mod_cluster的互联网网站也越来越多。
二、使用mod_cluster的好处
httpd workers 可动态配置
应用服务器依赖于lifecyle事件(server startup/shutdown)通过adverties广播机制通知httpd来动态配置
Server端负载均衡因子计算
通过在Server端计算负载均衡因子,本文指Tomcat负责计算,通过将计算放置在Server端,mod_cluster可以提供比proxy端更加健壮、精确的负载均衡
更细粒度的web-app生命周期控制
web-app在deploy/undeploy时,Server端会自动通知httpd去新增/删除该web-app的context路由
支持多种协议(HTTP、HTTPS、AJP)
不像mod_jk、mod_proxy、ajp_proxy模块仅支持单一协议
三、物理部署图
四、安装文件准备
- apache:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
- apache mod_cluster模块:mod_cluster-1.2.6.Final-windows-x86.zip
- tomcat:apache-tomcat-7.0.53.tar.gz
- tomcat mod_cluster集成:mod_cluster-parent-1.2.6.Final-bin.tar.gz
- jdk7:jdk-7u79-windows-x64.exe
注: mod_cluster模块必须与apache版本对应,否则可能造成apache无法正常启动。
五、Apache httpd mod_cluster 模块 安装配置
apache安装:
直接双击下载的 httpd-2.2.22-win32-x86-openssl-0.9.8t.msi 文件安装即可,这里我们安装到 D:\Apache2.2 目录下
解压下载的 mod_cluster-1.2.6.Final-windows-x86.zip 文件,得到 httpd-2.2 目录,复制 httpd-2.2\modules 目录下的下面4个so文件到 D:\Apache2.2\modules 目录下
- mod_advertise.so
- mod_manager.so
- mod_proxy_cluster.so
- mod_slotmem.so
配置mod_cluster模块,在 D:\Apache2.2\conf\extra 目录下新建 http-mod_cluster.conf 配置文件,内容如下:
# Required modules
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
Listen 192.168.1.107:6666
<VirtualHost 192.168.1.107:6666>
<Location />
Order deny,allow
Deny from all
Allow from all
</Location>
KeepAliveTimeout 60
MaxKeepAliveRequests 0
ManagerBalancerName mycluster
ServerAdvertise On
EnableMCPMReceive
</VirtualHost>
# 设置代理转发,将所有请求都转发至mycluster负载均衡器
ProxyPass / balancer://mycluster/
# 配置mod_cluster-manager以便通过 http://ip:port/mod_cluster-manager 访问mod_cluster管理界面
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Orde