30日間の無料評価版をお試しいただけます。

 

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サーブレットのパラメーターにパスを渡すことで参照することができます。

 

各ノードのweb.xmlに、以下のサーブレット定義を追加しなくてはいけません。

 

 <!-- Cluster Management -->
<servlet>
       <servlet-name>ClusterManagement</servlet-name>
       <servlet-class>com.hof.mi.servlet.ClusterManagement</servlet-class>
       <init-param>
             <param-name>ClusterType</param-name>
             <param-value>DYNAMIC</param-value>
       </init-param>
       <init-param>
             <param-name>SerialiseWebserviceSessions</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>CheckSumRows</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionId</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionData</param-name>
             <param-value>true</param-value>
       </init-param>
<init-param>
             <param-name>AutoTaskDelegation</param-name>
             <param-value>true</param-value>
       </init-param>
       <load-on-startup>11</load-on-startup>
 </servlet>

 

 

 

Multicast with Repository Discovery(REPOSITORYモード)

Repository DiscoveryはDYNAMICモードの実装ですが、共有されたYellowfinリポジトリ経由でノードを検出するために、カスタムプラグインが付属しています。これは、マルチキャストパケットが機能しない環境でクラスタリングを有効化する場合に有効です。

この機能は、RepositoryDiscoveryサーブレットのパラメーターをtrueに設定したDYNAMICモードで有効化することもできます。

 

各ノードのweb.xmlに、以下のサーブレット定義を追加しなくてはいけません。

 

<!-- Cluster Management -->
<servlet>
       <servlet-name>ClusterManagement</servlet-name>
       <servlet-class>com.hof.mi.servlet.ClusterManagement</servlet-class>
       <init-param>
             <param-name>ClusterType</param-name>
             <param-value>REPOSITORY</param-value>
       </init-param>
       <init-param>
             <param-name>SerialiseWebserviceSessions</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>CheckSumRows</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionId</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionData</param-name>
             <param-value>true</param-value>
       </init-param>
<init-param>
             <param-name>AutoTaskDelegation</param-name>
             <param-value>true</param-value>
       </init-param>
       <load-on-startup>11</load-on-startup>
 </servlet>

 

 

Webservice Cluster Messaging(LEGACYモード)

YellowfinのLegacy Cluster Messagingは、AXIS webserviceにより制御されます。これは、起動時にすべてのノードが定義されていなくてはならず、各ノードのweb.xmlファイルでサービスエンドポイント、ポート番号、ユーザー、パスワードが定義されていなくてはいけません。Legacyモードでは、クラスタインスタンスは同一ホスト上に存在することができません。

 

各ノードのweb.xmlに、以下のサーブレット定義を追加しなくてはいけません。

 

<!-- Cluster Management -->
<servlet>
       <servlet-name>ClusterManagement</servlet-name>
       <servlet-class>com.hof.mi.servlet.ClusterManagement</servlet-class>
       <init-param>
             <param-name>ServiceUser</param-name>
             <param-value>admin@yellowfin.com.au</param-value>
       </init-param>
       <init-param>
             <param-name>ServicePassword</param-name>
             <param-value>test</param-value>
       </init-param>
       <init-param>
             <param-name>ServiceAddress</param-name>
             <param-value>/services/AdministrationService</param-value>
       </init-param>
       <init-param>
             <param-name>ServicePort</param-name>
             <param-value>80</param-value>
       </init-param>
       <init-param>
             <param-name>ClusterHosts</param-name>
             <param-value>
                   192.168.4.184
             </param-value>
       </init-param>
       <init-param>
             <param-name>SerialiseWebserviceSessions</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>CheckSumRows</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionId</param-name>
             <param-value>true</param-value>
       </init-param>
       <init-param>
             <param-name>EncryptSessionData</param-name>
             <param-value>true</param-value>
       </init-param>
       <load-on-startup>11</load-on-startup>
 </servlet>

 

 

 

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のどちらかを定義します。
ServicePasswordの値が暗号化されているかどうかで設定を行います。

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のどちらかを定義します。
これは、DYNAMICモードでのみ利用可能であり、設定はオプションです。

これを有効化すると、クラスタはバックグラウンドタスクを実行するために、ノードを自動的に割り当てます。これを有効化することで、バックグラウンドタスクを実行するために、手動でノードを設定する必要がありません。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

 

 

 

 

  • No labels