1、 环境
Apache 2.2.15
Tomcat 6.0.20
Jdk 1.6
2、 软件
代理模块 mod_jk-1.2.28-httpd-2.2.X.so 下载地址:
http://labs.renren.com/apache-mirror/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/x86_64/mod_jk-1.2.28-httpd-2.2.X.so
将下载的 mod_jk-1.2.28-httpd-2.2.X.so 文件复制到 %apache_home% 安装目录 modules 目录下
3、 测试 tomcat
http://IP:8080/ ( tomcat1 所在服务器)
http://IP:8080/ ( tomcat2 所在服务器)
如下图表示正常
4、 配置 apache 服务器
a、 在 %apache_home% 目录下的 conf/httpd.conf 文件末尾中添加:
include conf/mod_jk.conf
b、 在 conf 目录中新建 mod_jk.conf 文件,内容如下:
# 加载 mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.X.so
JkWorkersFile conf/workers.properties
指定 workers.properties 文件路径
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /* controller
指定那些请求交给 tomcat 处理 ,"controller" 为在 workers.propertise 里指定的负载均衡器
c、 在 conf 目录下新建 workers.properties 文件,内容如下:
worker.list=controller,tomcat1,tomcat2
负载均衡器列表
worker.controller.type=lb
负载均衡器类型
worker.controller.balance_workers=tomcat1,tomcat2
指定分担请求的 tomcat 实例名
worker.controller.sticky_session=true
是否使用粘性会话,表示从同一窗口发来的请求都将有集群中的同一个 tomcat 进行处理
#========tomcat1========
worker.tomcat1.host=10.10.14.89
tomcat 的主机地址,如不为本机,请填写 ip 地址
worker.tomcat1.port=10009
ajp13 端口号,在 tomcat 下 server.xml 配置 , 默认 10009
worker.tomcat1.type=ajp13
实例节点类型
worker.tomcat1.lbfactor=1
worker 的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.host=10.10.14.137
worker.tomcat2.port=20009
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
5、 修改 tomcat 配置文件
% tomcat_home%/conf/server.xml 的如下内容
a、 Engine 配置
修改前:
修改后:
具体 tomcat 中 jvmRoute 的值根据在 workers.properties 的配置,注意 IP 地址、 tomcat 实例名称和 jvmRoute 值必须一一对应。
b、 Connector 配置
修改前:
修改后:
这里 tomcat 的 port 值必须与在 workers.properties 中的 port 值一致。
c、 Cluster 配置
expireSessionsOnShutdown = "false"
notifyListenersOnReplication = "true" />
filter = ".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;" />
6、 配置应用程序 web.xml
此配置说明当前 Web 工程处于分布式部署环境。如果不进行这个配置,每次访问页面 tomcat 都会产生一个新的 sessionid
7、 可能出现的问题
a、 Java 未先安装,或未正确配置 JAVA_HOME 体统环境变量;
b、 Linux 系统的防火墙 指定的 Tomcat 端口未被设置为远程可访问;