注:该文章部分来自网络,如有侵权请联系!
一、前期准备
集群使用软件版本,如下表所示:
名称 | 版本 |
Apache http server | httpd-2.2.17-win32-x86-no_ssl.msi |
tomcat | tomcat-6.0.18 |
jdk | jdk1.6.0_21 |
二、集群的必要性
为了解决单台服务器在长时间、大数据的情况下出现性能瓶颈,严重会导致服务器宕机等问题,简单说就是为了解决单台tomcat服务器负载能力,使得用户在节省成本的情况下,满足自己的业务需求。
三、集群逻辑架构
如下图-1所示
图-1
四、部署tomcat集群
准备两个版本一致的tomcat,分别起名为tomcat.work2,tomcat.work3,准备两台服务器IP分别为如下表所示:
IP | 功能 |
10.168.1.193 | 部署Apache http server 、tomcat.worker2 |
10.168.1.194 | 部署tomcat.worker3 |
4.1、安装apache server
首先去apache官方下载apache server,网址:http://httpd.apache.org/ (安装步骤详细见另外一篇Apache安装图解),再次不详细叙述,安装完成之后访问地址:http://127.0.0.1 ,看是否能正常访问,本机(10.168.1.193)测试访问成功页面如下图-2所示,(可以在后面添加上端口号,端口号查看apache server安装目录下的conf目录下的httpd.conf配置文件的Listen端口,本机为80,所以访问http://127.0.0.1:80也是一样的结果页面)
图-2
4.2、JDK配置(此处略)
JDK配置请参考 http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
注:两台机器都要配置
4.3、tomcat配置
Tomcat配置环境变量请参考
http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html
两个tomcat分别命名为tomcat.worker2 和tomcat.worker3
4.3.1、tomcat.work2配置如下:
找到conf目录下的server.xml配置文件
(1)、配置http监听端口,这里的端口为8079,该步骤非必要,只要不冲突就行了,如下所示代码片段
<Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
(2)、配置AJP监听端口,这里端口设为8077,该步骤非必要,只要不冲突就行了,如下所示代码片段
<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />
(3)、配置服务器标示,这里标示名为:work2,添加jvmRoute=“worker2”,该步骤必须
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
在Engine节点启用集群配置,只需去掉Cluster节点前的注释就行了,该步骤必须,配置了集群才能实现Session复制,如果只有一个集群,只按我下边的配置就行了,如果多个集群,则不能按此配置,tomcat服务器内的帮助文档/docs/cluster-howto.html,/docs/config/cluster.html有介绍,需要的可以参考下。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
要实现session复制,还需要在context.xml添加属性distributable="true",如下:
<Context distributable="true">
如果不想在context.xml中添加distributable="true",还有另一方法是在应用程序的web.xml中添加<distributeable/>,不过这方法我没有测试。
配置完成,访问地址为:http://127.0.0.1:8079
4.3.2、tomcat.work3配置如下:
<Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
context.xml配置tomcat.worker2一样。(此处一定要记得更改)
配置完成,访问地址为:http://127.0.0.1:8078
注意:如果两个tomcat是放在同一台机内,server.xml可能还需要修改其它端口,请确认两个tomcat能正常启动。
4.4、不是test实例
在tomcat.worker2和tomcat.worker3的webapps文件夹添加同样的测试文件test /test.jsp
<html>
<head>
<title>helloapp</title>
</head>
<body>
<%
System.out.println("call test.jsp");
%>
SessionID:
<%=session.getId() %>
</body>
</html>
分别启动worker2和worker3(tomcat安装目录的bin目录下startup.bat)
访问http://127.0.0.1:8078/test/test.jsp和http://127.0.0.1:8079/test/test.jsp,确保能成功访问。
如下图-3是worker2访问成功!
图-3
如下图-4所示表示worker3访问成功!
图-4
4.5、JK方式tomcat集群
4.5.1、下载mod_jk-1.2.31-httpd-2.2.3.so,请下载合适的mod_jk版本,改名为mod_jk.so放进modules文件夹内,如下图-5所示:
图-5
4.5.2、修改conf/httpd.conf配置,如下代码所示以及如-6所示:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount /*.do loadbalancer
JkMount /*.jsp loadbalancer
图-6
4.5.3、增加conf/workers.properties文件,添加内容如下代码所示,以及图-7所示
worker.list=loadbalancer
worker.worker2.port=8077 #ajp的监听端口
worker.worker2.host=127.0.0.1
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker3.port=9009
worker.worker3.host=10.168.1.194
worker.worker3.type=ajp13
worker.worker3.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker2,worker3 #这里在的worker2、worker3为需要与上边tomcat设置的别名一致
worker.loadbalancer.sticky_session=1
图-7
配置完成任务,restart重启apache server服务(重启在桌面右下角下图标处点击弹出框),如下图-8所示:
图-8
访问http://127.0.0.1:80/test/test.jsp,检查是否能正常访问!
如下图-9,一次访问!(表示访问worker2成功!)
图-9
如下图-10第二次访问!(表示访问worker3成功!)
图-10
至此采用jk方式tomcat集群部署完成!