Yellowfinの各ノードは「クラスタ対応」するために「ClusterManagement」サーブレットを有効にしなくてはいけません。ClusterManagementサーブレットは、各ノードのweb.xmlファイルに追加の設定を加えることで有効化されます。
アプリケーションメッセージングは、実装モードに応じて異なる動きをします。現状、REPOSITORY、DYNAMIC、LEGACYの3つのモードを利用することができます。
マルチキャストクラスタメッセージング(DYNAMICモード)
Yellowfinのアプリケーションメッセージングは、JGroupと呼ばれるマルチキャストメッセージングライブラリにより制御されます。このメソッドを使用することで、同一のYellowfinデータベースを共有するクラスタ内の他のノードを自動的に検出します。
JGroupのデフォルト設定では、グループメンバーシップと新ノードの決定にUDPマルチキャストメッセージを使用します。このようなタイプのメッセージを送信できない環境もあります。例えば、Amazonでは内部ネットワークのノード間でのマルチキャストパケットを許可していません。マルチキャストクラスタメッセージングアダプタを使用すると、XML設定ファイルを渡してJGroupを構成し、ノードを検出する他のメソッドを使用することができます。このファイルは、ClusterManagementサーブレット内のBroadcastConfigurationサーブレットパラメーターへパスを渡すことで参照できるようになります。
レポジトリディスカバリー付きマルチキャスト(REPOSITORYモード)
レポジトリディスカバリーはDYNAMICモードの実装ですが、共有されたYellowfinレポジトリ経由でノードを検出するために、カスタムプラグインが付属しています。これは、マルチキャストパケットが機能しない環境でクラスタリングを有効化する場合に有効です。
この機能は、RepositoryDiscoveryサーブレットパラメーターをtrueに設定したDYNAMICモードで有効化することもできます。
Webサービスクラスタメッセージング(LEGASYモード)
Yellowfinのレガシークラスタメッセージングは、AXIS webサービスにより制御されます。これは、起動時にすべてのノードが定義されていなくてはならず、各ノードのweb.xmlファイルでサービスエンドポイント、ポート番号、ユーザー、パスワードが定義されていなくてはいけません。レガシーモードでは、クラスタインスタンスは同一ホスト上に存在することができません。
web.xmlファイルパラメーター
以下のプロパティは、ClusterManagementサーブレット定義のオプションを概説しています。
プロパティ | 値 |
ClusterType | DYNAMIC、またはLEGACYモードの場合。DYNAMICは、マルチキャストメッセージングを使用し、クラスタ内の他のノードを自動的に検知します。LEGACYはデフォルト設定であり、定義されたクラスタノードの一覧とコミュニケーションをするために、webサービスを使用します。 |
BroadcastConfiguration | JGroups構成ファイルです。これは、マルチキャストネットワーキングが機能しない環境で、使用されるJgroups設定をカスタマイズすることができます。これは、DYNAMICモードでのみ利用可能であり、設定はオプションです。デフォルトでは、JGroupはudp.xml内で定義された設定を使用します。 |
ServiceUser | 他ノードへのwebサービス接続を検証するユーザーです。LEGACYモードでのみ利用可能です。 |
ServicePassword | ServiceUserのパスワードです。LEGACYモードでのみ利用可能です。 |
ServicePasswordEncrypted | True/False |
ServiceAddress | Yellowfin webサービスのアドレスです。LEGACYモードでのみ利用可能です。 |
ServicePort | Yellowfinが実行されているポート番号です。LEGACYモードでのみ利用可能です。 |
ClusterHosts | クラスタ内のすべてのノードをコンマ区切りで表示した一覧です。これには、IPアドレス、またはホスト名を含めることができます。LEGACYモードでのみ利用可能です。 |
SerialiseWebserviceSessions | True/False クラスタでシングルサインオンを使用している場合に必要となります。データベースへのトークンをシリアル化することで、任意のノードからトークンへアクセスすることができます。 |
CheckSumRows | True/False データベース内のシリアル化されたwebサービスセッションレコードの合計を確認するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
EncryptSessionId | True/False データベースでシリアル化されたwebサービスセッションIDを暗号化するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
EncryptSessionData | True/False データベースでシリアル化されたwebサービスセッションレコードを暗号化するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
AutoTaskDelegation | True/False これを有効化すると、クラスタはバックグラウンドタスクを実行するために、ノードを自動的に割り当てます。これを有効化することで、バックグラウンドタスクを実行するために、手動でノードを設定する必要がありません。Yellowfinは、他のノードが既にこのタスクを実行している場合は、起動時にノード上のシステムタスクを停止します。 |
SessionReplication | True/False コンテナレベルセッションレプリケーションを有効にする場合は、これをtrueに設定します。これは、クラスタ内のセッションを破壊するために使用されるロジックを変更します。 |
RepositoryDiscovery | True/False これは、DYNAMICモードでのみ利用可能です。これにより、REPOSITORYモードがサポートされる前に、ビルドでRepositoryDiscoveryを有効にします。REPOSITORYモードは、RepositoryDiscoveryが有効化されたDYNAMICモードのエイリアスです。 |
追加のパラメーター
いくつかの環境下では、DYNAMICモードが機能しない場合があります。これは通常、サーバ上のネットワーク構成が原因です。デフォルトでJGroupは、利用可能であればIPv6を使用します。IPv4を強制的に実行することで、正常に動作するようになる場合もあります。以下のコマンドを、catalina.sh、またはcatalina.batファイルに追加します。
ファイル | コマンド |
Catalina.sh | JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" |
Catalina.bat | set JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true |
デフォルトのJGroup設定(udp.xml)を使用している場合は、マルチキャストアドレスとポート番号を設定することもできます。これは、クラスタノードがお互いを検出しない環境で役立ちます。
ファイル | コマンド |
Catalina.sh | JAVA_OPTS="$JAVA_OPTS -Djgroups.udp.mcast_addr=228.0.0.5 -Djgroups.udp.mcast_port=47885" |
Catalina.bat | set JAVA_OPTS=%JAVA_OPTS% -Djgroups.udp.mcast_addr=228.0.0.5 -Djgroups.udp.mcast_port=47885 |
前項:クラスタのインストール
後項:バックグラウンドタスク