Apache+Tomcat+Linux集群和负载均衡
linux:Red Hat Linux AS4
操作系统:windows xp
安装好vm+linux后,该linux系统默认已经安装了Apache
两台tomcat服务器
一台由虚拟机安装的linux担当Apache也安装在此机器上
另一台是我们安装了该虚拟机的winxp操作系统的机器担当
Tomcat ip1 :172.16.116.2也就是linux的ip地址 版本为6.0.18
Tomcat ip2 :172.16.116.1是我们用来跟linux连接的虚拟网卡1的ip 版本为6.0.14
JDK6.0安装在172.16.116.1和172.16.116.2上的tomcat服务器
安装tomcat和apache ,在这里就不讲了。
软件都可以在www.apache.org 的网站上找到(apache,tomcat,mod_jk)
2.拷贝文件
下载mod_jk.so 文件放到apache 下的modules下
地址:http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/ 请选择正确的操作系统和
Apache的版本
这里我们使用的是mod_jk-1.2.26-httpd-2.0.61.so版本
假设我们的mod_jk-1.2.26-httpd-2.0.61.so放在 /root/jerry 目录下 拷贝到指定的目录中去
# cp /root/jerry/mod_jk-1.2.26-httpd-2.0.61.so /etc/httpd/modules
# cd./etc/httpd/modules
# ls
3.在apache的conf下建立文件workers.properties
添加内容:
ps=/
worker.list=worker1,worker2,loadbalancer
worker.worker1.port=8009
worker.worker1.host=172.16.116.1
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker2.port=8009
worker.worker2.host=172.16.116.2
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1,worker2
4.修改/etc/httpd/conf/httpd.conf
编辑httpd.conf,将下面的内容添加到该文件的末尾
# vi /etc/httpd/conf/httpd.conf
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.0.61.so
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel debug
JkMount /*.jsp loadbalancer
:wq保存退出
注意:修改完成后请more查看文件,是否已经修改成功,不成功需要修改文件访问权限后进行修改。
5.重启服务
启动两台 tomcat服务器服务 启动#cd /root/jerry/tomcat6.0.18/bin/startup.sh linux下的tomcat服务器
windwos下的就不用我说了
重启Apache的服务 #service httpd restart
2.3 配置tomcat(绑定session)
同属于一个集群下的两个服务实体,要求功能的同一性,所以我们可先安装和配置第一个tomcat,接着拷贝形成第二个tomcat,最后配置第二个tomcat。
2.3.1修改tomcat1, tomcat2的server.xml
2.3.1.1 修改 <Engine /> 标签
在跑第一个tomcat实例的机器上,在大约第120行(去掉注释), 将
<Engine name="Standalone" defaultHost="localhost" debug="0">
替换为:
<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="192.168.0.105" debug="0" />
对跑第二个tomcat实例的机器上,替换为 jvmRoute="tomcat2".
- <!-- You should set jvmRoute to support load-balancing via AJP ie :
- <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
- -->
- <Engine jvmRoute="tomcat2" name="Standalone" defaultHost="192.168.0.105" debug="0" />
<!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"> --> <Engine jvmRoute="tomcat2" name="Standalone" defaultHost="192.168.0.105" debug="0" />
有的文档写得是在配置中加入一行<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0"></Engine>,其实是不对的,这样负载均衡是没有问题的,但是不能做session绑定,也就是说同一用户会在两台服务器上跳来跳去。这是由于jvmRoute不正确引起的,因为如果只是加入一行的话,是没有什么作用的,Engine仍然是原来的 Engine,而原来的Engine中jvmRoute是不正确的,所以一定要替换。而且这个jvmRoute一定要跟 workers.properties 中的名称完全匹配,否则也不能实现session绑定.
2.3.1.2 修改 <Cluster /> 标签
将<Cluster />标签注释去掉,代码如下:
可以在\webapps\docs 下找到 cluster-howto.html 把里面的代码COPY进去。
6.测试访问是否互通
访问 http:172.16.116.1/index.jsp看是否能均衡的分配到两台tomcat服务器上.(可以看出,tomcat版本不同)