У меня есть несколько географических регионов для развертывания моей службы, например, Region1, Region2 и Region3. В каждом регионе есть резервный экземпляр haproxy. Каждый haproxy настроен с несколькими внутренними серверами, которые получают запросы на свои частные IP-адреса.
Я использую решение балансировки нагрузки на основе DNS, чтобы направлять трафик каждой страны в самый быстрый из доступных регионов. Решение DNS имеет возможность переключения при отказе, но из-за TTL, интервалов мониторинга и времени распространения это может занять некоторое время.
Если в одном из бэкэндов центра обработки данных возникают проблемы, я бы хотел, чтобы HAProxy из этих регионов направлял трафик в другие регионы, которые находятся в сети (с использованием опции «allbackups», с включенным httpchk для резервных копий), чтобы обслуживать запросы даже с увеличенной задержкой, до тех пор, пока проблема не будет решена локально или пока не сработает отработка отказа DNS. Изначально это казалось хорошей идеей, но теперь я думаю, что это будет время от времени вызывать циклическое перенаправление, и мне интересно, есть ли у кого-нибудь предложения о том, как реализовать такую настройку ( или лучшие альтернативные конфигурации).
Пример моего описания выше:
region1-haproxy
region2-haproxy
region3-haproxy
Я ищу что-то подобное для моей производственной среды на основе AWS, я думаю, что использование Heartbeat может быть хорошим решением в вашем случае. Я планирую использовать Heartbeat между двумя моими серверами HAProxy, и если один из них выйдет из строя, я планирую назначить эластичный IP-адрес машине, которая теперь становится моим основным сервером. Я бы посоветовал заглянуть, чтобы услышать, и вот еще одна ссылка, которую я нашел полезной для этого сценария: