Модуль экспериментальный и находится в процессе активного развития. Функциональность и API могут существенно измениться.

Модуль реализует улучшенный (относительно стандартного режима L2 в MetalLB) механизм балансировки для сервисов в кластерах bare metal, где нет возможности воспользоваться облачным балансировщиком или MetalLB в режиме BGP с настроенным Equal-cost multi-path (ECMP).

Основан на решении MetalLB.

Принцип работы в сравнении с режимом L2 модуля MetalLB

MetalLB в режиме L2 позволяет заказать Service с типом LoadBalancer, работа которого основана на том, что в пиринговой сети узлы-балансировщики имитируют ARP-ответы от “публичного” IP. Данный режим имеет существенное ограничение — единовременно лишь один балансировочный узел обрабатывает весь входящий трафик данного сервиса. Соответственно:

  • Узел, выбранный в качестве лидера для “публичного” IP-адреса, становится “узким местом” без возможности горизонтального масштабирования.
  • В случае выхода узла-балансировщика из строя, все текущие соединения будут оборваны для переключения на новый узел, который будет назначен лидером.

Данный модуль помогает обойти эти ограничения. Он предоставляет новый интерфейс L2LoadBalancer, который:

  • Позволяет автоматически заказать несколько Service с типом LoadBalancer по количеству узлов-балансировщиков.
  • Обеспечивает равномерное распределение L2-лидерства между узлами-балансировщиками.

Таким образом:

  • Прикложение получит не один, а несколько (по количеству узлов-балансировщиков) “публичных” IP. Данные IP потребуется прописать в качестве A-записей для публичного домена приложения. Для последующего горизонтального масштабирования потребуется добавить дополнительные узлы-балансировщики, соответствующие Service будут созданы автоматически, потребуется лишь добавить их в список A-записей прикладного домена.
  • При выходе из строя одного из узлов-балансировщиков, лишь часть трафика будет подвержена обрыву для переключения на здоровый узел.