Объединение сетевых карт в Linux

Nov 30, 2015 15:52 · 547 words · 3 minute read hardware

Объединение сетевых карт в Linux (bonding) используется для агрегирования нескольких физических сетевых интерфейсов в один логический.

Чаще всего сетевые интерфейсы работают в режиме горячего резерва или балансировки нагрузки — все зависит от выбранной политики. Давайте разберемся с объединением сетевых карт в ОС Debian Wheezy!

В нашем примере используется одноранговая сеть (peer-to-peer) между двумя серверами, по которой синхронизируются drbd-разделы. Необходимо использовать объединение сетевых карт в режиме balance-rr (round-robin) на случай выхода из строя одного из сетевых интерфейсов.

Настройки будут проводиться на серверах:

lsb_release -a
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.8 (wheezy)
Release:	7.8
Codename:	wheezy

Устанавливаем необходимый пакет ifenslave на оба сервера:

aptitude install ifenslave-2.6

Правим /etc/network/interfaces на первом сервере, добавляем следующие строки:

auto bond0
iface bond0 inet static
        address 172.16.0.1
        netmask 255.255.255.0
        gateway 172.16.0.254
        bond_mode balance-rr
        bond_miimon 100
        bond_downdelay 200
        bond_updelay 200
        slaves eth2 eth3

На втором сервере в /etc/network/interfaces добавляем:

auto bond0
iface bond0 inet static
        address 172.16.0.2
        netmask 255.255.255.0
        gateway 172.16.0.254
        bond_mode balance-rr
        bond_miimon 100
        bond_downdelay 200
        bond_updelay 200
        slaves eth2 eth3

Подробнее об используемых параметрах:

  • bond_mode balance-rr — режим round-robin, применяется для отказоустойчивости и балансировки нагрузки;
  • bond_miimon 100 — периодичность MII мониторинга (миллисекунды);
  • bond_downdelay 200 — время задержки перед отключением интерфейса при сбое соединения (миллисекунды);
  • bond_updelay 200 — время задержки перед включением интерфейса при восстановлении соединения (миллисекунды);
  • slaves eth2 eth3 — при такой конфигурации описывать интерфейсы eth2 и eth3 в /etc/network/interfaces не нужно.

Далее на обоих серверах выполняем:

modprobe bonding
echo 'bonding' >> /etc/modules

Примечание. Проверить, загружен модуль или нет можно с помощью команды lsmod | grep bonding.

Опять же, на обоих серверах:

ifdown eth2 eth3 && ifup bond0

После проделанных действий проверим, что новые сетевые интерфейсы действительно добавились. Первый сервер:

ifconfig
bond0     Link encap:Ethernet  HWaddr 68:05:ca:20:4f:6a
          inet addr:172.16.0.1  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6a05:caff:fe20:4f6a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:5091884726 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16029676320 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:424211603599 (395.0 GiB)  TX bytes:22123967678480 (20.1 TiB)
...

Второй сервер:

ifconfig
bond0     Link encap:Ethernet  HWaddr 68:05:ca:20:51:ec
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6a05:caff:fe20:51ec/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:16029826998 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5091930656 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:22124111859139 (20.1 TiB)  TX bytes:424213993831 (395.0 GiB)
...

При объединении сетевых карт в Linux можно использовать следующие режимы (mode) поведения сетевых интерфейсов:

  • balance-rr, или mode=0 — режим round-robin, последовательная отправка пакетов с первого по последний доступный интерфейс. Такая политика применяется для балансировки нагрузки и отказоустойчивости;
  • active-backup, или mode=1 — режим активный-резервный, работает только один сетевой интерфейс. Второй интерфейс становится активным, когда «падает» текущий активный интерфейс. Такая политика применяется для обеспечения отказоустойчивости;
  • balance-xor, или mode=2 — режим передачи данных когда один и тот же сетевой интерфейс передаёт пакеты одним и тем же получателям. Политика XOR используется для балансировки нагрузки и отказоустойчивости;
  • broadcast, или mode=3 — режим передачи всех пакетов на все сетевые интерфейсы, политика применяется для обеспечения отказоустойчивости путем избыточности;
  • 802.3ad, или mode=4 — режим агрегирования каналов по стандарту IEEE 802.3ad (объединение сетевых карт с одинаковой скоростью и дуплексом);
  • balance-tlb, или mode=5 — режим адаптивной балансировки передачи данных, входящие пакеты приходят на активную сетевую карту, а исходящие распределяются в зависимости от текущей загрузки каждого сетевого интерфейса;
  • balance-alb, или mode=6 — режим адаптивной балансировки передачи данных, при котором и входящие, и исходящие пакеты распределяются в зависимости от текущей загрузки каждого сетевого интерфейса.
tweet Share