`
Luob.
  • 浏览: 1592606 次
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat集群---Cluster节点配置

阅读更多
修改 web 项目中web.xml 添加如下
<distributable/>



修改 tomcat/conf/server.xml
<!-- 
    Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点.
    className 表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递.
    channelSendOptions可以设置为2、4、8、10,每个数字代表一种方式
    2 = Channel.SEND_OPTIONS_USE_ACK(确认发送)
    4 = Channel.SEND_OPTIONS_SYNCHRONIZED_ACK(同步发送) 
    8 = Channel.SEND_OPTIONS_ASYNCHRONOUS(异步发送)
    在异步模式下,可以通过加上确认发送(Acknowledge)来提高可靠性,此时channelSendOptions设为10
-->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
    <!--
        Manager决定如何管理集群的Session信息。Tomcat提供了两种Manager:BackupManager和DeltaManager
        BackupManager-集群下的所有Session,将放到一个备份节点。集群下的所有节点都可以访问此备份节点
        DeltaManager-集群下某一节点生成、改动的Session,将复制到其他节点。
        DeltaManager是Tomcat默认的集群Manager,能满足一般的开发需求
        使用DeltaManager,每个节点部署的应用要一样;使用BackupManager,每个节点部署的应用可以不一样.

        className-指定实现org.apache.catalina.ha.ClusterManager接口的类,信息之间的管理.
        expireSessionsOnShutdown-设置为true时,一个节点关闭,将导致集群下的所有Session失效
        notifyListenersOnReplication-集群下节点间的Session复制、删除操作,是否通知session listeners
        maxInactiveInterval-集群下Session的有效时间(单位:s)。
        maxInactiveInterval内未活动的Session,将被Tomcat回收。默认值为1800(30min)
    -->
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
             expireSessionsOnShutdown="false"
             notifyListenersOnReplication="true"/>

    <!--
        Channel是Tomcat节点之间进行通讯的工具。
        Channel包括5个组件:Membership、Receiver、Sender、Transport、Interceptor
    -->
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
         <!--
            Membership维护集群的可用节点列表。它可以检查到新增的节点,也可以检查到没有心跳的节点
            className-指定Membership使用的类
            address-组播地址
            port-组播端口
            frequency-发送心跳(向组播地址发送UDP数据包)的时间间隔(单位:ms)。默认值为500
            dropTime-Membership在dropTime(单位:ms)内未收到某一节点的心跳,则将该节点从可用节点列表删除。默认值为3000

            注: 组播(Multicast):一个发送者和多个接收者之间实现一对多的网络连接。
                一个发送者同时给多个接收者传输相同的数据,只需复制一份相同的数据包。
                它提高了数据传送效率,减少了骨干网络出现拥塞的可能性
                相同组播地址、端口的Tomcat节点,可以组成集群下的子集群
         -->
        <Membership className="org.apache.catalina.tribes.membership.McastService"
                    address="228.0.0.4"
                    port="45564"
                    frequency="500"
                    dropTime="3000"/>

        <!--
            Receiver : 接收器,负责接收消息
            接收器分为两种:BioReceiver(阻塞式)、NioReceiver(非阻塞式)

            className-指定Receiver使用的类
            address-接收消息的地址
            port-接收消息的端口
            autoBind-端口的变化区间
            如果port为4000,autoBind为100,接收器将在4000-4099间取一个端口,进行监听
            selectorTimeout-NioReceiver内轮询的超时时间
            maxThreads-线程池的最大线程数
        -->
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                  address="auto"
                  port="4000"
                  autoBind="100"
                  selectorTimeout="5000"
                  maxThreads="6"/>

        <!--
            Sender : 发送器,负责发送消息
            Sender内嵌了Transport组件,Transport真正负责发送消息
        -->
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
            <!--
                Transport分为两种:bio.PooledMultiSender(阻塞式)、nio.PooledParallelSender(非阻塞式) 
            -->
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
        </Sender>

        <!--
            Interceptor : Cluster的拦截器
            TcpFailureDetector-网络、系统比较繁忙时,Membership可能无法及时更新可用节点列表,
            此时TcpFailureDetector可以拦截到某个节点关闭的信息,
            并尝试通过TCP连接到此节点,以确保此节点真正关闭,从而更新集群可以用节点列表                 
        -->
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

        <!--
            MessageDispatch15Interceptor-查看Cluster组件发送消息的方式是否设置为
            Channel.SEND_OPTIONS_ASYNCHRONOUS(Cluster标签下的channelSendOptions为8时)。
            设置为Channel.SEND_OPTIONS_ASYNCHRONOUS时,
            MessageDispatch15Interceptor先将等待发送的消息进行排队,然后将排好队的消息转给Sender
        -->
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel>

    <!--
        Valve : 可以理解为Tomcat的拦截器
        ReplicationValve-在处理请求前后打日志;过滤不涉及Session变化的请求                   
        vmRouteBinderValve-Apache的mod_jk发生错误时,保证同一客户端的请求发送到集群的同一个节点
    -->
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

    <!--
        Deployer : 同步集群下所有节点的一致性。Deployer没试验成功过。。。
     -->
     <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                   tempDir="/tmp/war-temp/"
                   deployDir="/tmp/war-deploy/"
                   watchDir="/tmp/war-listen/"
                   watchEnabled="true"/>
    <!--
        ClusterListener : 监听器,监听Cluster组件接收的消息
        使用DeltaManager时,Cluster接收的信息通过ClusterSessionListener传递给DeltaManager
    -->
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

分享到:
评论

相关推荐

    tomcat9+tomcat-cluster-redis-session-manager_4.0.zip

    Tomcat Cluster Redis Session Manager是一个插件,它允许Tomcat集群中的各个节点共享和同步Session信息,确保用户在集群中的任何服务器上都能保持登录状态。 集成Tomcat集群和Redis Session Manager的过程大致如下...

    tomcat--Cluster.rar_cluster_tomcat_tomcat Clust

    本资料附带的`Cluster.docx`文档,详细介绍了配置Tomcat集群的每一步骤,包括各个配置文件的修改,以及可能出现的问题和解决方法。文档中还包含了实际操作过程中的注意事项,旨在帮助读者快速理解和实践Tomcat集群...

    apache-tomcat-8.5.55.zip 集成 tomcat-cluster-redis-session-manager 4.0

    这个集成意味着Tomcat已经配置了使用Redis作为会话管理器的集群解决方案。 会话管理是Web应用程序中的关键部分,它允许服务器跟踪用户在网站上的活动。默认情况下,Tomcat使用内存中的会话管理器,但这种方式在...

    tomcat-redis-session-manager

    此外,为了确保高可用性,可以考虑在Redis集群上运行`tomcat-redis-session-manager`,这样即使某个Redis节点故障,session数据也不会丢失,服务仍能正常运行。 总的来说,`tomcat-redis-session-manager`是应对...

    tomcat集群配置

    【标题】:“Tomcat集群配置” 在Web应用的高可用性和可扩展性需求日益增长的今天,Tomcat集群成为了一个重要的解决方案。Tomcat集群能够通过负载均衡和故障转移来提高服务的稳定性和性能。以下是对Tomcat集群配置...

    redis-tomcat8以上集群所需要的jar :tomcat-redis-session-manager-master 等

    配置完成后,启动Tomcat集群,每个节点都会使用Redis作为Session存储。当一个用户在集群中的任一节点创建Session后,该Session信息会被持久化到Redis中。其他节点在处理同一用户的请求时,能够从Redis中获取并使用该...

    tomcat集群配置 程序以及文档

    本资料包包含了“tomcat集群配置”的程序及文档,提供了现成的例子,帮助我们理解和实践Tomcat集群的搭建与管理。 首先,我们需要了解Tomcat集群的基本概念。集群是指多个Tomcat实例协同工作,它们共享相同的会话...

    tomcat7 集群配置

    Tomcat7 集群配置 Tomcat7 集群配置是指将多个 Tomcat 服务器组合成一个集群,以提高系统的可用性和可扩展性。在这个配置中,Session 复制机制是一个非常重要的部分,它可以确保在集群中的每个节点都可以访问到同一...

    tomcat集群配置文件

    当我们谈论“tomcat集群配置文件”时,我们指的是将多个Tomcat实例组织成一个集群,以提高应用程序的可用性和可伸缩性。在集群环境中,负载均衡、故障转移和资源共享是关键特性。 首先,要配置Tomcat集群,你需要...

    tomcat集群配置和配置软件

    本篇文章将深入探讨如何配置Tomcat集群以及涉及到的相关软件。 **一、Tomcat集群的基本概念** Tomcat集群是指多个Tomcat实例协同工作,通过负载均衡来分发请求,提高系统的处理能力和可靠性。每个Tomcat实例被称为...

    轻松配置linux Tomcat集群 PDF

    本篇内容将详细探讨如何在Linux环境中配置Tomcat集群,以提高系统的可用性和性能。 一、Linux基础 在开始配置之前,需要对Linux操作系统有一定的了解。熟悉基本的命令行操作,如文件管理、用户权限、网络设置等,这...

    tomcat集群优化详细配置

    【Tomcat集群优化详细配置】 在IT行业中,服务器性能优化是一项关键任务,特别是在高并发、大规模用户访问的场景下。Tomcat,作为广泛使用的Java应用服务器,常常需要通过集群部署来提升系统的可用性和可伸缩性。...

    Tomcat集群配置,实现session共享

    Cluster节点配置 在`server.xml`文件中,`&lt;Cluster&gt;`节点配置如下: ```xml &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&gt; ``` 这里的`SimpleTcpCluster`是一个基本的TCP集群实现,它提供了...

    tomcat cluster 集群 session复制

    而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里, 比如有六个Tomcat实例 Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6 是可以配置成 三组互相复制...

    基于Xen虚拟机实现Apache tomcat 集群搭建

    8. Session同步:在多节点的Tomcat集群中,需要有一种机制来保证用户会话的一致性。本文介绍了如何配置Tomcat集群实现session的同步。 9. 负载均衡集群配置:负载均衡是将进入的网络流量分散到多个服务器上,以提高...

    tomcat8-session共享

    6. **测试与优化**:启动Tomcat集群并进行测试,确保Session在不同服务器间能正确共享。根据实际需求,可能还需要调整Session超时时间、故障转移策略等。 通过这种方式,我们可以实现Tomcat8在集群环境下的Session...

    redis+tomcat集群配置session共享

    本篇文章将详细探讨如何在Redis+Tomcat集群配置中实现Session共享。 首先,我们需要理解什么是Session。Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器...

    Tomcat 集群配置

    4. **通信机制**:Tomcat集群内的节点间需要通信,通常通过TCP/IP协议实现,这需要在`server.xml`中配置`BackChannel`。 5. **一致性哈希**:对于大型应用,可以使用一致性哈希策略,使得特定请求总是被定向到同一...

Global site tag (gtag.js) - Google Analytics