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