bonding

Что такое объединение каналов (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

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

# apt install ifenslave

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *