Я понимаю, что для переключения при отказе в настройке балансировки нагрузки HAProxy вам понадобятся две машины, на которых запущен HAproxy (и направить его на несколько экземпляров веб-сервера). Но в этом случае, скажем, abcd.com, как разделить / направить этот трафик на 2 IP-адреса вместо одного? DNS обычно разрешает доменные имена в один IP. Как это сделать, используя бесплатные / дешевые инструменты / услуги?
Как говорит Кайл, сердцебиение может использоваться для того, чтобы два сервера haproxy работали как пара аварийного переключения. Однако, хотя многие люди используют сердцебиение для работы, оставайся живым предложено автором haproxy.
Он подробно описывает список рассылки haproxy: http://www.formilux.org/archives/haproxy/1003/3259.html
Вкратце это выглядит так:
сердцебиение ориентировано на кластер. Это гарантирует, что только один сервер имеет доступ к ресурсу (например, хранилищу SAN)
keepalived ориентирован на сеть. Это гарантирует, что хотя бы один сервер имеет рассматриваемый IP-адрес.
Если у вас такая большая нагрузка, что вам нужно балансировать нагрузку между двумя экземплярами 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 обычно легко справляется с большим объемом трафика.
Вы можете найти здесь то, что ищете: http://blog.haproxy.com/2014/01/17/emulating-activepassing-application-clustering-with-haproxy/