zoukankan      html  css  js  c++  java
  • Tomcat:基于Apache+Tomcat的集群搭建

    根据Tomcat的官方文档说明可以知道,使用Tomcat配置集群需要与其它Web Server配合使用才可以完成,典型的有Apache和IIS。

           这里就使用Apache+Tomcat方式来完成基于Tomcat在集群配置。

    软件准备

    1)Apache HTTP Server:

    使用百度搜索httpd-2.2.25-win32-x86-no_ssl.msi,应该可以找到很多相关的下载链接。这里也提供一个:http://vdisk.weibo.com/s/C3trk_uGGkrmc

    2)Tomcat 7:

    Tomcat7下载链接:http://tomcat.apache.org/download-70.cgi

    3)Tomcat 连接器——JK:

    http://mirrors.cnnic.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/

     

    打开连接后下载版本:tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip

    集群设计

    下面是一个集群设计架构图:

     

    如果是使用WebLogic或者是使用Glassfish等服务器,只需要根据相关说明做出相关配置即可。但是不论使用什么服务器,架构都是上面这样的。

    Tomcat是单实例的,也就是说一个Tomcat只能作为一个Server来使用。

    Tomcat Connector

    Connector的作用:将不同协议的请求引渡到Tomcat 的Web Container中。Tomcat中现在可以处理的请求根据协议可以分为:HTTP、AJP,其中HTTP请求又可以包括APR方式的HTTP请求。

    相关参考文档:

    http://tomcat.apache.org/connectors-doc/reference/apache.html

    另外配方中的配置,都可以在这样链接下找到。

    JK

    JK 其实是一个Tomcat Connector。Apache、IIS 是不支持jsp/servlet处理功能的Web Server,使用了JK就可以将jsp/Serverlt请求过渡到Tomcat中,让Tomcat来处理。

    集群搭建

    下面就来说说如何搭建基于Apache +Tomcat的集群环境。

    Apache Server充当LB服务器的角色,其它的Tomcat实例充当Server的角色。按照下面的步骤操作进行,就可以快速的搭起了:

    1)安装Apache Server

    软件安装不用说明了,和其它的软件安装方式相同。

    2)安装tomcat

    解压即可,然后再拷贝一份放到磁盘上。这就是两个Tomcat了。

    3)在apache Server中添加jk模块

    解压之前下载的jk,将mod_jk.so放到Apache Server的modules目录下。

    4)配置work.properties和uriworkmap.properties

    work.properties如下:

    worker.list=controller,s1,s2
    
    worker.s1.type=ajp13
    worker.s1.port=8009
    worker.s1.host=localhost
    worker.s1.lbfactor=1
    
    worker.s2.type=ajp13
    worker.s2.port=9009
    worker.s2.lbfactor=1
    worker.s2.host=localhost
    
    worker.controller.type=lb
    worker.controller.balanced_workers=s1,s2
    worker.controller.sticky_session=false

    配置了3个Worker,其中controller代表LB服务器。s1,s2代表两个tomcat server。配置说明:

     uriworkermap.properties 如下:

    /*=controller

    然后将这两个文件放到Apache Server的conf目录下。这个其实并没有规定放到哪里。 

    另外:

    worker.properties如何配置,可以参考文档:

    http://tomcat.apache.org/connectors-doc/reference/workers.html

    uriworkermap.properties 如何配置,可以参考文档:

    http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html

    5)在apache server下配置mod_jk.conf

    Mod_jk.conf内容如下:

    # Load mod_jk module 
    LoadModule jk_module modules/mod_jk.so 
    # Where to find workers.properties 
    JkWorkersFile conf/workers.properties 
    JkMountFile conf/uriworkermap.properties
    # Where to put jk logs 
    JkLogFile logs/mod_jk.log 
    # Set the jk log level [debug/error/info] 
    JkLogLevel info 
    # Select the log format 
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
    # JkOptions indicate to send SSL KEY SIZE, 
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
    # JkRequestLogFormat set the request format 
    JkRequestLogFormat "%w %V %T" 
    # Send servlet for context /examples to worker named ajp13 
    #JkMount /servlet/* controller 
    # Send JSPs for context /examples to worker named ajp13 
    #JkMount /* controller

    配置完毕后,将文件放到Apache Server的conf目录下。 

    6)配置httpd.conf,引入JK

    打开Apache Server的conf目录下的httpd.conf文件,在最后加入:

    Include conf/mod_jk.conf

     这个配置,就是让Apache Server启动时,加载mod_jk的。

    7)将tomcat配置为集群实例

    Tomcat作为集群实例时,可以是在不同的机器上的,也可以在相同的机器上的,只要配置对了host和port就可以的。我这里配置的是在同一台机器上的。

     下面就是这两个tomcat的端口的配置:

    Tomcat

    S1 port

    S2 port

    Connector HTTP/1.1

    8001

    9001

    Connector AJP/1.3

    8009

    9009

    然后配置如下:

    为<Engine name="Catalina" defaultHost="localhost" >添加jvmRoute,变为:

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

    去掉<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>前后的注释。

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

    ….

    </Engine>

    配置完成后如图:

    S1:

     

    S2:

     

    到此集群就搭建好了。

    在集群环境下访问应用

    1)创建Web应用ClusterTest

    添加index.jsp:

    <body>
    Hello, index.jsp<br>
    
    <%=session.getId()%>
    <%=request.getLocalName()%>
    <%=request.getLocalPort()%>
    </body>

    配置web.xml为: 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>ClusterTest</display-name>
      
      <distributable/>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    使用Eclipse导出为war文件ClusterTest.war。 

    2) 部署web应用

    将ClusterTest.war放到两个tomcat的webapps目录下。

    3)启动集群:

    按顺序启动ApacheServer、Tomcat(S1)、Tomcat(S2)。

    4)浏览器访问web应用。

    输入链接:http://localhost/ClusterTest即可:

     

    可以看到sessionId(点号前面那一段),主机名称,请求的端口号。其中点号后面的表示是处理请求的Server名称。不断的刷新浏览器,seesionId是一样的,只是server名称不同。

    也可以直接使用浏览器访问S1或者S2:

     

    其实使用Apache+Tomcat有3种方案,参考: http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

    如果想使用IIS+Tomcat配置集群,可以参考:http://tomcat.apache.org/connectors-doc/reference/iis.html

  • 相关阅读:
    NIST SIEM IR RISK
    Django 部署时得到 Bad Request (400)(DEBUG = False)
    MongoDB入门-插入文档
    MongoDB入门-MongoDB的基本操作
    MongoDB入门-Windows操作系统中将Mongodb设置为系统服务
    MongoDB入门-Windows操作系统中Mongodb数据库的安装部署
    Nginx反向代理功能-实现动静分离
    Nginx反向代理功能-使用upstream指令反向代理多台web服务器案例
    Nginx反向代理功能-添加头部报文信息
    Nginx反向代理功能-缓存功能
  • 原文地址:https://www.cnblogs.com/f1194361820/p/4280351.html
Copyright © 2011-2022 走看看