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

Балансировка нагрузки не работает должным образом в Apache в циклическом режиме

Мы сталкиваемся с неожиданным поведением при циклической балансировке нагрузки на Apache, когда один из серверов Tomcat выходит из строя.

Наша установка: у нас есть 2 веб-сервера Apache на переднем конце, использующие модуль mod_jk для балансировки нагрузки с циклическим распределением нагрузки. Мы включили липкость сеанса. Нагрузка сбалансирована между 4 серверами Tomcat, на которых работают приложения.

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

В конце концов, все серверы Tomcat зависают аналогичным образом.

Почему Apache передает всю нагрузку на один сервер, а не распределяет нагрузку?

Сейчас мы пробуем worker.balancer.method=B чтобы узнать, поможет ли это решить нашу проблему.

На изображениях ниже мы видим, что потоки услуг увеличиваются,

(Отправка ответа вместо комментария, поскольку он может быть слишком длинным):

Я не говорю, что «F5 может решить проблему в лучше путь "но:

  • Я бы предпочел выполнять задачу балансировки нагрузки с помощью балансировщиков нагрузки: F5 big ip, среди других продуктов, предназначенных для этой работы.
  • Поскольку у вас небольшая установка (4 кота), я не вижу причин для двух уровней балансировки нагрузки. Имея только F5, проверяющую, что пользовательская страница jsp возвращает 200, imho намного проще.
  • Я помню худший недостаток: когда узел не работает, некоторый трафик все еще направляется на него до следующей проверки работоспособности (~ 5 секунд по умолчанию iirc). Сессия теряется, если узел не работает (возможно, tomcat предлагает возможность обходного пути, например, сеанс в базе данных ...).

Я не думаю, что легко найти «нейтральный» публичный бенчмаркинг / тестирование лучшего оборудования / программного обеспечения для балансировки нагрузки. Могу только посоветовать делать свое, если у вас есть запасной f5 для шахмат.

Как правило, я бы заставил f5 делать столько, сколько они могут: балансировка нагрузки, ssl-сертификаты, переопределение URL-адресов, asm ... Не потому, что f5 лучше, а потому, что удобно иметь все в одном месте. К сожалению, когда http-трафик начинает расти более чем на несколько сотен МБ, вам приходится выполнять некоторую работу с помощью apache вместо f5.