クラスタメンバシップオブジェクト
目次
はじめに
Apache Tribes の Channel におけるメンバシップコンポーネントは、クラスタ内の他のメンバー(ノード)の動的検出を担当します。現在、2つの異なるメンバシップサービスがあります。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 |
マルチキャストハートビートのタイムトゥライブ設定です。この設定は0から255までの値でなければなりません。デフォルト値はVMの実装に依存します。 |
domain |
Apache Tribes は、このドメイン属性を使用することで、メンバーを論理的にドメインにグループ化する機能を持っています。 |
soTimeout |
ハートビートの送受信は単一のスレッドで行われるため、このスレッドが永久にブロックされるのを避けるために、このソケットの |
recoveryEnabled |
ネットワーク障害が発生した場合、Java のマルチキャストソケットは透過的にフェイルオーバーせず、代わりに各受信リクエストで継続的に IOException をスローします。recoveryEnabled が true に設定されている場合、マルチキャストソケットを閉じ、上記で定義されたものと同じプロパティを持つ新しいソケットを開きます。 |
recoveryCounter |
|
recoverySleepTime |
|
localLoopbackDisabled |
メンバシップはマルチキャストを使用するため、 |
静的メンバシップ属性
静的メンバシップサービスを使用する場合、Cluster
要素の channelStartOptions
属性がデフォルト値の 15
に設定されていることを確認する必要があります。
属性 | 説明 |
---|---|
className |
値は |
connectTimeout |
事前定義された静的メンバーのアドレスへの TCP 接続を試行する際のタイムアウトです。デフォルトは |
expirationTime |
メンバーが所定の時間内に生存時間を更新できなかった場合、このメンバシップは cluster に 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 | この静的メンバーがクラスタメッセージをリッスンする論理クラスタドメインです。2種類の値が可能です。 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 | 利用可能な実装は1つだけです:org.apache.catalina.tribes.membership.StaticMember |
port | この静的メンバーがクラスタメッセージをリッスンするポートです。 |
securePort | この静的メンバーが暗号化されたクラスタメッセージをリッスンするセキュアポートです。デフォルト値は -1 で、この値はメンバーがセキュアポートでリッスンしていないことを意味します。 |
host | この静的メンバーがクラスタメッセージをリッスンするホスト(またはネットワークインターフェース)です。3種類の値が可能です。 1. 「216.123.1.23」の形式の IP アドレス 2. 「tomcat01.mydomain.com」や「tomcat01」のようなホスト名。ただし、これらが正しく解決される場合に限ります。 3. 文字列形式のバイト配列、例:{216,123,12,3} |
domain | この静的メンバーがクラスタメッセージをリッスンする論理クラスタドメインです。2種類の値が可能です。 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>