UMGUM.COM 

Linux Debian + Netplan + LACP ( Обеспечиваем высокий уровень надёжности передачи данных для серверов под управлением "Linux Debian/Ubuntu" с подсистемой управления сетевой конфигурацией "Netplan". )

15 апреля 2020  (обновлено 29 марта 2021)

OS: "Linux Debian/Ubuntu".
Apps: "ifenslave", "netplan", "KVM-Qemu".

Задача: обеспечить высокий уровень надёжности передачи данных для серверов под управлением "Linux Debian/Ubuntu" с подсистемой управления сетевой конфигурацией "Netplan" посредством LACP, вкупе с увеличением пропускной способности каналов.

В "Linux" агрегирование сетевых интерфейсов называется "бондингом". Управление агрегированием осуществляется с помощью утилиты "ifenslave", а работа, как таковая, с помощью модуля ядра "bonding".


Предварительная подготовка linux-системы.

Инсталлируем утилиту настройки агрегирования:

# apt-get install ifenslave

Проверяем, активен ли модуль агрегирования:

# lsmod | grep bonding

bonding ...

Модуль "bonding" давно уже идёт в составе ядра, даже "ванильного". На случай особо урезанных реализаций, если "bonding" неактивен, то настраиваем его автозагрузку и запускаем:

# vi /etc/modules

....
bonding

Конфигурирование сетевой конфигурации посредством "Netplan".

Пишем конфигурацию для современной системы управления сетевой конфигурацией "Netplan", включающую все обнаруженные физические порты сервера (в примере "Supermicro") в группу агрегирования, которую после включаем в мост, который используется системой виртуализации "KVM-Qemu":

# vi /etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match:
        name: enp*
      optional: true
  bonds:
    bond0:
      interfaces: [eports]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
  bridges:
    br0:
      dhcp6: no
      addresses: [ 10.20.30.250/29 ]
      gateway4: 10.20.30.249
      nameservers:
        search: [ example.net ]
        addresses:
          - "10.20.30.40"
      interfaces:
        - bond0

Поддерживаются следующие режимы агрегирования:

1. "balance-rr" - (round-robin) - режим циклического выбора активного интерфейса для исходящего трафика (рекомендован для включения по умолчанию, не требует применения специальных коммутаторов);
2. "active-backup" - активен только один интерфейс, остальные в режиме горячей замены (самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов);
3. "balance-xor" - режим, в котором каждый получатель закрепляется за одним из физических интерфейсов, который выбирается по специальной формуле (не требует применения специальных коммутаторов);
4. "broadcast" - трафик идёт через все интерфейсы одновременно (примитивный и потенциально конфликтный режим);
5. "802.3ad" - (dynamic link aggregation) - в группу объединяются одинаковые по скорости и режиму интерфейсы. Все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки);
6. "balance-tlb" - (adaptive transmit load balancing) - исходящий трафик распределяется в соответствии с текущей нагрузкой (с учетом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт);
7. "balance-alb" - (adaptive load balancing) - включает в себя balance-tlb, плюс балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов (балансировка на приём достигается на уровне протокола ARP, перехватом ARP ответов локальной системы и перезаписью физического адреса на адрес одного из сетевых интерфейсов, в зависимости от загрузки).

Внимательно перечитываем конфигурацию и применяем без предварительного тестирования (для "мостов" и "агрегирования" возврат к предыдущей конфигурации "Netplan" не поддерживается):

# netplan apply

Просматриваем статистику по агрегированному каналу:

# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
....

802.3ad info
LACP rate: fast
Aggregator selection policy (ad_select): stable
....

Slave Interface: enp181s0f1
....

Slave Interface: enp181s0f0
....

Применение агрегированного канала в системе виртуализации "KVM-Qemu".

Указываем созданный поверх агрегированного линка мостовой интерфейс в качестве основного для системы виртуализации "KVM-Qemu":

# vi /etc/libvirtd/qemu/networks/default.xml

<network>
  <name>br0</name>
  <bridge name='br0'/>
  <forward mode="bridge"/>
</network>

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

# virsh net-define /etc/libvirt/qemu/networks/default.xml

Network br0 defined from /etc/libvirt/qemu/networks/default.xml

Запускаем новую конфигурацию сетевой подсистемы "KVM-Qemu":

# virsh net-start br0

Активизируем автозапуск новой сетевой конфигурации:

# virsh net-autostart br0

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

# service libvirtd restart


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )