您的位置:首页 > 运维架构 > Tomcat

Apache tomcat集群实现

2014-04-07 22:41 351 查看
注:该文章部分来自网络,如有侵权请联系!
一、前期准备
      集群使用软件版本,如下表所示:   

名称

版本

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集群部署完成!

 

 

  

 

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息