В настоящее время я изучаю использование HAProxy в качестве балансировщика нагрузки. Я обнаружил, что рекомендуемая конфигурация для HA самого HAProxy (а не бэкэндов) включает использование keepalived для установления VIP, на который реагируют обе системы. Это означает, что когда основной перестает быть активным в сети, пассивный HAProxy отправляет безвозмездное сообщение ARP и инструктирует сеть вместо этого отправлять весь трафик для этого VIP.
Это выглядит хорошим решением, но предотвращает настройку балансировки нагрузки Active-Active для HAProxies. Мне любопытны какие-либо методы, которые позволяют обоим HAProxies отвечать на трафик и поддерживать разумное время безотказной работы в случае сбоя одного из них. Циклический перебор DNS между двумя VIP, управляемыми HAProxies, с противоположными мастерами, кажется разумным решением, но я не нашел никаких указаний относительно того, может ли keepalived поддерживать два VIP в одной системе одновременно.
Ужасная диаграмма MSPaint для иллюстрации:
Это возможно? Это разумное решение? Видели ли вы какие-либо альтернативные решения, которые жизнеспособны?
Редактировать: После публикации я нашел следующее, что предполагает, что это возможно, но предлагает использовать CLUSTERIP в качестве альтернативы. Я не уверен в совместимости CLUSTERIP и HAProxy.