タグ別アーカイブ: tomcat

Tomcatのクラスタ環境でSession Replicationする方法

| コメントをどうぞ

Tomcatを複数台立てて、各Tomcat上に上がっている同じアプリケーションのセッションを共有する方法です。

この設定をしておくと、Tomcatが1台落ちた時でも他のTomcatが落ちたTomcatで持っているセッションを引き継いでくれるため、
アプリケーションのユーザーは落ちたTomcatを使っていたとしても、セッションが切れずに他のTomcatでアプリケーションを引き続き利用することができます。

上記のような図の構成で、ユーザーのセッションがTomcat Bにあり、Tomcat B が落ちてしまった場合、Tomcat Aが生きていてもユーザーのセッションは切れてしまいユーザーは再度ログインなどをしてセッションを作成しなければならなくなります。

Session Replicationを設定していると、このような状況になってもTomcat B にあるセッションをTomcat Aに複製してくれるので、ユーザーのセッションは切れずにそのままアプリケーションを利用することが可能です。

今回はinfoScoop OSS 3.1.0 quick startでバンドルされているTomcatで設定してみます。

infoScoop OSS 3.1.0 quick startは下記URLからダウンロードできます。
http://www.infoscoop.org/index.php/ja/download/file/65-infoscoop-3.1.0-quickstart.zip.html

infoScoop OSS 3.1.0 quick startのインストール方法は下記のURLをご参照下さい。
http://www.infoscoop.org/index.php/document-310/installation-guide/quickstart-setup.html

セッションレプリケーションにはいくつか方法があるようですが、今回はJDBCを使ってデータベースにセッション情報を保存する方法を試しました。

設定手順は大きく分けると下記のような手順になります。

  1. データベースにセッション情報保存用のテーブルを作成する
  2. コンテキストファイルにデータベース情報を記述する
  3. tomcatのシステムプロパティに宣言を記述する
  4. データベースのドライバーを<TOMCAT_HOME>/libに追加する

これらの手順はinfoScoop OSS quick startをインストール後に行なって下さい。

各手順の詳細を説明します。

1.データベースにセッション情報保存用のテーブルを作成する

今回はquickstartで利用する「iscoop」というデータベースにセッション情報保存ようのテーブルを作成します。

下記sqlを対象のデータベースに対して実行します。

create table tomcat_sessions (
session_id varchar(100) not null primary key,
valid_session char(1) not null,
max_inactive int not null,
last_access bigint not null,
app_name varchar(255),
session_data mediumblob,
KEY kapp_name(app_name)
);

2.コンテキストファイルにデータベース情報を記述する

quick startのtomcat内にあるinfoscoop.xmlにデータベース情報を記述します。

apache-tomcat-6.0.28/conf/Catalina/localhost/infoscoop.xml

上記ファイルのcontext要素内に下記の情報を追記します。

<Manager className='org.apache.catalina.session.PersistentManager'
 saveOnRestart='false' minIdelSwap='0' maxIdleSwap='0' maxIdleBackup='1'>
<Store className="org.apache.catalina.session.JDBCStore"
driverName="com.mysql.jdbc.Driver"
checkInterval="1"
connectionURL="jdbc:mysql://DBサーバー名:3306/iscoop?useUnicode=true&amp;characterEncoding=UTF-8&amp;user=DB接続ユーザー名&amp;password=DB接続ユーザーパスワード"
sessionTable="tomcat_sessions"
sessionIdCol="session_id"
sessionDataCol="session_data"
sessionValidCol="valid_session"
sessionMaxInactiveCol="max_inactive"
sessionLastAccessedCol="last_access"
sessionAppCol='app_name' />
 </Manager>

connectionURLに記述するDBへの接続情報はお使いの環境に合わせて編集して下さい。

3.tomcatのシステムプロパティに宣言を記述する

tomcatのシステムプロパティファイルは下記の場所にあります。

apache-tomcat-6.0.28/conf/catalina.properties

上記ファイルの一番下に下記の内容を追記します。

org.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true

4.データベースのドライバーを<TOMCAT_HOME>/libに追加する

quick start内のtomcatにはすでに追加されているので、特に作業は必要ありません。

quick startを利用しない場合は、データベースのドライバーを追加して下さい。

以上でセッションレプリケーションの設定ができます。

参考:http://d.hatena.ne.jp/sato-shi/20110122/p3

Nginx + Tomcatのセットアップ

| コメントをどうぞ

え〜っくす!さ〜け〜んでみろ〜♪(にゃー!)
こんにちわ。DiceK Mikamiです。

今回は冒頭の通りNginxとTomcatの連携に関して紹介したいと思います。
Nginx(えんじんえっくす)はハイパフォーマンス&ローコストのオープンソースHTTPサーバです。
HTTPサーバと言えば、ApacheやIISを思い浮かべますが、それに続く第三の選択肢として十分に検討の余地がある優れたサーバです。
WordPressやHuluなどと言った大型サイトの基盤を支えているという実績もすでにあります。
また、名前がかっこいいのも良いですね。

サービスベンダー「弊社のサービスはNginxをベースに構築しております」
エンドユーザー(か、かっこいい。。。)

などとなり、ユーザーに自慢できますね。
はい。なりませんね。
 

検証環境

Macbook Pro Early 2011
Mac OSX 10.7.3 Lion
Java 1.6.0_29
 

用意するもの

  • Nginx本体
  • infoScoop OSS 3.1.0 クイックスタート

先日リリースされたばかりのinfoScoop OSS 3.1.0を利用して、環境構築を進めて行きたいと思います。
クイックスタートにはTomcat6が同梱されておりますので、手軽に動作環境をセットアップするには便利です。
(infoScoopのインストールはinfoScoop.orgサイトをご参照ください)
 

Nginxのインストール

Nginxをインストールするためには、3つの方法があります。

  1. バイナリファイルからインストール
  2. ソースからインストール
  3. パッケージ管理システムからインストール

ご利用になる環境にあわせてインストールすることができます。
yumやapt-getなどでもインストールできますので、インストール自体は非常に簡単です。
今回は3番の方式を採用して、MacPorts経由でインストールしてみます。(Homebrewとかでもインストールできるようです)

$ sudo port install nginx

とても簡単です。
起動コマンドと終了コマンドはMacPorts経由で行うことができます。

起動

$ sudo port load nginx

終了

$ sudo port unload nginx

localhostにアクセスしてみると、起動確認の画面が表示されます。
(nginx.confを設定しないと表示されないかもしれません)

 

NginxとTomcatの連携

Tomcatとの連携を設定ファイルに記述していきます。
MacPorts経由の場合、設定ファイルは「 /opt/local/etc/nginx 」配下に置かれています。
ここに配置されている「 nginx.conf.sample 」を「 nginx.conf 」にリネームし、以下のように記述します。(不要な部分は記述していません)

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    /* 追加部分 */
    upstream tomcat {
        server <IPアドレス>:8080 weight=10
    }
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;


        location / {
            root   share/nginx/html;
            index  index.html index.htm;
        }

        /* 追加部分 */
        location /infoscoop {  
            proxy_pass http://tomcat;  
        } 

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   share/nginx/html;
        }
    }
}

連携設定はこれだけです。
 

動作確認

実際に動作infoScoopにアクセスしますとポータル画面が表示されます。

 

URL

Nginx.org