Как настроить network bonding (LACP)

Как настроить network bonding LACP (802.3ad) для агрегации каналов и резервирования

Network bonding позволяет объединить несколько физических сетевых интерфейсов в один логический интерфейс. Это увеличивает пропускную способность и обеспечивает резервирование каналов.

LACP (Link Aggregation Control Protocol, IEEE 802.3ad) — самый распространенный режим bonding, который динамически согласует агрегацию каналов с сетевым коммутатором.

Определение сетевых интерфейсов

После выполнения talm template сгенерированный конфигурационный файл узла будет содержать блок комментариев с обнаруженными сетевыми интерфейсами:

machine:
  network:
    # -- Discovered interfaces:
    # eno1:
    #   hardwareAddr: aa:bb:cc:dd:ee:f0
    #   busPath: 0000:02:00.0
    #   driver: tg3
    #   vendor: Broadcom Inc. and subsidiaries
    #   product: NetXtreme BCM5719 Gigabit Ethernet PCIe
    # eno2:
    #   hardwareAddr: aa:bb:cc:dd:ee:f1
    #   busPath: 0000:02:00.1
    #   driver: tg3
    #   vendor: Broadcom Inc. and subsidiaries
    #   product: NetXtreme BCM5719 Gigabit Ethernet PCIe
    # eth0:
    #   hardwareAddr: aa:bb:cc:dd:ee:f2
    #   busPath: 0000:04:00.0
    #   driver: bnx2x
    #   vendor: Broadcom Inc. and subsidiaries
    #   product: NetXtreme II BCM57810 10 Gigabit Ethernet
    # eth1:
    #   hardwareAddr: aa:bb:cc:dd:ee:f3
    #   busPath: 0000:04:00.1
    #   driver: bnx2x
    #   vendor: Broadcom Inc. and subsidiaries
    #   product: NetXtreme II BCM57810 10 Gigabit Ethernet

Выберите интерфейсы, которые хотите объединить в bond. Обычно это порты одной скорости, подключенные к одному коммутатору или стеку коммутаторов. Запишите значения busPath — они понадобятся далее.

Настройка bonding

Отредактируйте сгенерированный конфигурационный файл узла (например, nodes/node1.yaml) и замените стандартный раздел machine.network.interfaces на конфигурацию bond:

machine:
  network:
    interfaces:
      - interface: bond0
        dhcp: false
        bond:
          mode: 802.3ad
          adSelect: bandwidth
          miimon: 100
          updelay: 200
          downdelay: 200
          minLinks: 1
          xmitHashPolicy: encap3+4
          deviceSelectors:
            - busPath: "0000:04:00.0"
            - busPath: "0000:04:00.1"
        addresses:
          - 192.168.100.11/24
        routes:
          - network: 0.0.0.0/0
            gateway: 192.168.100.1

Описание параметров bond

ПараметрЗначениеОписание
mode802.3adLACP — динамическая агрегация каналов с согласованием на коммутаторе
adSelectbandwidthВыбирает активный агрегатор по наибольшей суммарной пропускной способности
miimon100Интервал мониторинга канала в миллисекундах
updelay200Задержка (мс) перед переводом восстановленного канала в активное состояние
downdelay200Задержка (мс) перед объявлением отказавшего канала отключенным
minLinks1Минимальное количество активных каналов, при котором bond остается поднятым
xmitHashPolicyencap3+4Хеширование по IP и TCP/UDP-порту для распределения нагрузки между каналами

Выбор интерфейсов

Рекомендуемый способ выбора участников bond — по пути PCI-шины с помощью deviceSelectors. Это надежнее, чем имена интерфейсов, которые могут меняться между перезагрузками:

bond:
  deviceSelectors:
    - busPath: "0000:04:00.0"
    - busPath: "0000:04:00.1"

Также можно выбирать по имени интерфейса:

bond:
  interfaces:
    - eth0
    - eth1

Или по аппаратному адресу:

bond:
  deviceSelectors:
    - hardwareAddr: "aa:bb:cc:dd:ee:f2"
    - hardwareAddr: "aa:bb:cc:dd:ee:f3"

VLAN поверх bond

Поверх bond можно создавать VLAN-интерфейсы. Это удобно для разделения трафика (например, management, storage, tenant-сетей):

machine:
  network:
    interfaces:
      - interface: bond0
        dhcp: false
        bond:
          mode: 802.3ad
          adSelect: bandwidth
          miimon: 100
          updelay: 200
          downdelay: 200
          minLinks: 1
          xmitHashPolicy: encap3+4
          deviceSelectors:
            - busPath: "0000:04:00.0"
            - busPath: "0000:04:00.1"
        addresses:
          - 192.168.100.11/24
        routes:
          - network: 0.0.0.0/0
            gateway: 192.168.100.1
        vlans:
          - vlanId: 100
            addresses:
              - 10.0.0.11/24

Floating IP (VIP) с bonding

Для узлов control plane разместите раздел vip на интерфейсе (или VLAN), который используется для API endpoint кластера:

machine:
  network:
    interfaces:
      - interface: bond0
        dhcp: false
        bond:
          mode: 802.3ad
          adSelect: bandwidth
          miimon: 100
          updelay: 200
          downdelay: 200
          minLinks: 1
          xmitHashPolicy: encap3+4
          deviceSelectors:
            - busPath: "0000:04:00.0"
            - busPath: "0000:04:00.1"
        addresses:
          - 192.168.100.11/24
        routes:
          - network: 0.0.0.0/0
            gateway: 192.168.100.1
        vip:
          ip: 192.168.100.10

Убедитесь, что floating IP совпадает с адресом, настроенным в values.yaml.

Применение конфигурации

После редактирования всех файлов узлов примените конфигурацию обычным способом:

talm apply -f nodes/node1.yaml -i
talm apply -f nodes/node2.yaml -i
talm apply -f nodes/node3.yaml -i
Last modified 2026-05-24: feat: migrate to 1.4 (0c5a079)