Самый простой способ поддержать Tomcat с помощью экземпляра Apache HTTP - PullRequest
3 голосов
/ 19 апреля 2009

У меня есть один экземпляр Tomcat 6, который часто нужно перезагружать из-за проблем PermGen после нескольких развертываний WAR.

В производственной среде явно плохая практика - отключать сайт, оставляя посетителей только с ошибкой подключения. Основная задача - настроить отказоустойчивый кластер Tomcat на один или два экземпляра, но сейчас мне нужно простое решение:

Когда Tomcat не работает, все запросы перенаправляются на HTTP-сервер Apache с 1 простой страницей типа «Сайт находится на обслуживании».

Полагаю, мне нужен какой-нибудь маленький, очень быстрый прокси, чтобы сидеть перед Tomcat, кормить его запросами и следить за его состоянием. Если он умирает, он просто отправляет эти запросы в Apache HTTP.

Идеи

1 Ответ

4 голосов
/ 19 апреля 2009

Вы можете просто использовать Apache перед вашей установкой tomcat. Установите правило перенаправления прокси для вашего кота. Если это не сработает, apache отправит «Служба 503 временно недоступна», которую вы можете настроить в качестве страницы обслуживания.

Файл приложения 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 /) на каталог, из которого эти статические файлы обслуживаются напрямую без прокси. Вы также можете использовать это для обслуживания всех статических ресурсов вашего веб-сайта, что в некоторой степени компенсирует общую (небольшую) потерю производительности при наличии apache перед вашим котом.

Директива ErrorDocument изменяет обычный ответ 503 на документ site_down.html, лежащий по этому статическому пути.

Чтобы это работало, вам нужно включить mod_rewrite и mod_proxy / mod_proxy_http и включите прокси в вашем конфиге apache2

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