集群成员对象
目录
简介
Apache Tribes Channel 中的成员组件负责动态发现集群中的其他成员(节点)。目前有两种不同的成员服务:org.apache.catalina.tribes.membership.McastService
和 org.apache.catalina.tribes.membership.StaticMembershipService
。McastService
构建基于多播的成员服务,该服务将 UDP 数据包发送到多播 IP 地址。StaticMembershipService
构建基于单播的成员服务,该服务将 TCP 数据包发送到预定义的成员地址。
默认实现
集群组通知的默认实现是基于使用 UDP 数据包发送到多播 IP 地址的多播心跳构建的。集群成员通过使用相同的多播地址/端口组合进行分组。每个成员以给定间隔(frequency
)发送心跳,此心跳用于动态发现。以类似的方式,如果在 dropTime
毫秒指定的时间范围内未收到心跳,则该成员被视为可疑,并且通道和任何成员监听器都将收到通知。
属性
通用属性
属性 | 描述 |
---|---|
className |
成员组件的实现。有两种可用实现: |
多播属性
属性 | 描述 |
---|---|
className |
值为 |
address |
成员将广播其存在并监听其他心跳的多播地址。默认值为 |
port |
多播端口,默认值为 |
frequency |
发送心跳的频率,单位为毫秒。默认值为 |
dropTime |
如果在给定时间内成员未能发送心跳,成员组件将使成员超时并通知 Channel。默认值为 |
bind |
如果您希望将多播流量绑定到特定的网络接口,请使用此属性。默认情况下,或未设置此属性时,它会尝试绑定到 |
ttl |
多播心跳的生存时间(TTL)设置。此设置的值应介于 0 到 255 之间。默认值取决于 VM 实现。 |
domain |
Apache Tribes 能够使用此域属性将成员逻辑地分组到域中。 |
soTimeout |
心跳的发送和接收是在单个线程上完成的,因此为了避免此线程永远阻塞,您可以控制此套接字上的 |
recoveryEnabled |
在网络故障的情况下,Java 多播套接字不会透明地进行故障转移,而是会在每次接收请求时持续抛出 IOException。当 recoveryEnabled 设置为 true 时,这将关闭多播套接字并打开一个具有与上述定义相同属性的新套接字。 |
recoveryCounter |
当 |
recoverySleepTime |
当 |
localLoopbackDisabled |
成员使用多播,它将调用 |
静态成员属性
使用静态成员服务时,必须确保 Cluster
元素的 channelStartOptions
属性设置为默认值 15
。
属性 | 描述 |
---|---|
className |
值为 |
connectTimeout |
尝试与预定义的静态成员地址建立 TCP 连接的超时时间。默认值为 |
expirationTime |
如果成员未能在给定时间内更新其活跃时间,此成员服务将向集群通知 memberDisappeared 事件。默认值为 |
rpcTimeout |
用于与其他节点之间进行成员通知的消息的超时时间。默认值为 |
useThread |
如果设置为 `true`,此成员服务将启动一个本地线程用于发送 ping 消息。如果设置为 `false`,通道心跳将发送 ping 消息。默认值为 `false`。 |
pingInterval |
如果 |
嵌套组件
静态成员服务允许嵌套 **<LocalMember>** 和 **<Member>** 元素。
StaticMember 属性
LocalMember
作为静态集群组的本地成员的静态成员。
**注意:** 没有必要使用 **<LocalMember>** 元素明确配置本地成员。所有集群成员(包括本地成员)都可以使用 **<Member>** 元素定义,Tomcat 会自行确定哪个是本地成员。
属性 | 描述 |
---|---|
className | 只有一个可用实现:org.apache.catalina.tribes.membership.StaticMember |
port | 无需设置。此属性的值继承自集群接收器设置。 |
securePort | 无需设置。此属性的值继承自集群接收器设置。 |
host | 无需设置。此属性的值继承自集群接收器设置。 |
domain | 此静态成员监听集群消息的逻辑集群域。有两种不同类型的值可能: 1. 常规字符串值,例如“staging-domain”或“tomcat-cluster”,将使用 ISO-8859-1 编码转换为字节。 2. 字符串形式的字节数组,例如 {216,123,12,3} |
uniqueId | 此静态成员的全局唯一 ID。值必须是 16 字节,形式如下: 1. 字符串形式的字节数组,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
Member
添加到静态集群组的静态成员。
属性 | 描述 |
---|---|
className | 只有一个可用实现:org.apache.catalina.tribes.membership.StaticMember |
port | 此静态成员监听集群消息的端口。 |
securePort | 此静态成员监听加密集群消息的安全端口,默认值为 -1 ,此值表示该成员未监听安全端口。 |
host | 此静态成员监听集群消息的主机(或网络接口)。有三种不同类型的值可能: 1. IP 地址形式,例如“216.123.1.23” 2. 主机名,例如“tomcat01.mydomain.com”或“tomcat01”,只要它们能正确解析。 3. 字符串形式的字节数组,例如 {216,123,12,3} |
domain | 此静态成员监听集群消息的逻辑集群域。有两种不同类型的值可能: 1. 常规字符串值,例如“staging-domain”或“tomcat-cluster”,将使用 ISO-8859-1 编码转换为字节。 2. 字符串形式的字节数组,例如 {216,123,12,3} |
uniqueId | 此静态成员的全局唯一 ID。值必须是 16 字节,形式如下: 1. 字符串形式的字节数组,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
设置
<Membership className="org.apache.catalina.tribes.membership.StaticMembershipService">
<Member className="org.apache.catalina.tribes.membership.StaticMember"
port="4004"
host="tomcat01.mydomain.com"
uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/>
<Member className="org.apache.catalina.tribes.membership.StaticMember"
port="4004"
host="tomcat02.mydomain.com"
uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1}"/>
</Membership>