Самый простой способ поддержать Tomcat с помощью экземпляра Apache HTTP

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

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

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

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

Идеи?

1 ответ

Решение

Вы можете просто использовать 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>
Другие вопросы по тегам