Как настраивал агрегацию сетевых интерфейсов (bonding) в Linux

«Как настраивал агрегацию сетевых интерфейсов (bonding) в Linux» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Настраивал bonding (LAG) для обеспечения отказоустойчивости и увеличения пропускной способности канала до серверов, особенно для мастер-узлов Kubernetes и баз данных.

Предпочтительный способ — через Netplan (Ubuntu 18.04+) или systemd-networkd:

  1. Конфигурация в Netplan (/etc/netplan/01-netcfg.yaml):

    network:
      version: 2
      ethernets:
        eno1:
          dhcp4: no
        eno2:
          dhcp4: no
      bonds:
        bond0:
          interfaces: [eno1, eno2]
          addresses: [192.168.1.10/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
          parameters:
            mode: 802.3ad                # Режим LACP
            lacp-rate: fast              # Частота отправки LACP-пакетов
            mii-monitor-interval: 100    # Интервал проверки ссылки (мс)
            transmit-hash-policy: layer3+4 # Алгоритм балансировки

    Применяем: sudo netplan apply.

  2. Проверка:

    cat /proc/net/bonding/bond0  # Детальный статус
    ip link show bond0           # Состояние интерфейса

Ключевые моменты:

  • Режим 802.3ad (mode 4) требует поддержки на коммутаторе (нужно настроить LACP-группу).
  • Для режима active-backup (mode 1) указывается primary интерфейс.
  • Обязательно тестировал отказоустойчивость, физически отключая кабель и проверяя, что трафик переключается без потери пинг-пакетов.
  • В инфраструктуре как код (Terraform/Ansible) конфигурация bonding прописывалась в шаблонах для автоматического применения на всех новых серверах.