Вы здесь

Главная » IT склерозник

Сообщение об ошибке

Notice: Undefined variable: uri in conf_path() (line 571 of /var/www/tarom/includes/bootstrap.inc).

Объединение сетeвых интерфейсов bonding

В статье рассказано, как объединить два физических сетевых интерфейса в один для увеличения пропускной способности или для повышения отказоустойчивости
сети. В Linux это делается при помощи модуля bonding и утилиты ifenslave. В большинстве новых версий дистрибутивов модуль ядра bonding уже есть и готов к использованию, в некоторых вам придется собрать его вручную.

aptitude install ifenslave ethtool

Затем добавим модуль bonding в автозагрузку и пропишем опции для его запуска, для этого в конец файла /etc/modulesдобавим текст, следуя логике примеров, приведенных ниже.

Пример для одного виртуального интерфейса из двух физических:

bonding mode=0 miimon=100

Пример для создания двух интерфейсов из четырех физических:

bonding mode=0 miimon=100 max_bonds=2

Подробнее о режимах работы bonding

mode = 0 (round robin) 

Круговой, циклически использует физические интерфейсы для передачи пакетов. Рекомендован для включения «по умолчанию». Этот режим работает с максимальной отдачей

mode = 1 (active-backup)

Работает только один интерфейс, остальные находятся в очереди горячей замены. Если ведущий интерфейс перестает функционировать, то его нагрузку подхватывает следующий (присвоив mac-адрес) и становится активным. Дополнительная настройка коммутатора не требуется.

mode = 2 (balance-xor)

XOR политика: Передача на основе [(исходный MAC-адрес → XOR → MAC-адрес получателя) %число интерфейсов]. Эта команда выбирает для каждого получателя определенный интерфейс в соответствии с mac-адресом. Режим обеспечивает балансировку нагрузки и отказоустойчивость.

mode = 3 (broadcast)

Все пакеты передаются на все интерфейсы в группе. Режим обеспечивает отказоустойчивость.

mode = 4 (802.3ad)

IEEE 802.3ad Dynamic Link aggregation (динамическое объединение каналов). Создает агрегации групп, имеющие одни и те же скорости и дуплексные настройки. Использует все включенные интерфейсы в активном агрегаторе согласно спецификации 802.3ad.
Предварительные реквизиты
Поддержка ethtool (позволяет отображать или изменять настройки сетевой карты) базы драйверов для получения скорости и дуплекса каждого интерфейса.
Коммутатор с поддержкой IEEE 802.3ad Dynamic Link aggregation. Большинство параметров потребует некоторой конфигурации для режима 802.3ad.

mode =5 (balance-tlb)

Адаптивная балансировка передаваемой нагрузки: канал связи не требует какой либо специальной настройки. Исходящий трафик распределяется в соответствии с текущей нагрузкой (вычисляется по скоростям) для каждого интерфейса. Входящий трафик принимается текущим интерфейсом. Если принимающий интерфейс выходит из строя, то следующий занимает его место приватизировав его mac-адрес.
Поддержка ethtool (позволяет отображать или изменять настройки сетевой карты) базы драйверов для получения скорости и дуплекса каждого интерфейса.

mode = 6 (balance-alb)

Адаптивное перераспределение нагрузки: включает balance-tlb плюс receive load balancing (rlb) для трафика IPv4 и не требует специального конфигурирования. То есть все так же как и при mode =5, только и входящий трафик балансируется между интерфейсами. Полученная балансировка нагрузки достигается опросом ARP. Драйвер перехватывает ответы ARP, направленные в локальной системе в поисках выхода и перезаписывает исходный адрес сетевой карты с уникальным аппаратным адресом одного из интерфейсов в группе.

Руками попробуем загрузить модуль bonding

## Один виртуальный интерфейс
modprobe bonding mode=0 miimon=100

## Два виртуальных интерфейса
modprobe bonding mode=0 miimon=100 max_bonds=2

Настроим параметры сетевых интерфейсов bonding`a, для этого отредактируем файл настроек интерфейсов/etc/network/interfaces. В примере шаблоны для настройки двух виртуальных интерфейсов.

# The bond0 network interface
auto bond0
allow-hotplug bond0
iface bond0 inet static
address <ip-address>
netmask <netmask>
network <network-address>
broadcast <broadcast-address>
gateway <gateway-address>
dns-nameservers <nameserver-one> <nameserver-two>
dns-search <domain-name>
up /sbin/ifenslave bond0 eth0
up /sbin/ifenslave bond0 eth1
 
# The bond1 network interface
auto bond1
allow-hotplug bond1
iface bond1 inet static
address <ip-address>
netmask <netmask>
network <network-address>
broadcast <broadcast-address>
gateway <gateway-address>
dns-nameservers <nameserver-one> <nameserver-two>
dns-search <domain-name>
up /sbin/ifenslave bond1 eth2
up /sbin/ifenslave bond1 eth3

После того как прописаны настройки интерфейсов нужно перезапустить сеть командой /etc/init.d/networking restart и проверить, поднялись ли интерфейсы bond0, и если настраивали два, то bond1.