Объединение каналов (Ethernet Bonding) под Debian

Что такое объединение каналов (Ethernet Bonding)?

Объединение каналов (bonding) подразумевает объединение нескольких ethernet-каналов вместе для формирования единого канала. Это используется в основном для резервирования или для балансировки нагрузки. Эта статья об объединении каналов под Debian Linux и не ограничивается обсуждением стандарта 802.3ad

Типы объединения

Ядро Linux поддерживает целый ряд типов объединения каналов.

Round Robin

Пакеты отправляются в стиле round robin (то есть по кругу) через даступные ведомые интерфейсы. Осуществляет как балансировку нагрузки, так и защиту от ошибок.

Active Backup (активное резервирование)

Один ведомый интерфейс всегда остается активным. Если что-то случается с одним интерфейсом, другой подхватывает MAC адрес и становится активным интерфейсом. Осуществляет только защиту от ошибок. Не требует особых коммутаторов.

Balance XOR

Передача данных распределяется между ведомыми интерфейсами и основана на формуле ((source MAC) XOR (dest MAC)). Один ведомый интерфейс выбирается для всех целевых MAC. Осуществляет как балансировку нагрузки, так и защиту от ошибок.

Широковещание

Передается всё на всех ведомых интерфейсах. Обеспечивает защиту от ошибок.

802.3ad

Это классическое динамическое объединение каналов на основе IEEE 802.3ad. Это требует поддержки стандарта 802.3ad коммутатором и поддержку драйвером получения данных о скорости и дуплексной связи для каждого интерфейса.

Balance TLB

Адаптивная балансировка исходящего трафика. Входящий траффик приходит только на активный интерфейс, а исходящий трафик распределяется в зависимости от нагрузки на каждом интерфейсе. Не требует особой поддержки со стороны коммутатора.

Balance ALB

Адаптивная балансировка нагрузки - обеспечивает баланскировку как входящей, так и исходящей нагрузки с помощью ARP передачи. Не требует особой поддержки коммутатором, но требует возможности менять MAC адрес устройства, пока оно доступно.

Настройка объединения каналов под Debian с ядром версии 2.4

Для использвания объединения с целью обеспечить защиту от исчезновения сети под Debian (Woody, Sarge или Sid с ядром версии 2.4.x) вам необходимо следать следующее:

1. установите пакет ifenslave-2.4. Для этого выполните команду:

# apt-get install ifenslave-2.4

2. удостоверьтесь, что модули ядра для реально существующих интерфейсов загружаются автоматически. Исправте файл /etc/network/interfaces чтобы он выглядел примерно так:

iface bond0 inet static
  address 10.31.1.5
  netmask 255.255.255.0
  network 10.31.1.0
  gateway 10.31.1.254
  up /sbin/ifenslave bond0 eth0
  up /sbin/ifenslave bond0 eth1

3. закомментируйте или удалите строки отвечающие за ваши реальные сетевые интерфейсы в этом же файле.

4. добавте следующие строки в /etc/modutils/arch/i386:

alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200

Теперь выполните команду для обновления:

# update-modules

Настройка объединения каналов под Debian с ядром версии 2.6

Чтобы использовать объединение каналов для повышения надежности сделайте следующее:

1. установите пакет ifenslave-2.6:

# apt-get install ifenslave-2.6

2. создайте файл /etc/modprobe.d/bonding.conf примерно следующего содержимого:

alias bond0 bonding
  options bonding mode=0 arp_interval=100 arp_ip_target=192.168.1.254, 192.168.1.12

здесь IP адреса даны для мониторинга активности канала. Обычно один из них является адресом маршрутизатора.

3. запустите драйвер командами:

# modprobe -v bonding mode=0 arp_interval=100 arp_ip_target=192.168.1.254, 192.168.1.12
# tail -f /var/log/messages
# ifconfig bond0

4. приведите файл /etc/network/interfaces примерно к следующему виду:

auto lo
iface lo inet loopback

# The primary network interface
auto bond0
iface bond0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    network 192.168.1.0
    gateway 192.168.1.254
    slaves eth0 eth1
    # jumbo frame support
    mtu 9000
    # Load balancing and fault tolerance
    bond-mode balance-rr
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200
    dns-nameservers 192.168.1.254
    dns-search nixcraft.net.in

Закомментируйте или удалите строки относящиеся к реальным сетевым интерфейсам.

5. перезапустите службу сети:

/etc/init.d/networking restart

Готово!

Чтобы проверить статус соединения, выполните команду:

cat /proc/net/bonding/bond0

Наверх

Опубликовано