Nginx: парный балансировщик
На данный момент есть nginx-балансировщик (Centos 7, виртуалка с белым адресом) проксирующий на большое количество бэкенд-серверов с Апачем запросы. Необходимо реализовать отказоустойчивый кластер из двух балансировщиков на nginx. Отказоустойчивость пробно реализована с помощью виртуального ip-адреса (используется keepalived). Подскажите, где/что можно почитать на тему парного nginx-балансировщика: все приходящие на них запросы на одном виртуальном ip-адресе равномерно распределялись между ними двумя, но при отказе одного из них оставшийся забирает всё на себя.
На данный момент получается, что есть два одинаковых балансировщика и польза второго только в подстраховке. В моменты полноценной работы основного (мастера), второй (бэкап) бесполезно простаивает.
Нужно реализовать так:
Есть ли возможность реализовать подобный кластер через linux virtual server (ipvsadm, например)?
Ответы (1 шт):
Как я понимаю, это фронт... А для фронта можно применить RoundRobin DNS Cобственно именно его и используют всякие яндексы и гуглы.
Round robin DNS — один из методов распределения нагрузки, или отказоустойчивости за счёт избыточности количества серверов, с помощью управления ответами DNS-сервера в соответствии с некой статистической моделью. Обычно применяется к таким интернет-протоколам, как веб-серверы, FTP-серверы. В простейшем случае Round robin DNS работает, отвечая на запросы не только одним IP-адресом, а списком из нескольких адресов серверов, предоставляющих идентичный сервис. Порядок, в котором возвращаются IP-адреса из списка, основан на алгоритме round-robin. С каждым ответом последовательность ip-адресов меняется. Как правило, простые клиенты пытаются устанавливать соединения с первым адресом из списка, таким образом разным клиентам будут выданы адреса разных серверов, что распределит общую нагрузку между серверами.
Проще говоря, у вас в конфигурации DNS сервера должно быть 2 A записи указывающие на разные IP ваших серверов. Вот как например это у Яндекса.


