Поиск по сайту

Температура за бортом

Войти в Гараж



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

Объединение сетевых интерфейсов может производиться для обеспечения отказоустойчивости или увеличения пропускной способности. В Linux это носит название - BONDING интерфейсов, в windows - Teaming интерфейсов.

Так же объединение интерфейсов может помочь в случае если физически присутствует несколько интерфейсов, используется один ip-адрес, но при старте OS порядок интерфейсов (eth0, eth1...) меняется произвольным образом. В последнем случае правильнее будет корректно прописать соответствие мак-адреса имени интерфейса для udev, однако bonding также решит эту проблему и одновременно повысит отказоустойчивость.

Если на теорию нет времени, то можно сразу перейти к решению, однако, в зависимости от поставленной задачи, необходимо как минимум определиться с типом объединения:

Типы объединения интерфейсов в Linux:

mode=0 (balance-rr)

Этот режим используется по-умолчанию, если в настройках не указано другое. balance-rr обеспечивает балансировку нагрузки и отказоустойчивость. В данном режиме пакеты отправляются "по кругу" от первого интерфейса к последнему и сначала. Если выходит из строя один из интерфейсов, пакеты отправляются на остальные оставшиеся.При подключении портов к разным коммутаторам, требует их настройки.

mode=1 (active-backup)

При active-backup один интерфейс работает в активном режиме, остальные в ожидающем. Если активный падает, управление передается одному из ожидающих. Не требует поддержки данной функциональности от коммутатора.

mode=2 (balance-xor)

Передача пакетов распределяется между объединенными интерфейсами по формуле ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.

mode=3 (broadcast)

Происходит передача во все объединенные интерфейсы, обеспечивая отказоустойчивость.

mode=4 (802.3ad)

Это динамическое объединение портов. В данном режиме можно получить значительное увеличение пропускной способности как входящего так и исходящего трафика, используя все объединенные интерфейсы. Требует поддержки режима от коммутатора, а так же (иногда) дополнительную настройку коммутатора.

mode=5 (balance-tlb)

Адаптивная балансировка нагрузки. При balance-tlb входящий трафик получается только активным интерфейсом, исходящий - распределяется в зависимости от текущей загрузки каждого интерфейса. Обеспечивается отказоустойчивость и распределение нагрузки исходящего трафика. Не требует специальной поддержки коммутатора.

mode=6 (balance-alb)

Адаптивная балансировка нагрузки (более совершенная). Обеспечивает балансировку нагрузки как исходящего (TLB, transmit load balancing), так и входящего трафика (для IPv4 через ARP). Не требует специальной поддержки коммутатором, но требует возможности изменять MAC-адрес устройства.

Параметры:

miimon

Число мс (тип integer) – как часто производится мониторинг MII статуса. 0 – мониторинг отключен. Рекомендуемое значение 100 мс.

downdelay

Задержка в мс (тип integer) с того момента, как было обнаружено, что связь пропала, до того, как данный канал перестанет использоваться. Задержка нужна, чтобы отфильтровывать кратковременные сбои. Например, после переключения патчкорда в течение нескольких секунд совсем не обязательно терять связь на минуту или больше. По умолчанию используется 0 – нет задержки.

updelay

То же самое, что и downdelay, но определяющее задержку по включению, на тот случай, если какой-нибудь switch или hub «не до конца включились». Напряжение на порт подано, а пакеты ещё корректно не принимаются. Если в этот момент передать данные – они потеряются, а если немного подождать, то этого не случится.

arp_interval

С какой периодичностью в мс (тип integer) осуществлять ARP-мониторинг. Значение 0 означает что ARP-мониторинг выключен.

arp_ip_target

IP-адрес, по которому осуществлять ARP-мониторинг (в случае если arp_interval>0). Если с данного адреса нет ARP-ответов, то значит канал, по которому посылались запросы, не работает.


Решение на примере RHEL 5.6:

1. Проверить наличие и в случае отсутствия установить пакет ethtool

# rpm -q ethtool
ethtool-6-4.el5

 в противном случае:

# yum install ethtool

2. Добавляем модуль bonding в автозагрузку и определяем опции его запуска путем редактирования файла /etc/modprobe.conf (в CentOS 6 это файл /etc/modprobe.d/dist.conf). В конец файла добавляем следующее:

alias bond0 bonding
options bond0 miimon=100 mode=0 downdelay=2000 updelay=5000


Внимание! в CentOS 6.x файл /etc/modprobe.conf отсутствует, вместо него точно так же редактируем /etc/modprobe.d/dist.conf


Загружаем модуль командой:

#modprobe bonding mode=0 miimon=100 downdelay=2000 updelay=5000

Проверяем:

# modprobe -l |grep bond
/lib/modules/2.6.18-308.13.1.el5/kernel/drivers/net/bonding/bonding.ko
/lib/modules/2.6.18-308.13.1.el5/kernel/drivers/net/tulip/winbond-840.ko
#

3. Настраиваем сетевые интерфейсы.

Создаем интерфейс bond0

#cd /etc/sysconfig/network-scrypts

#>ifcfg-bond0

Редактируем конфигурацию интерфейса bond0

#mcedit ifcfg-bond0

DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
GATEWAY=192.168.1.100
USERCTL=no

Редактируем конфигурации физических интерфейсов вошедших в bond0

#mcedit ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

#mcedit ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

4. Рестартуем службу сети.

#service network restart
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]
#

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:15:17:1B:CB:55
inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe1b:cb55/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
RX packets:1088651 errors:0 dropped:0 overruns:0 frame:0
TX packets:712271 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:346664955 (330.6 MiB)  TX bytes:98200162 (93.6 MiB)

eth0      Link encap:Ethernet  HWaddr 00:15:17:1B:CB:55
UP BROADCAST SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth1      Link encap:Ethernet  HWaddr 00:15:17:1B:CB:55
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:1088658 errors:0 dropped:0 overruns:0 frame:0
TX packets:712287 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:346665375 (330.6 MiB)  TX bytes:98202594 (93.6 MiB)
Interrupt:169 Memory:28180000-281a0000

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:887600 errors:0 dropped:0 overruns:0 frame:0
TX packets:887600 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:50704392 (48.3 MiB)  TX bytes:50704392 (48.3 MiB)

Готово.


Обновлено 04.02.2016 16:59
 
Rambler's Top100
 
www.garage.zabkray.net , Powered by HardWorm Chita 2010 - 2021