LVS vs HAProxy, что выбрать?

21

Я ищу решение для стратегии балансировки нагрузки и отработки отказа, в основном для больших веб-приложений. У нас есть множество сбалансированных сервисов, таких как веб, MySQL и многие другие сервисы на основе HTTP или TCP. Но я не уверен, каковы их плюсы и минусы, и что я должен выбрать.

Микки Шайн
источник

Ответы:

24

Самое важное, что отличает два решения (LVS, HAproxy), это то, что одно работает на уровне 4 (LVS), а другое на уровне 7 (HAproxy). Обратите внимание, что ссылки на слои взяты из сетевой модели OSI.

Если вы понимаете это, вы сможете использовать один в нужном месте. Например: если вам нужно балансировать, основываясь исключительно на количестве соединений (скажем), балансировщика нагрузки 4-го уровня должно быть достаточно; с другой стороны, если вы хотите, чтобы балансировщик нагрузки основывался на времени ответа HTTP, вам потребуется LB более высокого уровня.

Недостатками использования LB более высокого уровня является необходимый ресурс (для того же объема, скажем, трафика). Плюсы очевидны - например, «проверка на уровне пакетов», «маршрутизация протокола» и т. Д. - все гораздо сложнее, чем простая «маршрутизация пакетов».

Последнее, что я хочу сделать, это то, что HAproxy - это пользовательское пространство («гораздо проще настраивать / настраивать», но медленнее (производительность)), в то время как LVS находится в пространстве ядра («быстро, как ад», но жестко, как ядро). ). Кроме того, не забывайте, что «обновление LVS может означать изменение ядра - значит, перезагрузка» ...

В заключение, используйте правильный инструмент для правильной работы.

Raven007
источник
Мне нравится, как люди все еще используют уровни OSI, несмотря на то, что они никогда не были реализованы в реальности.
Кубанчик
9

Вы должны использовать оба: HAProxy - это отличный балансировщик нагрузки, а LVS - это решение для восстановления после отказа и предотвращения единой точки отказа.

LG.
источник
1
+1, за исключением того, что HAProxy в основном используется для HTTP, поскольку в противном случае скрывает исходный IP-адрес запроса, что может быть проблемой (например, для SMTP RBL)
Антуан Бенкемун
3
Я использую HAProxy для чистых TCP-серверов и работает очень хорошо. Исходный Ip скрытый является проблемой для всех балансировщиков нагрузки.
LG
2
Я считаю, что скрытый IP-адрес является одной из причин, по которым распределители нагрузки не часто используются для служб SMTP.
Стефан Ласевский
3
lvs и ha proxy делают то же самое. Я предпочитаю LVS, действительно быстрее, потому что он работает на ядре.
Диего Войтасен
1
@AntoineBenkemoun вы можете использовать прозрачный режим HAProxy, чтобы показать клиентский IP.
Томас Деко