Самый простой способ поддержать 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>