Quitada ブログ HAX

Hatena Blog でも Quitada ブログ

GemFire HTTP Session Management Modules を tc Server で試してみた


GemFire HTTP Session Management Modules は、VMware 社の NoSQL KVS +αな製品である vFabric GemFire を使って、tc Server やら Tomcat の HTTP セッションレプリケーションを行ってくれるモジュールです。Tomcatクラスタ構成して、稼働中に一部がお亡くなりになっても、クライアントの HTTP セッションは保持されているので処理が継続できますよという、DR 的な使い方ができるモジュールですね。

基本的には、以下のドキュメント(英語ですが)にそって設定すれば動きます。

HTTP Session Management Modules

ともあれ、quitada がちょっとはまった注意点を列挙したいと思います。なお、Web コンテナは同 VMware 社が提供する vFabric tc Server(中身は Tomcat ですが)を使いました。

モジュールのダウンロードについて

VMware のアカウント作成して、トライアルで tc Server やら GemFire HTTP Session Management Modules をダウンロードすると 60 日後にトライアル期間終了ということでダウンロードできなくなるので注意してください。

モジュールのテンプレートディレクトリへのコピー

GemFire HTTP Session Management Modules を解凍(zip とか gz なんで)すると、以下のディレクトリが生成されて、それぞれの設定内容にあわせたモジュールが含まれております。

  • gemfire-cs
  • gemfire-cs-tomcat-7
  • gemfire-p2p
  • gemfire-p2p-tomcat-7

上述のドキュメントによると、tc Server の場合はこれらをテンプレートディレクトリにコピーして以下のコマンドを実行してインスタンスを作成・実行しましょう的なことをいってます。

prompt$ ./tcruntime-instance.sh create my_instance_name --template gemfire-p2p
prompt$ ./tcruntime-ctl.sh my_instance_name start

で、とりあえずはじめようということで、quitada は --template に指定してある gemfire-p2p だけテンプレートディレクトリにコピーしたらなんか例外が出て動きませんでした。実は、Tomcat 7 ベースでインスタンスが構築されていたようで、そのための差分の gemfire-p2p-tomcat-7 もコピーしておく必要があったんですね。ま、余計な失敗をしたくなければ 4 つともコピーしておきましょうということで…。

動作確認のために必要なこと

GemFire HTTP Session Management Modules を設定して、HTTP セッションを使用するような適当な Web アプリをデプロイして複数ノードで Tomcat を動かしても、ロードバランサーがいないと本当に HTTP セッションがレプリケーションされているのか動作確認できません。

上述のドキュメントには、そのことは一切書いてないんで、ググッて調べて Apache Web Server を Tomcatロードバランサーとして設定してみました。当方の場合、VMware Fusion 上に CentOS 5.6 の VM を二つたちあげて、それで Tomcat + GemFire HTTP Session Management Modules でクラスタ構築したんですが、yumApache Web Server をインストールして、以下のサイト様に従って設定したら動きました。

ApacheとTomcatの連携

Tomcat インスタンスの GemFire モジュールが HTTP セッションをレプリケーションしてくれているんで、とりあえず Apache Web Server 側でラウンドロビンでリクエストを振り分けるようにしておけば OK です(あえて、スティッキーにリクエストを振り分ける必要はないです)。