2

Tomcat6 + Struts + Hibernate+MySqlを使用するJavaEnterpriseWebアプリケーションがあります。現時点では、単一のサーバーで公開されて実行されています。パフォーマンスの問題を解決するには、アプリケーションをクラスター環境に移動する必要があります。とにかく、Tomcat6クラスタリングを以下のように使用したいと思います。

  • フロントエンドとしてWebサーバー(Apache + mod_proxy)を含む負荷分散マシン
  • 一部のアプリケーションサーバーマシン。それぞれがtomcat6インスタンスを実行しています。
  • セッション管理バックエンド
  • そして最後にdbサーバー

このようなもの

これ

ロードバランサーマシンはすべての要求を受信し、バランシングアルゴリズムに応じて、それらをそれぞれのtomacat6マシンにリダイレクトします。ビジネス部分を実行した後、応答はWebサーバーに返され、最後にユーザーに返されます。このシナリオでは、フロントエンドマシンがすべての要求と応答を処理するため、アプリケーションのボトルネックになります。

Apache Tomcatクラスタリングでは、負荷分散メカニズムとWebサーバーを使用する方法はありますか?フロントエンドにロードバランサーを配置し、要求/応答処理部分を複数のWebサーバーに任せることを意味します。

4

1 に答える 1

1

Tomcatは、組み込みのクラスタリングをサポートしていません。ロードバランサーが要求を分散するため、さまざまなTomcatインスタンスが何が起こっているかを知る必要がありません。

あなたがしなければならないことは、あなたのアプリケーションがそれを処理できることを確認することです。たとえば、キャッシュが古くなる可能性があることに注意する必要があります。

インスタンス1のキャッシュにオブジェクトXがあり、インスタンス2で処理されたリクエストによってXが変更されたとします。インスタンス2のキャッシュは正しく、インスタンス1のキャッシュは古くなっています。

解決策は、クラスタリングをサポートするキャッシュを使用するか、変更可能なインスタンスのキャッシュを無効にすることです。しかし、それはTomcatには関係ありません。

于 2011-06-28T07:37:49.540 に答える