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