Как настроить HAProxy с аварийным переключением?

14

Я понимаю, что для восстановления после сбоя в настройке балансировки нагрузки HAProxy вам понадобятся две машины, на которых запущен HAproxy (и маршрутизируйте его на несколько экземпляров веб-сервера). Но в этом случае, скажем, abcd.com, как разделить / направить этот трафик на 2 IP-адреса вместо одного? DNS обычно разрешает доменные имена в один IP. Как мы делаем это при использовании бесплатных / дешевых инструментов / услуг?

mixdev
источник
Проверьте это тоже serverfault.com/questions/238605/…
mixdev

Ответы:

20

Если у вас такая большая нагрузка, что вам нужно балансировать нагрузку между двумя экземплярами haproxy, то циклическая перестановка DNS - неплохая идея (хотя я был бы удивлен, если бы у вас была такая нагрузка). Циклическая перестановка DNS не обеспечит хорошее восстановление после отказа.

В Stack Overflow мы используем heartbeatдля предоставления одного виртуального IP-адреса, этот IP-адрес активен только на одном хосте haproxy за раз (если он отключается, другой получает этот IP-адрес). Вы можете использовать heartbeat, чтобы иметь IP-адрес на каждой машине, а затем циклический перебор DNS между ними. Если один из них потерпит неудачу, то другой будет иметь оба этих IP-адреса.

HAProxy использует около 1-5% ЦП на нашем физическом сервере для балансировки нашего трафика, который имеет один Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. Таким образом, HAProxy может легко обрабатывать большой объем трафика.

Кайл Брандт
источник
1
У меня точно нет ТАКОГО вида трафика. Это просто попытка избежать SPOF.
mixdev
2
@mixdev: В этом случае просто укажите DNS на один виртуальный IP-адрес, предоставленный heatbeat, и вам будет хорошо. Вы просто оставляете haproxy работающим на обеих машинах. Обязательно проверьте отказоустойчивость сердцебиения перед тем, как начать работу.
Кайл Брандт
@KyleBrandt: Что, если процесс haproxy должен был умереть? У вас есть что-нибудь настроенное, что позволило бы перемещать виртуальный IP на основе этого?
CarpeNoctem
@CarpeNoctem: На данный момент это не охвачено. Я думаю, что и heartbeat, и keepalived могут быть настроены для наблюдения за процессами. Если вы пойдете по этому пути, я бы порекомендовал установить его так, чтобы процесс не выполнялся в течение длительного времени (например, 1 минуты). Вы, вероятно, не хотите, чтобы пульс сбрасывался при ошибке конфигурации. HAProxy проверяет большинство из них -c, но может не уловить такие вещи, как ошибка конфигурации привязки.
Кайл Брандт
5
Для всех, кому не все равно, в Stack мы переехали, чтобы поддерживать хорошую жизнь больше года назад
Кайл Брандт,
24

Как говорит Кайл, heartbeat может быть использован для того, чтобы два haproxy-сервера работали как аварийная пара. Однако в то время как многие люди делают использование сердцебиения для работы, keepalived есть предложить автором HAproxy в.

Он обрисовывает детали в списке рассылки haproxy: http://www.formilux.org/archives/haproxy/1003/3259.html

Вкратце это выглядит так:

  • сердцебиение ориентировано на кластер. Это гарантирует, что только один сервер имеет доступ к ресурсу (т.е. хранилище SAN)

  • keepalived ориентирован на сеть. Это гарантирует, что по крайней мере один сервер имеет IP-адрес.

Coops
источник
-1

Вы можете найти то, что вы ищете здесь: http://blog.haproxy.com/2014/01/17/emulation-activepassing-application-clustering-with-haproxy/

user3595100
источник
1
Пожалуйста, включите полное содержание рецепта в свой пост. Мы не являемся службой ссылок на блог.
Охотник на оленей
1
кроме того, блоги часто отключаются или меняют URL, а затем информация теряется.
Деннис Нольте
Голосуйте против, потому что это совершенно не связано с вопросом.
danieljimenez
@danieljimenez, я думаю, это не совсем не связано, просто недоразумение. OP запросил Active / Passive для самого HAProxy , а user3595100 интерпретировал вопрос как Active / Passive для бэкэнда HAProxy. Тем не менее, размещение ссылки само по себе не является приемлемым ответом.
duct_tape_coder