群集成員資格物件
目錄
簡介
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 |
值為 |
address |
成員身分會廣播其存在並在上面偵聽其他心跳的多播位址。預設值為 |
port |
多播埠,預設值為 |
frequency |
傳送心跳的頻率(以毫秒為單位)。預設值為 |
dropTime |
成員身分元件會對成員計時,並在成員未能在特定時間內傳送心跳時通知頻道。預設值為 |
bind |
如果您希望將多播流量繫結到特定網路介面,請使用此屬性。預設情況下,或當此屬性未設定時,它會嘗試繫結到 |
ttl |
多播心跳的時間生存期。此設定應為介於 0 到 255 之間的值。預設值取決於 VM 實作。 |
domain |
Apache Tribes 可以透過使用此 domain 屬性,將成員邏輯地分組到網域中。 |
soTimeout |
傳送和接收心跳是在單一執行緒上完成的,因此,若要避免永遠封鎖此執行緒,您可以控制此 socket 上的 |
recoveryEnabled |
如果發生網路故障,Java 多重傳送 socket 就不會透明地備援,相反地,socket 會在每次接收請求時持續擲回 IOException。當 recoveryEnabled 設為 true 時,這會關閉多重傳送 socket,並開啟一個具有與上述定義相同的屬性的新 socket。 |
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
|
port | 不需要設定。此屬性的值會繼承自叢集接收器設定。 |
securePort | 不需要設定。此屬性的值會繼承自叢集接收器設定。 |
host | 不需要設定。此屬性的值會繼承自叢集接收器設定。 |
domain |
此靜態成員用於偵聽叢集訊息的邏輯叢集網域。有兩種不同的值類型 1. 一般字串值,例如「staging-domain」或「tomcat-cluster」,會使用 ISO-8859-1 編碼轉換成位元組。2. 字串形式的位元組陣列,例如 {216,123,12,3} |
uniqueId |
此靜態成員的通用唯一識別碼。值必須為 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 |
此靜態成員用於偵聽叢集訊息的主機(或網路介面)。有 3 種不同的值類型 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 |
此靜態成員的通用唯一識別碼。值必須為 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>