Я ищу решение для балансировки нагрузки и стратегии аварийного переключения, в основном для больших веб-приложений. Нам нужно сбалансировать множество сервисов, таких как веб, MySQL и многие другие сервисы на основе HTTP или TCP. Но я не уверен, каковы их плюсы и минусы, и что мне следует выбрать.
Самое главное, что отличает два решения (LVS, HAproxy), это то, что одно работает на уровне 4 (LVS), а другое - на уровне 7 (HAproxy). Обратите внимание, что ссылки на уровни взяты из сетевой модели OSI.
Если вы это понимаете, вы сможете использовать его в нужном месте. Например: если вам нужно балансировать, основываясь исключительно на количестве подключений (скажем), балансировщика нагрузки уровня 4 должно хватить; с другой стороны, если вы хотите использовать балансировщик нагрузки на основе времени ответа HTTP, вам понадобится LB более высокого уровня.
Недостатком использования LB более высокого уровня является необходимый ресурс (для того же объема, скажем, трафика). Плюсы очевидны - подумайте об «проверке уровня пакетов», «маршрутизации протокола» и т. Д. - это вещи намного более сложные, чем простая «маршрутизация пакетов».
Последнее, что я хочу сказать, это то, что HAproxy - это пользовательское пространство (подумайте, «гораздо проще настроить / настроить», но медленнее (производительность)), а LVS находится в пространстве ядра (подумайте «чертовски быстро», но жестко, как ядро ). Также не забывайте о том, что «обновление LVS может означать изменение ядра - следовательно, перезагрузка» ...
В заключение, используйте правильный инструмент для правильной работы.
Вы должны использовать и то, и другое: HAProxy - отличный балансировщик нагрузки, а LVS - решение для аварийного переключения и предотвращения единой точки отказа.