LVS + HA Proxy для балансировки нагрузки от L4 до L7
В настоящее время мы используем прокси-сервер HA для наших потребностей балансировки нагрузки. Мы планируем интегрировать LVS с прокси-сервером HA, чтобы создать решение для балансировки нагрузки, которое может позаботиться о балансировке нагрузки от L4 до L7 и HA.
Причины для LVS являются
- Лучшая поддержка L4 для длительных сессий TCP
- Прямой возврат на сервер (невозможно в HA-прокси)
- Отказ для существующих соединений, когда активный балансировщик нагрузки выходит из строя.
Прямо сейчас, с 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 будет работать, тогда вы должны использовать оба в комбинации.