Назад | Перейти на главную страницу

Высокая доступность веб-приложения Tomcat

У меня настроена кластеризация apache-tomcat (серверы Ubuntu), и я использовал технику кластеризации, поддерживаемую tomcat, с mod_jk после ссылка на сайт что понятно и легко понять.

Я сделал это в своей локальной сети с помощью three computers 1 as LB and other two as tomcat web servers и я подумал о внедрении этого в производство, когда я полностью удовлетворен настройкой.

Я перешел по многим ссылкам, и вставленная мной ссылка является одной из них, и я настроил ее на другом физическом компьютере. Конфигурация successful и я почувствовал, что это очень легко настроить. Я проверил остановку одного веб-сервера tomcat, и он немедленно начал отправлять запрос на другой веб-сервер. Насколько я знаю, мне ясно, что эта конфигурация поддерживает как HA, так и LB.

Ниже приведены мои детали кластеризации apache tomcat:


1 Load Balancer(192.168.1.100)
2 web Servers(192.168.1.101, 192.168.1.102)

On all the three servers, I installed apache2 & tomcat6 and configured tomcat to run on port 80 with mod_jk on all the servers.

Load Balancer:

Configured apache2 and tomcat with mod_jk setup(both are running on port 80)
As per the link I setup workers.properties with same default ports(as I'm using different machines)


Web Servers:

Let Actual site: www.mydomain.com which is pointing to LB
Configured apache2 and tomcat with mod_jk setup(both are running on port 80)

I can access web application by pointing the browser to following:
http://192.168.1.101/myapp
http://192.168.1.102/myapp

In either of the web servers I configured tomcat virtual hosting with actual site name(www.mydomain.com) as Host Name

У меня проблема с приложением tomcat jsp. На любом веб-сервере, если myapp каталог удаляется из веб-приложений, балансировщик нагрузки по-прежнему перенаправляется на этот веб-сервер, и пользователь должен столкнуться с 404 страница ошибки, которую ни apache, ни tomcat не идентифицируют и не перенаправляют на другие доступные веб-серверы.

У кого-нибудь есть метод, позволяющий перенаправлять запросы клиентов на другие веб-серверы в кластере, когда запрошенное приложение (myapps) в веб-приложениях недоступно на веб-сервере?

Спасибо!

Обновить: 1

Попытка выполнить указанную ниже рабочую директиву в workers.properties из load balancer. Сейчас 404 страница ошибки не отображается, когда myapp в веб-приложениях удаляется, но отображается 503 ошибка (обычно это отображается, когда tomcat остановлен). Но все равно не удалось перенаправить на другой доступный сервер, когда myapps удален.

worker.<worker-name-here>.fail_on_status=-404,-500,503

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

Ваше решение также не является HA, поскольку балансировщик нагрузки - это SPOF (единственная точка отказа). Вы можете добавить еще одну машину и использовать keepalived для отработки отказа.

HAproxy может работать на любом порту, который вы хотите, вы даже можете балансировать различные виды трафика, не только http, и в то же время настраивать внешние интерфейсы (точки входа для балансировки служб) и бэкэнды (контейнер для экземпляров служб и поведение балансировки). Вы можете увидеть здесь пример: http://www.tomcatexpert.com/blog/2010/07/12/trick-my-proxy-front-tomcat-haproxy-instead-apache

Что касается аварийного переключения, я бы использовал keepalived. Он проверяет, доступен ли ваш активный балансировщик нагрузки, и переключается на вторичный компьютер, если его нет, перемещая ваш виртуальный IP-адрес.

Вы можете проверить эту ссылку для примера: http://www.howtoforge.com/setting-up-a-high-availability-load-balancer-with-haproxy-keepalived-on-debian-lenny