Вопрос или проблема
В настоящее время у нас следующая среда:
Front Server A: работает под управлением Apache 2.2, mod_jk 1.2.30
Backend сервер B: работает под управлением Jboss 5.1.0
Все работает нормально
Мы пытаемся обновить фронтальный сервер A и перейти на Apache 2.4, mod_jk 1.2.49, назовем его сервером C
Как только новый сервер запустился, мы заметили следующее:
1- если мы удалим сервер A и заменим его сервером C, все выглядит нормально и работает как ожидалось
2- когда мы перезагружаем сервер Jboss на сервере B, мы заметили, что веб-сервер отправляет запрос на страницу аутентификации управления (JMX консоль) вместо страницы приложения, и на странице появляется всплывающее окно для ввода имени пользователя и пароля
Мы проверили все настройки и конфигурации, все выглядит нормально.
Вот конфигурация для workers.properties
# Определите список рабочих, которые будут использоваться
# для сопоставления запросов
worker.list=loadbalancer,status
# Определите NodeA
# измените хост на ваш IP-адрес или DNS-имя.
worker.nodeA.port=8009
worker.nodeA.host=192.168.0.242
worker.nodeA.type=ajp13
worker.nodeA.lbfactor=1
# Поведение балансировки нагрузки
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=nodeA
worker.loadbalancer.sticky_session=1
# Рабочий статус для управления балансировщиком нагрузки
worker.status.type=status
Любая помощь или поддержка будет весьма appreciated
Ответ или решение
Ваш вопрос касается проблемы с конфигурацией Apache 2.4 и mod_jk, когда осуществляется переход с Apache 2.2. на новою версию, а так же когда серверы JBoss не перенаправляют запросы корректно. Давайте рассмотрим возможные причины и решения данной проблемы.
Анализ проблемы
-
Поведение при перезапуске JBoss: Когда перезапускается JBoss на сервере B, вы сталкиваетесь с тем, что запросы перенаправляются на страницу авторизации JMX консоли, а не на ваше приложение. Это может быть связано с тем, что сервер Apache не распознает правильно контекст приложения или отправляет запросы на неверный AJP-порт.
-
Проблемы с конфигурацией workers.properties: Хотя ваша конфигурация выглядит правильно, есть несколько аспектов, на которые стоит обратить внимание:
-
Порт JBoss: Убедитесь, что JBoss правильно настроен на прослушивание AJP-порта 8009, и что он открыт и доступен. Если используется другой порт, необходимо изменить его в конфигурации
workers.properties
. -
Контексты приложений: Убедитесь, что приложение действительно доступно по предполагаемому контексту. В JBoss могут быть определены разные контексты, и вы должны убедиться, что запросы направляются на верный контекст.
-
Обработка запросов: При использовании
mod_jk
настройте соответствие между запросами и вашими приложениями, используяJkMount
. Например:JkMount /yourapp/* loadbalancer
-
Рекомендации по исправлению
-
Проверьте настройки JBoss: Убедитесь, что
server.xml
JBoss уже настроен для работы с AJP, иAJP
подключен на порту 8009 (или любом другом, который вы используете). -
Настройка JkMount в Apache: Добавьте необходимые директивы JkMount в конфигурацию вашего виртуального хоста Apache, чтобы явно указать, какие URL-адреса должны обрабатываться с использованием
mod_jk
:<VirtualHost *:80> JkMount /yourapp/* loadbalancer JkMount /yourapp/status status </VirtualHost>
Замените
/yourapp
на фактический контекст вашего приложения. -
Логи: Проверьте логи Apache (
error.log
иaccess.log
) и логи JBoss. Это поможет вам обнаружить любые ошибки или проблемы во время обработки запроса. -
Параметры безопасности: При настройках в JBoss может потребоваться переопределить некоторые параметры безопасности, чтобы удостовериться, что доступ к приложению не блокируется. Проверьте параметры безопасности в
web.xml
приложения. -
Тестирование: Следует протестировать соединение с JBoss через AJP, используя утилиты, такие как
curl
, для отправки запросов напрямую на JBoss, чтобы убедиться, что порт должным образом обрабатывает запросы.
Заключение
Если после выполнения всех перечисленных шагов проблема не решается, пожалуйста, предоставьте дополнительные детали конфигурации, а также логи, чтобы помочь точнее определить источник проблемы. Удачи в решении вашей проблемы!