zoukankan      html  css  js  c++  java
  • apache 管理tomcat集群

    准备相关软件

    下载安装Apache2.2.4

    Apache下载地址:http://archive.apache.org/dist/httpd/binaries/win32/,选择下载windows平台安装包文件apache_2.2.4-win32-x86-no_ssl.msi

                           

    接受安装协议

    配置Apache服务器信息

    Network Domain设置站点名称,这个不会对实际站点产生影响。

    Server Name设置当前服务器名称,这个不会对实际站点产生影响。

    Administrator’s Email Address设置站点管理员邮件地址,Apache文档说明当站点出错时的页面底部会出现该地址。

    选择安装类型

    一般选择典型(Typical)安装

    选择安装路径

    这里使用默认安装路径,实际安装过程可以选择其他路径。

    等待安装过程

    安装完毕

    下载Tomcat6.0

    下载Tomcat Connector(jk.1.2.6)

    Tomcat Connector下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/

    此处注意一定要下载与Apache版本匹配的jk。jk文件名后半部分名称反应Apache的版本,如:mod_jk-1.2.26-httpd-2.2.4.so其匹配的Apache为2.2.4,与本次安装的Apache版本一致。

    单台主机单站点集群、负载均衡

    Apache配置

    将Tomcat Connector文件mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录Apache2.2\modules下。

    在Apache安装目录找到conf/httpd.conf文件,在末尾增加一下内容

             
       
       

    #以下为tomcat集成配置部分

       

    LoadModule jk_module     modules/mod_jk-1.2.26-httpd-2.2.4.so

       

    JkWorkersFile conf/workers.properties

       

    JkMount /* lbcontroller  #此处是指定分配给tomcat的请求 例如*.do *.jsp

           

    #  找到 下面配置,将默认目录文件index.html改为login.jsp(根据工程的实际情况)

       

    <IfModule dir_module>

       

            DirectoryIndex login.jsp

       

    </IfModule>

       
       

         

    Tomcat Connector配置

    在Apache配置目录Apache2.2\conf创建workers.properties配置文件,该文件主要用于配置Apache与Tomcat的集成要用到的Tomcat实例和负载均衡分发控制器。

    Workers.properties文件放置一下内容;

             
       
       

    #下面是分发控制器     注意不要放tomcat实例

       

    worker.list=lbcontroller

           

    #Tomcat1实例配置     这里要和Tomcat配置文件Service.xml的jvmRoute保持一致

       

    worker.tomcat1.host=127.0.0.1

       

    worker.tomcat1.port=8009

       

    worker.tomcat1.type=ajp13

       

    #分发权重     值越大负载越大

       

    worker.tomcat1.lbfactor = 1

           

    #Tomcat2实例配置

       

    worker.tomcat2.host=127.0.0.1

       

    worker.tomcat2.port=9009

       

    worker.tomcat2.type=ajp13

       

    #分发权重     值越大负载越大

       

    worker.tomcat2.lbfactor = 1

           

    #负载均衡分发控制器

       

    worker.lbcontroller.type=lb

       

    worker.lbcontroller.balance_workers=tomcat1,tomcat2

       
       

         

    Tomcat配置

    Tomcat配置文件Service.xml主要注意两个地方,一个是Engine节点需要增加节点标识jvmRoute,一个是将原本注释掉的Session复制节点改为有效。具体如下:

    <!-- Define the top level container in our container hierarchy -->

    <!--jvmRoute在各个Tomcat配置中不能重复且要与worker.properties文件中的名称一致-->

    <Engine name="Catalina" defaultHost=" saas "  jvmRoute=" tomcat1">

    <!—每个Tomcat的Hostname必须一样à

    <Host name="saas" appBase="webapps "

           unpackWARs="true" autoDeploy="true"

           xmlValidation="false" xmlNamespaceAware="false">

    这里省略N多注释

    将下面的注释变去掉(如果需要做session复制需做以下操作)

    <!--

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

        

                  <Valve className="org.apache.catalina.valves.RequestDumperValve"/>

    -->

    增加:

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

                     channelSendOptions="8">  

              <Manager className="org.apache.catalina.ha.session.DeltaManager" 

                       expireSessionsOnShutdown="false" 

                       notifyListenersOnReplication="true"/>  

              <Channel className="org.apache.catalina.tribes.group.GroupChannel">  

                <Membership className="org.apache.catalina.tribes.membership.McastService" 

                            address="228.0.0.4" 

                            port="45564" 

                            frequency="500" 

                            dropTime="3000"/>  

                <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 

                          address="auto" 

                          port="4000" 

                          autoBind="100" 

                          selectorTimeout="5000" 

                          maxThreads="6"/>  

                <!-- timeout="60000"-->  

                <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  

                  <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />  

                </Sender>  

                <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  

                <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>  

             <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>  

              </Channel>  

              <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 

                     filter=""/>  

              <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>  

              <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 

                        tempDir="/tmp/war-temp/" 

                        deployDir="/tmp/war-deploy/" 

                        watchDir="/tmp/war-listen/" 

                        watchEnabled="false"/>  

              <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>  

              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  

            </Cluster>

    <!—Host节点增加一下内容表示站点根路径-->

            <Context path="/sc" docBase="." privileged="true"/>

    我们分别将两个Tomcat配置文件中的jvmRoute设置为tomcat1、tomcat2,Server节点 端口分别配置为8005和9005, Connector节点端口分别配置为8080和9090,AJPConnector端口分别配置为8009和9009,Connector端口配置参照单主机多站点场景。请注意两个Tomcat配置文件Host节点的域名配置必须一样,Server.xml中的jvmRoute名称必须和worker.properties中的tomcat实例名称一致,不然无法实现session_stricky。

    Host节点的域名配置方法:修改C:\WINDOWS\system32\drivers\etc 下的 hosts文件增加一行

    127.0.0.1       saas

    *****************************************************************************

     如果需要实现session 复制 需要在web.xml 中加上<distributable/>

    <?xml version="1.0" encoding="ISO-8859-1"?>

    省略N多代码。。。。。。

        <welcome-file-list>

            <welcome-file>index.html</welcome-file>

            <welcome-file>index.htm</welcome-file>

            <welcome-file>index.jsp</welcome-file>

        </welcome-file-list>

    <distributable/>

    </web-app>

    *****************************************************************************

          

    常见问题

    修改Host文件将bbs.abc.com解析到本机。打开两个IE窗口分别提交session操作,然后在控制台观察效果。

    正常情况为;同一个IE窗口的所有请求都分发到同一个Tomcat,当关闭其中一个Tomcat时,IE窗口重新请求会分发到另一个Tomat并且Session保持同步。

    如果没有达到预期效果请检查一下几点;

    • Apache配置文件中DirectoryIndex配置的文件是否存在tomcat应用的目录下
    • Apache配置文件中JkMount是否分发到负责均衡控制器
    • 两个Tomcat端口是否有重复,
    • Worker.properties中tomcat端口是否和对应server.xmlAJPConnector端口一致
    • Server.xml配置文件的Host节点name属性是否一致
    • Server.xml配置文件的Engine节点是否配置jvnRoute,并且与worker.properties配置的名称保持一致
    • Server.xmlHost节点内的Cluster节点是否设置为有效

    第二种方法,比较简单

    目标:
    使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求:
    1、  Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。
    2、  为系统设定 Session 超时时间,包括 Apache 和 tomcat
    3、  为系统屏蔽文件列表,包括 Apache 和 tomcat
    注:本例程以一台机器为例子,即同一台机器上装一个apache和4个Tomcat。
    一、前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本)
    APAHCE 2.2.4

    TOMCAT6.0
    二、安装过程
    APAHCE安装目录:D:\Apache。
    四个TOMCAT目录:自行解压到(D:\Tomcat集群服务器\)下。分别为 tomcat6.0,tomcat6.01,tomcat6.02,tomcat6.03
    这几个安装过程就不详细说明了。
    三、配置
    1、Apache配置
    1.1、httpd.conf配置
    修改APACHE的配置文件D:\Apache \conf\httpd.conf
    将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。 建议直接复制 粘贴到最底部
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so


    再找到<IfModule dir_module></IfModule>加上index.jsp修改成
    <IfModule dir_module>
    DirectoryIndex index.html index.jsp
    </IfModule>
    1.1.1、  在最下面加入
    ProxyRequests Off

    #ProxyPass /cluster balancer://test/ stickysession=JSESSIONID

     <Proxy balancer://cluster/>

     BalancerMember ajp://localhost:8009  route=jvm1 loadfactor=1 keepalive=On

     BalancerMember ajp://localhost:9009 route=jvm2 loadfactor=1 keepalive=On

     </Proxy>

    上面的四个BalancerMember成员是我们配置的tomcat集群。后面会说明的。
    1.2、httpd-vhosts.conf设置
    接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下:
    首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)
    把注释去掉。
    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    在文件(extra/httpd-vhosts.conf)最下面加入
    <VirtualHost *:80>
             ServerAdmin [email]weijie@126.com[/email]
             ServerName localhost
             ServerAlias localhost
             ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
             ProxyPassReverse / balancer://cluster/
    </VirtualHost>
    其中的域名和路径根据你自己情况设置
    然后再设置TOMCAT虚拟主机
    2 配置 tomcat
    2.1.  配置 server 的关闭
    我们需要在一台机器上跑 4 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。其中tomcat6.0用默认值,不修改。其他三个修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 将:
    <Server port="8005" shutdown="SHUTDOWN">
    改为
    <Server port="XXXX" shutdown="SHUTDOWN">
    XXXX 在这里表示不同的端口:我的其它三个 tomcat 分别使用 9005,8006 , 9007  
    2.2. 配置 Engine
    把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm2".
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">        
    以下是原来的配置。
    <!-- <Engine name="Catalina" defaultHost="localhost">  -->
    其他(tomcat6.02和tomcat6.03)也要同样 配置。注意:jvmRoute配置不要一样。
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3"> 
    2.3. 配置 Connector
    原来的默认配置。
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。
    把其他三个tomcat的<Connector port="XXX" />port分别改成与上面

    注意 此端口 必须与 httpd.Conf 中相对应的 端口相同

    BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

    2.5.配置Cluster(每个tomcat中都要修改)
    原来的配置。
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    修改为以下的代码:<Receiver port=”XX”/>port也要保证唯一性。
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6">
    <Manager className="org.apache.catalina.ha.session.BackupManager"
    expireSessionsOnShutdown="false"
    notifyListenersOnReplication="true"
    mapSendOptions="6"/>
    <!--
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
    expireSessionsOnShutdown="false"
    notifyListenersOnReplication="true"/>
    -->
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
    address="228.0.0.4"
    port="45564"
    frequency="500"
    dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
    address="auto"
    port="5001"  #端口保持不能重复
    selectorTimeout="100"
    maxThreads="6"/>
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
    <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
    </Channel>
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
    filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
    tempDir="/tmp/war-temp/"
    deployDir="/tmp/war-deploy/"
    watchDir="/tmp/war-listen/"
    watchEnabled="false"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    </Cluster>
    这个设置是主要用以tomcat的集群。

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/cotty/p/2663507.html
Copyright © 2011-2022 走看看