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

Балансировщик нагрузки возвращает ответ клиенту или рабочему?

В Apache, mod_proxy_balancer поддерживает балансировку нагрузки самым простым способом.

Пожалуйста, обратитесь к Простая балансировка нагрузки HTTP с помощью Apache. Когда запрос обрабатывается рабочими (узлами балансировки нагрузки), он поступает на сервер балансировки нагрузки, а затем переходит к клиенту, или он идет напрямую от рабочих?

Пример:
Способ 1: Веб-клиент -> Балансировщик нагрузки -> Рабочий -> Балансировщик нагрузки -> Веб-клиент

ИЛИ

Способ 2: Веб-клиент -> Балансировщик нагрузки -> Рабочий -> Веб-клиент

Что происходит в балансировщике нагрузки Apache?

Даже при возврате данные должны проходить через прокси-сервер, поскольку именно сервер поддерживает TCP-соединение клиента и должен отправлять через него ответ.

Решение без прокси-сервера, работающего на обратном пути, действительно существует, но его намного сложнее правильно реализовать (обычно используются грязные трюки TCPIP / iptables).

РЕДАКТИРОВАТЬ: хорошее решение без прокси-сервера:

«Чистое решение», которое волшебным образом пересылало бы TCP SYN и выгружало бы все остальное из балансировщика нагрузки, вероятно, мечта, и я не знаю ни одной такой вещи.

Вместо этого обычно используются два подхода:

- Балансировка нагрузки DNS: иметь больше серверов на нескольких общедоступных IP-адресах, указать больше записей A для вашего веб-сайта, возможно, заставить ваш DNS-сервер перетасовать ответ для добавления случайности. Прекрасно работает на многих коммерческих установках. Плюсы: простой, Минусы: "ломкий", и вам нужно публичное IP-пространство.

- Балансировка нагрузки только с брандмауэром: Скорее всего, есть один маршрутизатор, который в любом случае обрабатывает весь ваш трафик, поэтому добавление к нему нескольких правил брандмауэра обычно не вредит реальной производительности. То, что вы ищете (в Linux), - это использование цели DNAT iptables и какое-то «случайное» или «хеширующее» совпадение. Я лично использую что-то подобное на нескольких установках:

iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -m random --average 50 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -j DNAT --to 192.168.0.3

Замените 11.22.33.44 своим общедоступным IP-адресом и 192.168.x.x своими серверами. Не забудьте изменить значения --average.

Плюсы: снаружи все решение выглядит как один сервер, балансировка нагрузки не может быть нарушена путем DoSing-атаки на один сервер и т. Д. Минусы: вы хотите, чтобы маршрутизатор и все серверы находились в одном месте.