`
sbl2255
  • 浏览: 216413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat Cluster 转

 
阅读更多
<!-- 
    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="false"/>
    <!--
        ClusterListener : 监听器,监听Cluster组件接收的消息
        使用DeltaManager时,Cluster接收的信息通过ClusterSessionListener传递给DeltaManager
    -->
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

 

分享到:
评论

相关推荐

    tomcat Cluster

    【标题】:“Tomcat Cluster” 在Java应用服务器领域,Tomcat是广泛使用的开源Servlet容器,而Tomcat Cluster则是在单一Tomcat服务器的基础上实现高可用性和负载均衡的一种技术。集群(Cluster)是通过将多个独立的...

    tomcat cluster 集群 session复制

    http://618119.com/docs/Tomcat/TomcatCluster.zip 下载解压到Tomcat(例如D:\Java\apache-tomcat-6.0.14)目录里,运行对应的bat文件即可: start15080.bat start16080.bat start17080.bat start18080.bat start...

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

    "tomcat9+tomcat-cluster-redis-session-manager_4.0.zip"这个文件组合涉及到的是在Tomcat 9上实现负载均衡以及使用Redis作为Session管理器的高级配置。 首先,Tomcat 9是Apache Tomcat服务器的一个版本,它是Java ...

    tomcat cluster参考资料3

    【标题】:“Tomcat集群(Cluster)参考资料3” 在Java Web开发中,Apache Tomcat作为一款广泛应用的开源Servlet容器,其集群(Cluster)功能对于处理高并发、提供高可用性和负载均衡至关重要。Tomcat Cluster是...

    tomcat7-cluster

    tomcat7 的集群session共享 案例 亲测可用 无效联系我:351137017

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

    在这个特定的压缩包"apache-tomcat-8.5.55.zip"中,我们看到它已经集成了 "tomcat-cluster-redis-session-manager 4.0"。这个集成意味着Tomcat已经配置了使用Redis作为会话管理器的集群解决方案。 会话管理是Web...

    tomcat-cluster-redis-session-manager.zip

    nginx做请求转发,服务器tomcat解决session不同步问题;步骤:1、解压之后,将jar包放入tomcat的lib中(注意是tomcat/lib中,不是我们自己项目的lib);2、配置解压之后的redis-data-cache.properties(根据你的...

    Tomcat 8+ redis cluster session

    【标题】:“Tomcat 8+ Redis Cluster Session” 在现代Web应用开发中,session管理是不可或缺的一部分,尤其是在分布式系统中。传统的session管理方式在多台服务器之间存在数据同步问题,导致用户状态无法共享,...

    tomcat_cluster

    网站架构是,通过一个apache+多个tomcat和mysql的结 构。client的安装脚本。

    tomcat apache cluster 脚本

    ### Tomcat Apache Cluster 脚本知识点解析 #### 一、Tomcat与Apache集群配置概述 在企业级应用环境中,为了提升系统的可用性、可扩展性和性能,常常需要对服务器进行集群部署。其中,Apache与Tomcat的组合是一种...

    tomcat--Cluster.rar_cluster_tomcat_tomcat Clust

    2. **配置集群通信**: 修改每个Tomcat实例的`server.xml`,添加`Cluster`元素,指定通信器(如`TcpCluster`)和session复制策略。 ```xml &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"&gt; ...

    nginx+ tomcat + redis-cluster 实现session同步所需的jar包

    这里我们将深入探讨如何使用Nginx、Tomcat和Redis-Cluster来实现Session同步,以及涉及到的jar包的作用。 首先,让我们了解每个组件的角色: 1. **Nginx**:通常作为反向代理和负载均衡器,它接收来自客户端的请求...

    tomcat-cluster-redis-session-manager:Tomcat集群Redis会话管理器Java客户端

    在这里,会话被实现为非粘性的(意味着,每个请求都可以转到集群中的任何服务器,这与Apache提供的Tomcat集群设置不同。) 请求会话将立即存储到Redis中(会话属性必须是可序列化的),以供其他服务器使用。 当...

    tomcat-cluster-session-sync-exp:tomcat使用了自带会话同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在的反序列化漏洞,通过精心构造的数据包,可以对使用了tomcat自带会话同步功能的服务器进行攻击。

    tomcat cluster sync-session利用exp 这是一个tomcat使用了自带会话同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在的反序列化漏洞,通过精心构造的数据包,可以对使用了tomcat自带会话同步功能的...

    Tomcat集群Cluster实现原理剖析.doc

    Tomcat集群Cluster实现原理剖析.doc

    tomcat 集群配置

    apache + tomcat 集群配置,实现了,负载均衡,session复制。

    tomcat7集群

    4. **故障转移**:当某个Tomcat实例出现问题时,负载均衡器应能检测到并停止向该实例发送新的请求,转而将流量导向其他健康的实例。Nginx可以通过health_check模块来实现这一功能。 5. **应用和数据一致性**:在...

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

    基于Xen虚拟机实现Apache Tomcat集群搭建的知识点如下: 1. Xen虚拟机技术:Xen是一个开源的虚拟机监视器,允许用户在同一台物理主机上运行多个虚拟机,每个虚拟机可以运行不同的操作系统。Xen具有高性能和高扩展性...

Global site tag (gtag.js) - Google Analytics