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

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

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

Причины перехода на LVS:

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

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

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

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

Я развернул гибридную настройку 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 будет, если вы затем используйте оба в комбинации.