LVS + HA Proxy для балансировки нагрузки от L4 до L7

В настоящее время мы используем прокси-сервер HA для наших потребностей балансировки нагрузки. Мы планируем интегрировать LVS с прокси-сервером HA, чтобы создать решение для балансировки нагрузки, которое может позаботиться о балансировке нагрузки от L4 до L7 и HA.

Причины для LVS являются

  1. Лучшая поддержка L4 для длительных сессий TCP
  2. Прямой возврат на сервер (невозможно в HA-прокси)
  3. Отказ для существующих соединений, когда активный балансировщик нагрузки выходит из строя.

Прямо сейчас, с HA Proxy, резервный балансировщик нагрузки заботится только о балансировке нагрузки новых сеансов с внутренними серверами, и существующие соединения, которые обслуживались с помощью активного балансировщика нагрузки, теряются. Мы надеемся, что, поскольку LVS работает в пространстве ядра, он может переключаться даже при существующих сеансах.

Кто-нибудь здесь использовал LVS и HA Proxy в комбинации?

Если да, не могли бы вы предоставить несколько советов по интеграции обоих - нужно ли LVS забирать все пакеты, а затем отправлять запросы L7 в HA Proxy?

1 ответ

Я развернул гибридную настройку IPVS/HAProxy. HAProxy использовался для принятия довольно сложных решений L7, что требовало его масштабирования при относительно небольших объемах трафика. Внедрение IPVS предоставило возможность масштабирования узлов HAProxy, а также избавило от необходимости управлять аварийным переключением на этом уровне. Это работало нормально, для конкретного случая использования, в котором я нуждался.

Я бы не рекомендовал эту настройку для вашей заявленной ситуации. Имея оба в соединении, вы в первую очередь устраните причины для использования IPVS, потому что, пока HAProxy находится где-то в стеке, он будет вести себя так же, как и сейчас. Любые проблемы, с которыми HAProxy сталкивается с долгоживущими TCP-соединениями, все еще будут существовать (поскольку TCP-соединения все еще проходят через экземпляр HAProxy), вы сможете выполнять DSR только из коробки HAProxy в Интернет, и когда HAProxy окно исчезнет, ​​вы все равно потеряете все соединения, которые проходили через этот экземпляр.

Если вам не нужны особые функции, которые предоставляет вам HAProxy (интеллект L7), просто используйте IPVS (для тех преимуществ, о которых вы заявили, что вы хотите). Если вам нужны конкретные функции, которые предоставляет вам HAProxy, используйте его вместо IPVS. Да, это компромисс. Вам нужно будет решить, какой из них важнее, и какой набор недостающих функций вы можете с легкостью создать (например, перенеся некоторый интеллект на серверную часть или выполнив более эффективную работу по устранению разорванных соединений и восстановлению без видимое для пользователя воздействие).

Только тогда, когда вам нужны функции HAProxy, и вам нужно масштабировать HAProxy, потому что у вас есть ситуация, в которой один блок HAProxy не будет работать, а один блок IPVS DSR будет работать, тогда вы должны использовать оба в комбинации.

Другие вопросы по тегам