Teaming (bonding) на Debian Linux
Доброго времени, гости и читатели www.k-max.name. Всех коллег спешу поздравить с профессиональным праздником!
Приурочиваю к празднику сегодняшнюю статью о возможности объединения сетевых интерфейсов для отказоустойчивости и увеличения пропускной способности. Называется это в Linux – BONDING интерфейсов, в windows – Teaming интерфейсов.
Типы агрегации (объединения) интерфейсов в Linux
mode=0 (balance-rr)
Этот режим используется по-умолчанию, если в настройках не указано другое. balance-rr обеспечивает балансировку нагрузки и отказоустойчивость. В данном режиме пакеты отправляются “по кругу” от первого интерфейса к последнему и сначала. Если выходит из строя один из интерфейсов, пакеты отправляются на остальные оставшиеся.При подключении портов к разным коммутаторам, требует их настройки.
mode=1 (active-backup)
При active-backup один интерфейс работает в активном режиме, остальные в ожидающем. Если активный падает, управление передается одному из ожидающих. Не требует поддержки данной функциональности от коммутатора.
mode=2 (balance-xor)
Передача пакетов распределяется между объединенными интерфейсами по формуле ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Происходит передача во все объединенные интерфейсы, обеспечивая отказоустойчивость.
mode=4 (802.3ad)
Это динамическое объединение портов. В данном режиме можно получить значительное увеличение пропускной способности как входящего так и исходящего трафика, используя все объединенные интерфейсы. Требует поддержки режима от коммутатора, а так же (иногда) дополнительную настройку коммутатора.
mode=5 (balance-tlb)
Адаптивная балансировка нагрузки. При balance-tlb входящий трафик получается только активным интерфейсом, исходящий – распределяется в зависимости от текущей загрузки каждого интерфейса. Обеспечивается отказоустойчивость и распределение нагрузки исходящего трафика. Не требует специальной поддержки коммутатора.
mode=6 (balance-alb)
Адаптивная балансировка нагрузки (более совершенная). Обеспечивает балансировку нагрузки как исходящего (TLB, transmit load balancing), так и входящего трафика (для IPv4 через ARP). Не требует специальной поддержки коммутатором, но требует возможности изменять MAC-адрес устройства.
Настройка bonding в Debian 6
Для корректной работы объединения интерфейсов необходимо установить пакет ifenslave-2.6 и проверить наличие модуля bonding:
root@bond-srv:~# apt-cache search ifenslave ifenslave-2.6 - Attach and detach slave interfaces to a bonding device root@bond-srv:~# modprobe -l | grep bondi kernel/drivers/net/bonding/bonding.ko
Для настройки объединения интерфейсов необходимо отредактировать файл конфигурации сети до следующего вида:
root@bond-srv:~# cat /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto bond0 eth0 eth1 # настроим параметры бонд-интерфейса iface bond0 inet static # адрес, маска, шлюз. (можно еще что-нибудь по вкусу) address 10.0.0.11 netmask 255.255.255.0 gateway 10.0.0.254 # определяем подчиненные (объединяемые) интерфейсы bond-slaves eth0 eth1 # задаем тип бондинга bond-mode balance-alb # интервал проверки линии в миллисекундах bond-miimon 100 # Задержка перед установкой соединения в миллисекундах bond-downdelay 200 # Задержка перед обрывом соединения в миллисекундах bond-updelay 200
Далее перезапускаем сеть и видим как все работает:
root@bond-srv:~# /etc/init.d/networking stop && /etc/init.d/networking start Deconfiguring network interfaces... done. Configuring network interfaces... done. root@bond-srv:~# ifconfig bond0 Link encap:Ethernet HWaddr 00:02:b3:b0:27:98 inet addr:10.0.0.11 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:289786 errors:0 dropped:0 overruns:0 frame:0 TX packets:144029 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:88731609 (84.6 MiB) TX bytes:8668925 (8.2 MiB) eth0 Link encap:Ethernet HWaddr 00:02:b3:b0:27:98 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:144766 errors:0 dropped:0 overruns:0 frame:0 TX packets:72000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44351263 (42.2 MiB) TX bytes:4345219 (4.1 MiB) eth1 Link encap:Ethernet HWaddr 00:02:b3:b0:27:24 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:145020 errors:0 dropped:0 overruns:0 frame:0 TX packets:72029 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44380346 (42.3 MiB) TX bytes:4323706 (4.1 MiB)
Диагностика bonding
Для проверки работы объединения интерфейсов необходимо просмотреть содержимое каталога /proc/net/bonding/ на наличие каждого из бонд-интерфейсов:
root@bond-srv:~# ls -la /proc/net/bonding/ итого 0 dr-xr-xr-x 2 root root 0 Июл 28 22:07 . dr-xr-xr-x 5 root root 0 Июл 28 22:07 .. -r--r--r-- 1 root root 0 Июл 28 22:07 bond0 root@bond-srv:~# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) Bonding Mode: adaptive load balancing Primary Slave: eth0 Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: eth0 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:02:b3:b0:27:98 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:02:b3:b0:27:24
На сегодня это все. такая маленькая заметочка, как говориться “чтобы было”.
Что еще почитать
Для более подробного ознакомления с объединением сетевых интерфейсов, советую почитать:
1. http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding
2. http://www.kernel.org/doc/Documentation/networking/bonding.txt
3. http://www.opennet.ru/man.shtml?topic=etcnet-options&category=5&russian=0
С Уважением, Mc.Sim!
Другие материалы в категории основы Linux
- Текстовый редактор VIM, основы работы
- ddrescue или спасаем данные с HDD
- Резервное копирование файлов сайта по ssh
- Седьмой релиз Debian
- Использование ramdisk в Linux (ramdisk, ramfs, tmpfs) или препарирование рамдисков
- SNMP протокол (основы)
- Установка антивирусного сканера ClamAV на Debian
- HOWTO использование backports в Debian
- Конспект установки Debian на сервер
- SSH сервер на Debian