3

複数の WAR デプロイ後に PermGen の問題が発生するため、Tomcat 6 インスタンスを 1 つだけ頻繁に再起動する必要があります。

実稼働環境では、訪問者に接続障害だけを残してサイトを停止することは明らかに悪い習慣です。全体像は、1 つまたは 2 つのインスタンスからなるフェイルオーバー Tomcat クラスターをセットアップすることですが、今のところ、単純な解決策が必要です。

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

Tomcat の前に座ってリクエストを送信し、その状態を監視するには、小型で超高速のプロキシが必要だと思います。停止した場合は、それらのリクエストを Apache HTTP に送信するだけです。

アイデア?

4

1 に答える 1

4

通常、Tomcatインストールの前でApacheを使用できます。Tomcatへのリダイレクトプロキシルールを設定します。それが機能しない場合、apacheは「503Service Temporarily Unavailable」を送信します。これは、メンテナンスページとして設定できます。

apacheアプリケーションファイルは次のようになります

<VirtualHost *>
    ServerName example.com
    ServerAlias *.example.com
    ServerAdmin admin@example.com

    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(/ static /)の下にあるすべてのファイルを、プロキシなしでそれらの静的ファイルが直接提供されるディレクトリに変更します。これを使用して、Webサイトからすべての静的リソースを提供することもできます。これにより、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>
于 2009-04-19T12:13:42.863 に答える