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

Может ли (hw) loadbalancer проверять коды состояния HTTP?

В настоящее время мы разрабатываем несколько веб-сайтов с использованием 2 интерфейсных веб-серверов (с использованием apache и tomcat / jboss) с балансировщиком нагрузки перед ними. Поскольку я программист, а не системный администратор, я могу только догадываться, на что способен приличный аппаратный балансировщик нагрузки. Мне было интересно, может ли аппаратный балансировщик нагрузки проверять коды состояния HTTP, чтобы трафик перенаправлялся только на один сервер, если другой не работает для обслуживания (который теперь отправляет код ошибки 503 HTTP).

Спасибо!

Бен

Да, это делают практически все балансировщики нагрузки. Большинство балансировщиков нагрузки также пойдут дальше и выведут мертвый HTTP-сервер из строя, если он:

  • просто истекает время ожидания или не отвечает на TCP / IP
  • не отвечает действительным HTTP в течение установленного времени ожидания, т.е. сокет TCP подключен, но не HTTP, или HTTP отправляет 200 OK, но не отвечает на ОПЦИИ HTTP и т. д.
  • если конкретная страница состояния не содержит определенной предварительно заданной текстовой строки / не соответствует предварительно заданному хешу MD5. Это очень удобно для проверки того, что соединение с базой данных установлено (путем программирования простой страницы, которая считывает некоторые данные из БД и отображает их).

Редактировать: Кроме того, у хороших балансировщиков нагрузки есть простой способ установить сервер в режим обслуживания, то есть балансировщик нагрузки перестанет отправлять новые запросы на этот сервер и отобразит в своем пользовательском интерфейсе, когда сервер перестанет получать трафик. После этого вы можете свободно выполнять необходимое обслуживание сервера перед его повторным вводом в эксплуатацию.

Кроме того, большинство балансировщиков нагрузки имеют концепцию аварийного сервера, то есть, если все обычные HTTP-серверы не работают, весь трафик будет отправлен на назначенный аварийный сервер в вашей локальной сети, который затем может доставить статическое сообщение «мы не работаем на техническое обслуживание, проверьте назад позже »страница.

Coyote Point делает хорошие устройства балансировки нагрузки низкого уровня ИМХО. Есть много других поставщиков балансировщиков нагрузки низкого уровня; Барракуда это один из примеров. В этом контексте «low-end» не является отрицательным, просто рынок разделен на две части:

  • «недорогие» поставщики, которые обычно берут не более 20000 долларов США за свои лучшие продукты и продают их как напрямую, так и через небольших торговых посредников.
  • «корпоративные поставщики», такие как F5, Cisco, Foundry и т. д., которые могут взимать гораздо больше и используют модель продаж премиальных брендов.

Если OP не имеет собственных навыков системного администратора, то покупка устройства, не требующего особого обслуживания, имеет большой смысл. Если вы хотите и можете настроить сервер Unix, тогда возьмите посмотри на этот пост. Если вы используете Microsoft Windows, то Microsoft Маршрутизация запросов приложений версия 1 или 2 (бета) могут быть хорошими решениями (я их не так хорошо знаю).

Apache / tomcat, конечно, может - посмотрите документацию для "fail_on_status".

Балансировщики нагрузки BigIP могут это сделать. Но чтобы иметь хорошую производительность, необязательно приобретать большой аппаратный LB. Проверьте nginx и лак. Varnish был специально написан как кэширующий балансировщик нагрузки и обладает широкими возможностями настройки. http://varnish.projects.linpro.no/