Объединение сетевых карт в Linux
Nov 30, 2015 15:52 · 547 words · 3 minute read
Объединение сетевых карт в 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
— режим адаптивной балансировки передачи данных, при котором и входящие, и исходящие пакеты распределяются в зависимости от текущей загрузки каждого сетевого интерфейса.