
Вдохновленный сетью Stack Overflow, я теперь одержим HAProxy и пытаюсь использовать его сам.
На данный момент каждый блок HAProxy имеет две сетевые карты (точнее, две настроенные, я могу иметь максимум 4 и не был уверен, нужна ли им своя собственная для управления между блоками).
На обеих машинах внутренний IP-адрес (eth1) — это частный IP-адрес, который идет на коммутатор, подключенный к веб-серверам, а передний IP-адрес (eth0) имеет публичный интернет-IP-адрес, который маршрутизируется напрямую.
Кроме того, я создал дополнительный виртуальный IP для eth0 под названием, eth0:0
который имеет третий публичный IP-адрес.
Я почти понял, как использовать его для балансировки нагрузки между несколькими веб-серверами, которые за ним находятся, но мне не удается балансировать нагрузку между двумя блоками HAProxy — похоже, они борются за виртуальный IP-адрес, но это не кажется разумным решением.
Теперь, используя виртуальный общий IP-адрес, это решение, похоже, работает и обеспечивает мне максимальное время безотказной работы, но правильный ли это способ или есть более разумный способ?
Я рассматривал другие пакеты Linux, такие как keepalived, но я использую Linux (сервер) всего неделю и нахожусь на пределе своих знаний.
Есть ли кто-нибудь, кто уже делал это, и можете ли вы что-нибудь посоветовать для максимального увеличения времени безотказной работы?
решение1
Если вы хотите сбалансировать нагрузку трафика между двумя разными haproxy, вам нужно иметь перед ними еще один балансировщик нагрузки, а это бесполезно.
Если вам нужна более высокая доступность, вы уже получили ее, используя два haproxies и VIP, назначенный одному из них с помощью keepalived или heartbeat. Обычно это решение проблем HA и балансировки нагрузки.
Я могу придумать один способ использовать два haproxy одновременно. Вы можете настроить keepalived для назначения одного VIP каждому haproxy-серверу. Балансировка нагрузки может быть выполнена DNS. Имя DNS должно разрешаться в два VIP. Когда один haproxy выходит из строя, другой узел будет удерживать два VIP и получать весь трафик.