如何实现 集群化/Session 复制-doc(cluster-howto.html)
源文档链接: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
翻译日期: 2014年3月19日
翻译人员: 铁锚
感受: Tomcat 的这个集群有很多问题, 所以如果需要做分布式集群,最好使用无状态的应用程序,外加缓存系统。假如改造旧系统,那么也许可以参考一下。
翻译如下:
Apache Tomcat 6.0
如何实现 集群化/Session 复制
重要提示 |
也可以查阅 cluster配置参考文档.
|
内容列表 |
- 快速设置
- Cluster 基础
- 概述
- 集群信息
- 崩溃后绑定会话到故障转移节点
- 配置示例
- 集群架构
- 运行机制
- FAQ
|
快速设置 |
只要在 <Engine> 节点 或者 <Host> 节点内部加上下面的代码即可支持集群化:
|
|
|
|
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
|
|
|
|
|
上面的配置将开启 all-to-all session 复制,并通过 DeltaManager 来复制 session 增量. 采用 all-to-all 方式意味着 session 会被复制到此集群中其他的所有节点. 对于很小的集群,这种方式很适用, 但我们不推荐在较大的集群中使用(有很多 tomcat 节点的情况,译者注: 例如,几十个节点及以上...). 另外,使用 delta 增量管理器时,即使 某些节点没有部署应用程序,也会复制 session 到所有节点上.
要在较大的集群上进行session复制,您需要使用 BackupManager. 此 manager 只复制 session 数据到一个备份节点, 并且只复制到部署了对应应用程序的那些节点. BackupManager的缺点: 经过测试,性能不如 delta manager.
下面是一些重要的默认值:
1. 默认的 Multicast (组播)地址是: 228.0.0.4
2. 默认的 Multicast (组播)端口是: 45564 (端口号和地址组合以后就决定了 cluster 关系,被认为是同一个集群).
3. 默认广播的IP java.net.InetAddress.getLocalHost().getHostAddress() (确保你不是广播到 127.0.0.1, 这是一个常见的错误)
4. 默认的监听复制消息的 TCP 端口是在 4000-4100 范围内第一个可用的server socket。
5. 配置了两个监听器: ClusterSessionListener 和 JvmRouteSessionIDBinderListener
6. 配置了两个拦截器: TcpFailureDetector 和 MessageDispatch15Interceptor
下面是默认 cluster 配置信息的完整列表(效果和上
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|