コンテナレベルセッションレプリケーションは、フェイルセーフ環境にYellowfinを導入することができるため、クラスタ内のノードに障害が発生した場合、現在Yellowfinに接続しているユーザーは、他のノードでセッションを継続することができます。これは、アプリケーションサーバレベルでセッションレプリケーションにより達成されますが、Yellowfinの機能ではないため、Yellowfinのコンポーネントとしてサポートをしていません。この構成では、異なるクラスタノードからの着信リクエストを均等に分散するためにロードバランサーが必要ですが、こちらの説明については割愛させていただきます。
アプリケーションサーバに応じて、この機能の実装方法は異なる可能性があります。今回の例では、Yellowfinとともに提供されるTomcatを使用して説明します。
セッションレプリケーションのセットアップは、以下のステップから構成されています。
- web.xmlの編集
- server.xmlの編集
- ROOT.xmlの編集
Tomcatセッションレプリケーションについて、より詳細な情報は、こちらを参照してください。:
セッションレプリケーションの制限
Yellowfinでセッションレプリケーション(または、任意のJava webアプリケーション)を使用する場合は、いくつかの注意点があります。セッションレプリケーションの主な欠点は、プロセスオーバーヘッドとメモリ使用量です。
クラスタ内のすべてのノードへ各セッションを複製する場合は、追加のプロセスオーバーヘッドが発生します。これは、各HTTPリクエスト後に発生し、デフォルトでは、変更されたセッション要素のみ他のノードへコピーされます。これは、ユーザーが接続されている任意ノードで作業をする度に、すべてのノードで追加作業が発生することを意味します。
セッションレプリケーションの機能は、サーバ上のユーザーのメモリフットプリントを、クラスタ内のすべてのノードに複製します。これは、クラスタ内のすべてのユーザーのセッションは、各ノードに保存されることになり、追加のメモリを消費します。追加ノードへクラスタを拡張することで、各ノードのメモリ量が制限されます。
このオーバーヘッドが、フェイスセーフ機能を追加するに値するかどうかを考慮しなくてはいけません。セッションレプリケーションが使用されていない場合にノードに障害が発生すると、ユーザーのセッションは破壊されますが、他のノードにログインをし直して、作業を継続することができます。
web.xmlファイルの編集
各ノードのweb.xmlファイルの「<web-app>」配下に、「<distributable/>」テキストを追加しなくてはいけません。例:
<web-app> <distributable/> <!-- System Event and Debug classes --> <listener> <listener-class>com.hof.servlet.SysSessionListener</listener-class> </listener>
server.xmlファイルの編集
server.xmlファイルの「Yellowfin/appserver/conf」ディレクトリに変更が必要です。
「<host>」XMLブロック内に追加のXMLエントリーを追加します。
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
IPアドレス「228.0.0.4」は、セッションレプリケーションメッセージが受信されるマルチキャストアドレスです。これは、編集する必要はありませんが、Linux/Unixサーバは、このアドレスでブロードキャストを受信するために、有効なマルチキャストルートを登録しなくてはいけない場合があります。これは、コンソールから以下のコマンドを実行することで、行うことができます。
sudo route add -net 224.0.0.0 netmask 224.0.0.0 dev eth0
このシンタックスは、Linux/Unixの様々な種類により異なる可能性があります。今回の例では、「eth0」をこのルートでしようされるネットワークデバイスとして使用しています。
ROOT.xmlの編集
Yellowfin/appserver/conf/Catalina/localhostディレクトリ内のROOT.xmlから、行を削除します。
<Manager className="org.apache.catalina.session.PersistentManager" debug="0" distributable="false" saveOnRestart="false"> <Store className="org.apache.catalina.session.FileStore" /> </Manager>
これらの行は、Yellowfinディスクへのセッションシリアル化を抑制するために追加されていました。
追加情報
Tomcatのセッションレプリケーション機能は、異なるバージョンでは変更になる場合があります。こちらで概説されているプロセスが機能しない場合は、TomcatのウェブサイトでYellowfinが実行されているTomcatのバージョンの、更新された資料を確認してください。
前項:バックグラウンドタスク