Самый простой способ поддержать Tomcat с помощью экземпляра Apache HTTP
-
12-09-2019 - |
Вопрос
У меня есть один экземпляр Tomcat 6, который часто приходится перезагружать из-за проблем с PermGen после нескольких развертываний WAR.
В производственной среде закрывать сайт явно плохая практика, оставляя посетителям только сбой соединения.Общая картина заключается в настройке отказоустойчивого кластера Tomcat из еще одного или двух экземпляров, но сейчас мне хотелось бы простого решения:
Когда Tomcat не работает, все запросы перенаправляются на HTTP-сервер Apache, на котором работает 1 простая страница типа «Сайт находится на обслуживании».
Я предполагаю, что мне нужен какой-нибудь небольшой, сверхбыстрый прокси-сервер, который будет работать перед Tomcat, подавать ему запросы и следить за его состоянием.Если он умирает, он просто отправляет эти запросы на Apache HTTP.
Идеи?
Решение
Вы можете просто использовать 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>