2009-04-19 7 views
3

複数のWARを展開した後にPermGenの問題のために頻繁に再起動する必要のあるTomcat 6インスタンスが1つあります。TomcatをApache HTTPインスタンスに戻す最も簡単な方法

プロダクション環境では、接続を失敗しただけの訪問者を残して、サイトを停止することは明らかに悪い習慣です。大きな写真は、1つまたは2つ以上のインスタンスのフェールオーバーTomcatクラスタを設定することですが、今のところ簡単な解決策が必要です:

Tomcatがダウンすると、すべてのリクエストは実行中のApache HTTPサーバーに転送されます1つの単純な "サイトはメンテナンス中"タイプのページです。

私は、Tomcatの前に座って要求を出し、その状態を監視するために、いくつかの小型で高速なプロキシが必要だと考えます。もし死ぬと、Apache HTTPに要求を送るだけです。

アイデア?

答えて

4

あなたは通常、あなたのTomcatインストールの前でApacheを使用することができます。あなたのTomcatにリダイレクトプロキシルールを設定します。それでも問題が解決しない場合、apacheは "503 Service Temporarily Unavailable"を送信し、メンテナンスページに設定することができます。

apacheのアプリケーションファイルはややこの

<VirtualHost *> 
    ServerName example.com 
    ServerAlias *.example.com 
    ServerAdmin [email protected] 

    RewriteEngine on 
    RewriteRule ^/static/(.*) /some/path/for/static/files/static/$1 [L] 
    RewriteRule ^(.*) http://127.0.0.1:8080$1 [P] 

    ErrorLog /var/log/apache2/example/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog /var/log/apache2/example/access.log combined 
    ServerSignature On 

    ErrorDocument 503 /static/site_down.html 
</VirtualHost> 

最初の書き換えルールのようになりますが、これらの静的ファイルをプロキシ処理せずに直接提供されているディレクトリからの特定のURI以下のすべてのファイルを(/静的/)に変更します。これを使ってウェブサイトから静的なリソースをすべて提供することもできます。これは、Tomcatの前にApacheがあるという一般的な(わずかな)パフォーマンスの低下をいくらか補うものです。

ErrorDocumentディレクティブは、この静的パスにあるドキュメントsite_down.htmlに対する通常の503応答を変更します。このため

あなたはmod_rewriteをしてmod_proxyを/ mod_proxy_httpを有効にする必要があると があなたのapache2の設定でプロキシを有効に動作するように

<Proxy *> 
     Order Deny,Allow 
     Deny from all 
     Allow from all 
</Proxy>