web-dev-qa-db-ja.com

2台のマシン間でTomcat共有セッション/クラスターを使用できますか?

いくつかのサーバーに分散された複数のTomcatサーバーのセットアップがあり、すべて同じものを実行しています。 ApacheはApacheの上にあり、ロードバランサーはApacheサーバーの前にあります。共有セッションを使用してTomcatをクラスター化し、アプリのデプロイ中のダウンタイムとユーザーの中断を最小限に抑えたいと考えています。

クラスタリングが同じサーバー内で機能することは知っていますが、異なるマシン上のサーバー間でセッションを共有するようにTomcatをセットアップすることは可能ですか?

=> Server 1
==> Apache 1
===> Tomcat 1

=> Server 2
==> Apache 2
===> Tomcat 2

サーバー/ Tomcat 1が停止すると、ユーザーとそのセッションはサーバー/ Tomcat2に転送されます。その逆も同様です。

6
Snorri

私は同じことを設定することに取り組んでいます、Apacheからの以下のリンクはこれを達成する方法の概要を示しています:

http://Tomcat.Apache.org/Tomcat-7.0-doc/cluster-howto.html

これには基本的に2つの部分があります:

1)セッションオブジェクトをシリアル化可能にする

2)Tomcat(server.xml)でクラスタリング構成をセットアップします。

使用するTomcatマネージャーによっては、ノード間の通信を有効にするために、ノードでマルチキャストを有効にする必要がある場合があります。セッションレプリケーションは、これらのマルチキャストpingを介してTomcatによって処理されます。このアプローチを使用している多くの人々を見て、それは彼らのために機能しました(それを行うための標準的/簡単な方法のようです)。

また、これについての詳細なブログ投稿もあります。5つの部分があり、いくつかのビデオがあります。

http://www.ramkitech.com/2012/10/Tomcat-clustering-series-simple-load.html

追伸:

2つのTomcatノードでの同じ問題に対して、同じアプローチを使用しています。私は以下に文書化されている小さな問題に直面しています。あなたが成功した/同様の問題に遭遇した場合は、これを見てください

Tomcatセッションレプリケーションの問題

3
bub

Webセッション用のテラコッタ を見てください。

Terracottaの高速で信頼性の高いWebセッションプラグインを使用すると、データベースに過負荷をかけたり、アプリケーションを書き直したりすることなく、ステートレスWebアーキテクチャのスケーラビリティの利点を得ることができます。 Terracotta for Sessionsは、お気に入りのWebフレームワークと独自のカスタムセッションオブジェクトで動作します。

Webセッションチュートリアル は、製品を評価するために行う5つの簡単な手順を示しています(FOSS)。

2
Robert Munteanu

セッションをデータベースに保存できるため、両方のtomcatからアクセスできます。または、tomcat間の共有ディレクトリに保存します。

0
sntg

セッションは memcached に保存できます。これは、両方のサーバー間で共有されます。これにより、データベース内の共有セッションやn台のサーバー間の共有ディレクトリを使用するよりも優れたパフォーマンスとスケーラビリティが得られます。

0
Tom O'Connor