zoukankan      html  css  js  c++  java
  • Tomcat群集配置

    下载 配置好的tomcat  地址

        http://liaomin789.javaeye.com/blog/670485

    这里tomcat5做集群比较容易 也容易成功,下面的的说明是要求你自己下载tomcat 自己配置集群

     

    大型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问题需要解决。

    一.Session的复制

    二.如何将请求发送到正常的服务器

    中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和相同的应用程序,并且他们的Session是相互复制的,这样,不管访问哪台服务器都具有相同的结果,即使一台服务器崩溃掉以后,可以由其他集群服务器继续负责应用程序的运行。


     

    Tomcat中如何配置群集

    我们假设有如下场景,一台负载均衡服务器负责请求的均衡,群集服务器A和群集服务器B组成一个群集,当某个群集服务器崩溃后,另外一台继续负责应用程序的运行。

    一.           配置Tomcat5.5.12群集服务器A

    修改Tomcat配置文件server.xml

    1.群集服务器A的端口号与B不冲突,即使Server Port,Connector,Coyote/JK2 AJP Connector的端口号唯一

    2.在Host元素下增加以下内容:

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

                     managerClassName="org.apache.catalina.cluster.session.DeltaManager"

                     expireSessionsOnShutdown="false"

                     useDirtyFlag="true"

                     notifyListenersOnReplication="true">

                      <!--每个群集服务器都需要有相同的Membership配置-->

                <Membership

                    className="org.apache.catalina.cluster.mcast.McastService"

                    mcastAddr="228.0.0.4"

                    mcastPort="45564"

                    mcastFrequency="500"

                    mcastDropTime="3000"/>

               <!--tcpListenAddress:本机IP地址 服务器将此地址广播给其他群集服务器-->

                <Receiver

                    className="org.apache.catalina.cluster.tcp.ReplicationListener"

                    tcpListenAddress="10.10.13.145"

                    tcpListenPort="4001"

                    tcpSelectorTimeout="100"

                    tcpThreadCount="6"/>

     

                <Sender

                    className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"

                    replicationMode="pooled"

                    ackTimeout="15000"

                    waitForAck="true"/>

     

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

                       filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>

                      

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

                          tempDir="/tmp/war-temp/"

                          deployDir="/tmp/war-deploy/"

                          watchDir="/tmp/war-listen/"

                          watchEnabled="false"/>

                         

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

            </Cluster>

     

    3.修改Web应用程序配置文件web.xml

    web.xml文件中<web-app>元素下增加以下内容:

    <!--此应用将与群集服务器复制Session-->

         <distributable/>

     

    二.           配置Tomcat5.5.12群集服务器B

    与群集服务器A配置基本相同,唯一不同的地方就是server.xml文件中

    <Receiver

                    className="org.apache.catalina.cluster.tcp.ReplicationListener"

                    tcpListenAddress="10.10.13.145"

                    tcpListenPort="4002"

                    tcpSelectorTimeout="100"

                    tcpThreadCount="6"/>

    tcpListenAddress应为本机地址,如果两台群集服务器在一台机器上,则端口号要不同

           注意:B的其他端口不要与A冲突。

    三.           群集服务器具体配置结果

    配置参数

    群集服务器 A

    群集服务器B

    Server Port

    9005

    10005

    Connector

    9080

    10080

    Coyote/JK2 AJP Connector

    9009

    10009

    Cluster mcastAddr

    228.0.0.4

    228.0.0.4

    Cluster mcastPort

    45564

    45564

    tcpListenAddress

    本机IP地址

    本机IP地址

    Cluster tcpListenPort

    4001

    4002

    Mcast* 用于广播,所有群集服务器需要填写相同的配置

    tcpListen* 本机的IP,群集服务器启动时,会将自己的IP和端口号广播出去,其他群集服务器收到后,响应广播发出者。

     

    四.           测试群集

    启动群集服务器A,再启动群集服务器B会显示群集服务器的信息,表示群集服务器配置成功

    五.           配置负载均衡服务器Apache2.2.3

    现在虽然群集已经有了相同的状态,但需要不同的IP地址才能访问到服务器AB,现在我们配置一台负载均衡服务器来实现统一的入口访问,和负载的均衡。

    下载Apache服务器2.2.3

    修改httpd.conf文件

    将以下Module的注释去掉

    LoadModule proxy_module modules/mod_proxy.so

    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

    LoadModule proxy_http_module modules/mod_proxy_http.so

     

    并增加以下元素

    ProxyRequests Off

     

    ProxyPass /helloworld balancer://mycluster stickysession=jsessionid nofailover=On

    <Proxy balancer://mycluster>

    BalancerMember http://10.10.13.145:9080

    BalancerMember http://10.10.13.145:10080 smax=1 loadfactor=20

    </Proxy>

     

     

    <Location /balancer-manager>

    SetHandler balancer-manager

     

    Order Deny,Allow

    Deny from all

    Allow from all

    </Location>

     

    <Location /server-status>

    SetHandler server-status

     

    Order Deny,Allow

    Deny from all

    Allow from all

    </Location>

     

    其中

    ProxyPass /helloworld balancer://mycluster stickysession=jsessionid nofailover=On

    <Proxy balancer://mycluster>

    BalancerMember http://10.10.13.145:9080

    BalancerMember http://10.10.13.145:10080 smax=1 loadfactor=20

    </Proxy>

    ProxyPass为代理转发的Url,即将所有访问/helloworld的请求转发到群集balancer://mycluster

    BalancerMember为群集的成员,即群集服务器AB,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember

     

    配置好后,启动Apahce服务器,访问localhost/hellworld就会看到群集服务器中应用返回的结果。恭喜你,负载均衡和群集已经配置成功了。

  • 相关阅读:
    LENGTH()和CHAR_LENGTH()区别
    使用ibatis时 sql中 in 的参数赋值(转)
    数据库类型空间效率探索(五)- decimal/float/double/varchar
    MySQL用命令行复制表的方法
    升讯威微信营销系统开发实践:微信接口的 .NET 封装
    Github开源:Sheng.RabbitMQ.CommandExecuter (RabbitMQ 的命令模式实现)
    开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统
    开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统
    GitHub开源:升讯威ADO.NET增强组件 sheng.ADO.NET.Plus V1.3
    [源代码] SailingEase .NET Resources Tool (.NET 多语言资源编辑器)
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331655.html
Copyright © 2011-2022 走看看