Объединение сетевых интерфейсов - CentOS Wiki
Что такое "объединение" (bonding) сетевых интерфейсов и как оно работает?
Под словом объединение будем подразумевать - портовый транкинг (автоматическое распределение каналов по требованию). В дальнейшем будет использоваться слово - "объединение" потому, что происходит практически объединение в единое целое.
Объединение позволяет совокупно собрать несколько портов в одну группу, эффективно объединяя пропускную способность в одном направлении. Объединение так же позволяет создавать мульти-гигабитные каналы для транспортировки трафика через высокопропускные районы вашей сети. Например, вы можете объединить два порта по 100 мегабит в 200 мегабитный магистральный порт. Это эквивалентно одному интерфейсу с пропускной способностью 200 мегабит.
Где я могу использовать подобное решение?
Вы можете использовать его там, где необходима избыточность звязи, отказоустойчивость и балансировка нагрузки сети. Это лучший способ иметь высокий сегмент доступности сети. Очень полезно использовать объединение в сетях с поддержкой 802.1q VLAN (ваше сетевое оборудование должно поддерживать протокол 802.1q).
Какие типы режимов объединения доступны?
Лучшая документация по Linux Channel Bonding Project.
mod = 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, направленные в локальной системе в поисках выхода и перезаписывает исходный адрес сетевой карты с уникальным аппаратным адресом одного из интерфейсов в группе.
Объединение интерфейсов в CentOS 4.
Далее вы подключаете к коммутатору второй (третий ...) кабель. И проводите конфигурацию.
В файле modprobe.conf добавить следующее:
alias bond0 bonding
options bond0 miimon=80 mode=5
Обязательно добавте псевдоним сети.
modes:
mode=0 (Balance Round Robin)
mode=1 (Active backup)
mode=2 (Balance XOR)
mode=3 (Broadcast)
mode=4 (802.3ad)
mode=5 (Balance TLB)
mode=6 (Balance ALB)
В каталоге /etc/sysconfig/network-scripts создать файл ifcfg-bond0
DEVICE=bond0
IPADDR=<ip address>
NETMASK=
NETWORK=
BROADCAST=
GATEWAY=
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
Изменить ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
Проверте состояние объединения.
cat /proc/net/bonding/bond0
Вы можете использовать несколько объединенных интерфейсов. Для этого вам необходимо загрузить модули объединения столько, сколько вам нужно. Полагая, что вы хотите два объединенных интерфейса, вы должны настроить /etc/modules.conf следующим образом:
alias bond0 bonding
options bond0 -o bond0 mode=0 miimon=100
alias bond1 bonding
options bond1 -o bond1 mode=1 miimon=100
Чтобы управлять самим объединением интерфейсов, вы можете использовать команду ifenslave (см. man ifenslave).