Краткое описание: Настройка Netplan в Ubuntu Server 18.04. Настройка сети KVM, bonding, bridge. Группировка сетевых карт(LACP), балансировка нагрузки.

Нужна консультация или помощь в решении IT вопроса?

Обзор сетевых настроек по умолчанию ifconfig

После успешного тестирования нового сервера под следующий шаг отводится настройка сети, а именно группировка сетевых интерфейсов(агрегирование каналов, балансировка нагрузки, bonding, LACP). На сервере имеются два сетевых интерфейса. Для их определения нужно воспользоваться командой :

ifconfig -a
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.57 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::224:81ff:fefa:a932 prefixlen 64 scopeid 0x20<link>
ether 00:24:81:fa:a9:32 txqueuelen 1000 (Ethernet)
RX packets 235 bytes 24015 (24.0 KB)
RX errors 0 dropped 15 overruns 0 frame 0
TX packets 81 bytes 10434 (10.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp5s0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:24:81:fa:a9:3e txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 88 bytes 6488 (6.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 88 bytes 6488 (6.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Линки от сетевых карт подключаются к разным свичам(для увеличения отказоустойчивости) и с этого момента нужно:

  • инициализировать второй интерфейс(enp5s0);
  • установить новый виртуальный интерфейс bond0 под управление модуля bonding.

Настройка Netplan, установка статического ip адреса в Ubuntu

Для исключения конфликтов по правам доступа запущен режим суперпользователя

sudo -i

По старой привычке использования Ubuntu Server 16.04 TLS был открыт файл

nano /etc/network/interfaces

имеющий записи

# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration.

Как выяснилось, для определения сетевых настроек в Ubuntu Server 18.04 нужно настроить Netplan, утилита-приёмник Network Manager.

cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.backup
nano /etc/netplan/50-cloud-init.yaml

добавляется выделенный блок

network:
    ethernets:
        enp3s0:
            addresses:
            - 192.168.1.57/24
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            optional: true
        enp5s0:
            addresses:
            - 192.168.1.58/24
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            optional: true
    version: 2

Ctrl+O, Ctrl+X

Важно! Сохранять правильно расставляемые пробелы, любое отклонение от правил может привести к некорректной работе…


Определение виртуального интерфейса bond0

nano /etc/netplan/bond0.yaml
network:
 bonds:
  bond0:
   addresses: [192.168.1.59/24]
   gateway4: 192.168.1.1
   nameservers:
    addresses: [8.8.8.8,8.8.4.4]
   interfaces: [enp3s0, enp5s0]

Ctrl+O, Ctrl+X

netplan apply

Исполнение последней команды примет в работу все изменения и заодно протестирует конфигурации на наличие ошибок.

Тестирование балансировки нагрузки(bonding)

Команда ifconfig — a теперь содержит два физических(enp3s0 и enp5s0) и один виртуальный(bond0) интерфейсы

ifconfig -a
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.1.59 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::600e:f8ff:feea:e59b prefixlen 64 scopeid 0x20<link>
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 687879 bytes 153481174 (153.4 MB)
RX errors 0 dropped 54537 overruns 0 frame 0
TX packets 42105 bytes 3154748 (3.1 MB)
TX errors 0 dropped 3 overruns 0 carrier 0 collisions 0

enp3s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
inet 192.168.1.57 netmask 255.255.255.0 broadcast 192.168.1.255
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 343650 bytes 76307974 (76.3 MB)
RX errors 0 dropped 28247 overruns 0 frame 0
TX packets 21053 bytes 1574674 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp5s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
inet 192.168.1.58 netmask 255.255.255.0 broadcast 192.168.1.255
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 344229 bytes 77173200 (77.1 MB)
RX errors 0 dropped 27265 overruns 0 frame 0
TX packets 21052 bytes 1580074 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 289 bytes 24040 (24.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 289 bytes 24040 (24.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Через виртуальный интерфейс будет пропущен основной трафик. Балансировка на примере команды ping отработает следующим образом.

Оба физических интерфейса доступны

Настройка netplan Ubuntu, проверка работы балансировки нагрузки bonding

Настройка netplan Ubuntu, проверка работы балансировки нагрузки

Настройка netplan Ubuntu, проверка работы агрегации каналов

Когда один из физических интерфейсов в состоянии down

Настройка netplan Ubuntu, проверка работы LACP

Настройка netplan Ubuntu, проверка работы группировки сетевых карт

Настройка netplan Ubuntu, проверка работы bonding

Поведение системы в такой ситуации происходит по сценарию: сетевой трафик проходит через действующий сетевой интерфейс(enp5s0), несмотря на отключение смежного интерфейса(enp3s0). Сервер подготавливается под установки роли Гипервизора, поэтому данный этап будет иметь важный характер для сохранения отказоустойчивости.

Настройка bridge и bonding для KVM

Данный пример будет содержать общую конфигурацию в одном YAML-файл. Возвращаясь к заданию: имеется сервер с двумя сетевыми картами, на которые нужно»повесить» балансировку нагрузки, а также все это объединить в bridge, для работы гостевых ОС гипервизора KVM(статья по настройке KVM)

nano /etc/netplan/50-cloud-init.yaml
network:
    bridges:
        br0:
            addresses:
            - 192.168.1.59/24
            dhcp4: no
            dhcp6: no
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 192.168.1.1
                search: []
            interfaces:
                - bond0
    bonds:
        bond0:
            interfaces:
            - enp3s0
            - enp5s0
    ethernets:
        enp3s0:
            addresses: [192.168.1.57/24]
            dhcp4: no
            dhcp6: no
        enp5s0:
            addresses: [192.168.1.58/24]
            dhcp4: no
            dhcp6: no

Если у вас есть профессиональный интерес в расширении данной статьи — заполните форму запроса.