アプリケーションレベルの連携
Yellowfinの各ノードは「Cluster Aware」するために「ClusterManagement」サーブレットを有効にしなくてはいけません。ClusterManagementサーブレットは、各ノードのweb.xmlファイルに追加の設定を加えることで有効化されます。
アプリケーションの連携は、実装モードに応じて異なる動きをします。現状、REPOSITORY、DYNAMIC、LEGACYの3つのモードを利用することができます。
Multicast Cluster Messaging(DYNAMICモード)
Yellowfinのアプリケーション連携は、JGroupsと呼ばれるマルチキャストメッセージングライブラリにより制御されます。この方法を使用することで、同一のYellowfinデータベースを共有するクラスタ内の他のノードを自動的に検出します。
JGroupsのデフォルト構成では、グループメンバーシップと新ノードの検出にUDPマルチキャストメッセージを使用します。このようなタイプのメッセージを送信できない環境もあります。例えば、Amazonでは内部ネットワークのノード間でのマルチキャストパケットを許可していません。Multicast Cluster Messagingアダプターを使用すると、ノード検出に他の方法を使用するよう、JGroupsを設定するXMLファイルを渡すことができます。このファイルは、ClusterManagementサーブレット内のBroadcastConfigurationサーブレットのパラメーターにパスを渡すことで参照することができます。
Multicast with Repository Discovery(REPOSITORYモード)
Repository DiscoveryはDYNAMICモードの実装ですが、共有されたYellowfinリポジトリ経由でノードを検出するために、カスタムプラグインが付属しています。これは、マルチキャストパケットが機能しない環境でクラスタリングを有効化する場合に有効です。
この機能は、RepositoryDiscoveryサーブレットのパラメーターをtrueに設定したDYNAMICモードで有効化することもできます。
Webservice Cluster Messaging(LEGACYモード)
YellowfinのLegacy Cluster Messagingは、AXIS webserviceにより制御されます。これは、起動時にすべてのノードが定義されていなくてはならず、各ノードのweb.xmlファイルでサービスエンドポイント、ポート番号、ユーザー、パスワードが定義されていなくてはいけません。Legacyモードでは、クラスタインスタンスは同一ホスト上に存在することができません。
web.xmlファイルのパラメーター
以下のプロパティは、ClusterManagementサーブレットに定義するオプションを概説しています。
プロパティ | 値 |
ClusterType | DYNAMIC、またはLEGACYモードのどちらかを定義します。DYNAMICは、マルチキャストメッセージングを使用し、クラスタ内の他のノードを自動的に検知します。LEGACYはデフォルト設定であり、定義されたクラスタノードの一覧と通信をするために、webserviceを使用します。 |
BroadcastConfiguration | JGroups構成ファイルです。これは、マルチキャストネットワーキングが機能しない環境で、使用されるJGroupsの構成をカスタマイズすることができます。これは、DYNAMICモードでのみ利用可能であり、設定はオプションです。デフォルトでは、JGroupsはudp.xml内で定義された構成を使用します。 |
ServiceUser | 他ノードへのwebservice接続を検証するユーザーです。LEGACYモードでのみ利用可能です。 |
ServicePassword | ServiceUserのパスワードです。LEGACYモードでのみ利用可能です。 |
ServicePasswordEncrypted | True、またはFalseのどちらかを定義します。 |
ServiceAddress | Yellowfin webserviceのパスです。LEGACYモードでのみ利用可能です。 |
ServicePort | Yellowfinが実行されているポート番号です。LEGACYモードでのみ利用可能です。 |
ClusterHosts | クラスタ内のすべてのノードをコンマ区切りで表示した一覧です。これには、IPアドレス、またはホスト名を含めることができます。LEGACYモードでのみ利用可能です。 |
SerialiseWebserviceSessions | True、またはFalseのどちらかを定義します。 クラスタでシングルサインオンを使用している場合に必要となります。データベースへのトークンをシリアル化することで、任意のノードからトークンへアクセスすることができます。 |
CheckSumRows | True、またはFalseのどちらかを定義します。 データベース内のシリアル化されたwebserviceセッションレコードの合計を確認するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
EncryptSessionId | True、またはFalseのどちらかを定義します。 データベースでシリアル化されたwebserviceセッションIDを暗号化するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
EncryptSessionData | True、またはFalseのどちらかを定義します。 データベースでシリアル化されたwebsetviceセッションレコードを暗号化するセキュリティオプションです。これは、Yellowfinでの不正なセッション作成につながる可能性のあるテーブルへの変更を防ぐことができます。 |
AutoTaskDelegation | True、またはFalseのどちらかを定義します。 これを有効化すると、クラスタはバックグラウンドタスクを実行するために、ノードを自動的に割り当てます。これを有効化することで、バックグラウンドタスクを実行するために、手動でノードを設定する必要がありません。Yellowfinは、他のノードが既にこのタスクを実行している場合は、起動時にノード上のシステムタスクを停止します。 |
SessionReplication | True、またはFalseのどちらかを定義します。 コンテナレベルセッションのレプリケーションを有効にする場合は、これをtrueに設定します。これは、クラスタ内のセッションを破棄するために使用されるロジックを変更します。 |
RepositoryDiscovery | True、またはFalseのどちらかを定義します。 これは、DYNAMICモードでのみ利用可能です。これにより、REPOSITORYモードがサポートされる前に、ビルドでRepositoryDiscoveryを有効にします。REPOSITORYモードは、RepositoryDiscoveryが有効化されたDYNAMICモードのエイリアスです。 |
追加のパラメーター
いくつかの環境下では、DYNAMICモードが機能しない場合があります。これは通常、サーバ上のネットワーク構成が原因です。デフォルトでJGroupsは、利用可能であれば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 |
デフォルトのJGroups設定(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 |