У меня есть определенная распределенная (например, несколько компонентов на нескольких машинах) служба, которая должна быть доступна из внешнего мира. Таким образом, в терминологии LVS клиенты находятся «в Интернете», а реальные серверы находятся в частной сети. Это, как я понимаю, не особо сложно настроить с помощью LVS.
Но (всегда есть «но!») В частной сети есть некоторые компоненты, которые должны быть сбалансированы по нагрузке (на самом деле, в этой части меня не волнует «нагрузка». Мне просто нужна возможность аварийного переключения), но их клиенты также в частной сети. Например, доступ сервера приложений к брокерам очередей должен проходить через балансировщик нагрузки.
Могу ли я использовать одного и того же директора для обеих задач? Очевидно, у него будет как минимум два сетевых интерфейса (один на внешнем, другой в частной сети).
В идеале мне нужно будет обеспечить избыточность для директора через VRRP (предположительно, используя для этого поддержку активности).
Имеет ли смысл такая установка? Это вообще нормально? Может, мне лучше использовать отдельный балансировщик нагрузки для внутреннего трафика? Однако это отчасти нежелательно, поскольку в нем появятся как минимум 2 дополнительные машины, которые не будут использоваться много, поскольку брокеры очередей получают минимальный трафик (все, что мне нужно, это аварийное переключение).
Для внутренней балансировки нагрузки я использовал HAProxy на каждом исходном сервере и проксирование на другие внутренние серверы. Это не лучшее решение для балансировки нагрузки, поскольку оно имеет только частичное представление запросов, но хорошо работает для аварийного переключения без необходимости настраивать новую пару lb / keepalived или использовать общедоступную инфраструктуру. Вы по-прежнему можете использовать циклический перебор или балансировку с минимальным подключением и maxconn для смягчения пиков, влияющих на остальную часть вашей инфраструктуры.
Это началось, в частности, после попытки автоматизировать настройку lb-пар для новых сервисов. После года использования у этой техники не было никаких проблем, характерных для этой установки. Это также позволяет развертывать изменения LB для каждого исходного узла вместо того, чтобы вмешиваться в одну пару.