Cluster 对象
目录
简介
Tomcat 集群实现提供了会话复制、上下文属性复制以及集群范围的 WAR 文件部署。虽然 Cluster
配置相当复杂,但默认配置对大多数用户来说开箱即用。
Tomcat Cluster 实现具有很高的可扩展性,因此我们暴露了众多选项,这使得配置看起来很多,但请不要失去信心,相反,您对正在发生的一切拥有巨大的控制权。
安全性
集群实现的编写基于这样一个前提:所有与集群相关的网络流量都使用安全、受信任的网络。在不安全、不受信任的网络上运行集群是不安全的。
为 Tomcat 集群提供安全、受信任的网络有许多选项。这些选项包括
- 私有局域网 (LAN)
- 虚拟专用网络 (VPN)
- IPSEC
EncryptInterceptor
提供了保密性和完整性保护,但它不能防御在不受信任的网络上运行 Tomcat 集群所涉及的所有风险,特别是 DoS 攻击。
Engine 与 Host 的放置
您可以将 <Cluster>
元素放置在 <Engine>
容器或 <Host>
容器内部。
将其放置在 Engine 中,意味着您将在 Tomcat 的所有虚拟主机中支持集群,并共享消息组件。当您将 <Cluster>
放置在 <Engine>
元素内部时,集群会将每个会话管理器的主机名附加到管理器名称中,以便名称相同但位于两个不同主机内部的两个 Context 可以区分开来。
Context 属性复制
要配置 Context 属性复制,只需通过替换您的应用程序 Context 所使用的 Context 实现即可。
<Context className="org.apache.catalina.ha.context.ReplicatedContext"/>
此 Context 扩展了 Tomcat StandardContext
,因此基础实现中的所有选项都有效。
嵌套组件
Manager:
会话管理器元素标识了此集群实现中使用的会话管理器类型。此管理器配置与您在常规 <Context>
配置中使用的配置相同。
默认值是 org.apache.catalina.ha.session.DeltaManager
,它与 SimpleTcpCluster
实现紧密耦合。其他管理器,例如 org.apache.catalina.ha.session.BackupManager
,是/可能是松散耦合的,并且不依赖 SimpleTcpCluster
进行数据复制。
Channel:
Channel 及其子组件都是集群组 IO 层的一部分,它是一个我们昵称为“Tribes”的独立模块。
网络层、消息传递和成员资格逻辑的任何配置和调优都将在 Channel 及其嵌套组件中完成。您可以随时了解更多关于 Apache Tribes 的信息。
Valve:
Tomcat 集群实现使用 Tomcat Valves
来跟踪请求何时进入和退出 Servlet 容器。它使用这些 Valve 来智能地决定何时复制数据,这总是在请求结束时进行。
Deployer:
Deployer 组件是 Tomcat Farm 部署器。它允许您在集群范围内部署和取消部署应用程序。
ClusterListener:
ClusterListener 用于跟踪使用 SimpleTcpCluster
发送和接收的消息。如果您希望跟踪消息,可以在此处添加监听器,或者可以向 Channel 对象添加 Valve。
属性
SimpleTcpCluster 属性
属性 | 描述 |
---|---|
className |
主要的集群类,目前只有一个可用: |
channelSendOptions |
Tribes 通道发送选项,默认值为
一些值包括 各种
您还可以将这些选项设置为逗号分隔的字符串,例如“async, multicast”,它将被转换为 |
channelStartOptions |
设置集群使用的
当使用静态成员服务 |
heartbeatBackgroundEnabled |
标志是否在容器后台线程中调用通道心跳。默认值为 false。启用此标志时,请不要忘记禁用通道心跳线程。 |
notifyLifecycleListenerOnFailure |
标志是否在所有 ClusterListener 无法接受通道消息时通知 LifecycleListeners。默认值为 false。 |