クラスタメンバーシップオブジェクト
目次
はじめに
Apache Tribes チャネルのメンバーシップコンポーネントは、クラスタ内の他のメンバー(ノード)の動的検出を担当します。現在、org.apache.catalina.tribes.membership.McastService
と org.apache.catalina.tribes.membership.StaticMembershipService
の2種類のメンバーシップサービスがあります。 McastService
は、マルチキャストIPアドレスにUDPパケットを送信するマルチキャストベースのメンバーシップサービスを構築します。 StaticMembershipService
は、事前定義されたメンバーアドレスにTCPパケットを送信するユニキャストベースのメンバーシップサービスを構築します。
デフォルト実装
クラスタグループ通知のデフォルト実装は、マルチキャストIPアドレスにUDPパケットを使用して送信されるマルチキャストハートビート上に構築されています。クラスタメンバーは、同じマルチキャストアドレス/ポートの組み合わせを使用することにより、グループ化されます。各メンバーは、指定された間隔(frequency
)でハートビートを送信し、このハートビートは動的検出に使用されます。同様に、dropTime
ミリ秒で指定された時間枠内にハートビートが受信されなかった場合、メンバーは疑わしいと見なされ、チャネルとメンバーシップリスナーに通知されます。
属性
共通属性
属性 | 説明 |
---|---|
className |
メンバーシップコンポーネントの実装。 |
マルチキャスト属性
属性 | 説明 |
---|---|
className |
値は |
address |
メンバーシップがプレゼンスをブロードキャストし、他のハートビートを listen するマルチキャストアドレス。デフォルト値は |
port |
マルチキャストポート。デフォルト値は |
frequency |
ハートビートが送信される頻度(ミリ秒単位)。デフォルト値は |
dropTime |
メンバーシップコンポーネントは、メンバーが指定された時間内にハートビートの送信に失敗した場合、メンバーをタイムアウトし、チャネルに通知します。デフォルト値は |
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メッセージを送信するためのローカルスレッドを開始します。 |
pingInterval |
|
ネストされたコンポーネント
静的メンバーシップサービスでは、**<LocalMember>**要素と**<Member>**要素をネストできます。
StaticMember属性
LocalMember
静的クラスタグループのローカルメンバーである静的メンバー。
**注:** **<LocalMember>**要素を使用してローカルメンバーを明示的に設定する必要はありません。ローカルメンバーを含むすべてのクラスタメンバーは、**<Member>**要素を使用して定義でき、Tomcatはどれがローカルメンバーであるかを判断します。
属性 | 説明 |
---|---|
className | 利用可能な実装は1つだけです:org.apache.catalina.tribes.membership.StaticMember |
port | 設定する必要はありません。この属性の値は、クラスタレシーバー設定から継承されます。 |
securePort | 設定する必要はありません。この属性の値は、クラスタレシーバー設定から継承されます。 |
host | 設定する必要はありません。この属性の値は、クラスタレシーバー設定から継承されます。 |
domain | この静的メンバーがクラスタメッセージを listen する論理クラスタドメイン。2種類の値が可能です。 1. "staging-domain" や "tomcat-cluster" のような通常の文字列値は、ISO-8859-1 エンコーディングを使用してバイトに変換されます。 2. 文字列形式のバイト配列。例:{216,123,12,3} |
uniqueId | この静的メンバーのユニバーサルuniqueId。値は、次の形式の16バイトである必要があります。 1. 文字列形式のバイト配列。例:{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
Member
静的クラスタグループに追加される静的メンバー。
属性 | 説明 |
---|---|
className | 利用可能な実装は1つだけです:org.apache.catalina.tribes.membership.StaticMember |
port | この静的メンバーがクラスタメッセージを listen するポート |
securePort | この静的メンバーが暗号化されたクラスタメッセージを listen するセキュアポート。デフォルト値は-1 です。この値は、メンバーがセキュアポートで listen していないことを意味します。 |
host | この静的メンバーがクラスタメッセージを listen するホスト(またはネットワークインターフェース)。3種類の値が可能です。 1. "216.123.1.23" 形式のIPアドレス 2. 正しく解決される限り、"tomcat01.mydomain.com" や "tomcat01" のようなホスト名 3. 文字列形式のバイト配列。例:{216,123,12,3} |
domain | この静的メンバーがクラスタメッセージを listen する論理クラスタドメイン。2種類の値が可能です。 1. "staging-domain" や "tomcat-cluster" のような通常の文字列値は、ISO-8859-1 エンコーディングを使用してバイトに変換されます。 2. 文字列形式のバイト配列。例:{216,123,12,3} |
uniqueId | この静的メンバーのユニバーサル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>