Меню

Centos 7 bonding настройка



Объединение сетевых интерфейсов — CentOS Wiki

Что такое «объединение» (bonding) сетевых интерфейсов и как оно работает?

Под словом объединение будем подразумевать — портовый транкинг (автоматическое распределение каналов по требованию). В дальнейшем будет использоваться слово — «объединение» потому, что происходит практически объединение в единое целое.

Объединение позволяет совокупно собрать несколько портов в одну группу, эффективно объединяя пропускную способность в одном направлении. Объединение так же позволяет создавать мульти-гигабитные каналы для транспортировки трафика через высокопропускные районы вашей сети. Например, вы можете объединить два порта по 100 мегабит в 200 мегабитный магистральный порт. Это эквивалентно одному интерфейсу с пропускной способностью 200 мегабит.

Где я могу использовать подобное решение?

Вы можете использовать его там, где необходима избыточность звязи, отказоустойчивость и балансировка нагрузки сети. Это лучший способ иметь высокий сегмент доступности сети. Очень полезно использовать объединение в сетях с поддержкой 802.1q VLAN (ваше сетевое оборудование должно поддерживать протокол 802.1q).

Какие типы режимов объединения доступны?

mod = 1 (active-backup)

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

mode = 2 (balance-xor)

XOR политика: Передача на основе [(исходный MAC-адрес → XORMAC-адрес получателя) %число интерфейсов]. Эта команда выбирает для каждого получателя определенный интерфейс в соответствии с 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 добавить следующее:

Обязательно добавте псевдоним сети.

В каталоге /etc/sysconfig/network-scripts создать файл ifcfg-bond0

Изменить ifcfg-eth0:

Проверте состояние объединения.

Вы можете использовать несколько объединенных интерфейсов. Для этого вам необходимо загрузить модули объединения столько, сколько вам нужно. Полагая, что вы хотите два объединенных интерфейса, вы должны настроить /etc/modules.conf следующим образом:

Чтобы управлять самим объединением интерфейсов, вы можете использовать команду ifenslave (см. man ifenslave).

Источник

Записки угрюмого поднимателя пингвинов.

*nix заметки на память

четверг, 14 июля 2016 г.

Настройка Bonding в режиме Active-backup на CentOS

1. В директории /etc/sysconfig/network-scripts/ создадим файл ifcfg-bond0 с таким содержанием:

Читайте также:  Asus p8p67 pro настройка

Значения поставьте свои.

2. Меняем содержимое /etc/sysconfig/network-scripts/ifcfg-eth0 на:

3. Меняем содержимое /etc/sysconfig/network-scripts/ifcfg-eth1 на:

4. Перезапускаем сетевые интерфейсы:

Немного теории если интересно.

Ethernet bonding — это объединение нескольких сетевых каналов в один. Главным образом используется для обеспечение избыточности и балансировки нагрузки. Я обычно объединяю в бондинг интерфейсы там, где обычно присутствующий на сервере второй сетевой интерфейс не используется явным образом. Модуль ядра в линукс поддерживает несколько типов бондинга.

mode=0 (balance-rr) — Передача ведется через каждый доступный интерфейс последовательно (по кругу). Обеспечивает балансировку нагрузки и отказоустойчивость.

mode=1 (active-backup) — Передача ведется через один интерфейс, другой (или другие) интерфейс начинает работать только когда первый интерфейс выходит из строя.

mode=2 (balance-xor) — Нагрузка распределяется согласно формуле (MAC отправителя XOR MAC получателя)% интерфейсов. Получается что каждый интерфейс зависит от определенного MAC адреса получателя, чем и достигается равномерное распределение нагрузки.

mode=3 (broadcast) — Передача ведется через все интерфейсы при этом обеспечивается балансировки нагрузки.

mode=4 (802.3ad) — Классическая агрегация каналов 802.3ad. При этом требуется чтобы коммутатор поддерживал 802.3ad и драйвера сетевых интерфейсов поддерживали восстановление скорости и дуплекса.

mode=5 (balance-tlb) — Исходящий трафик распределяется согласно текущей нагрузке между каждым интерфейсом, входящий же получает только один (активный) интерфейс.

mode=6 (balance-alb) — Обеспечивается балансировка нагрузки передачи и приема IPv4 через ARP. Необходима возможность изменять MAC интерфейса.

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

# apt-get install ifenslave

Опции драйвера bonding.

Опции модуля могут быть заданы как аргументы командной строки или указаны в файлах конфигурации /etc/modules.conf или /etc/modprobe.conf.

Существуют два способа диагностирования (мониторинга) связанности:

•с помощью статуса Media Independent Interface (MII);
•с помощью ARP-запросов и ответов.

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

arp_interval — с какой периодичностью в миллисекундах осуществлять ARP-мониторинг. Значение 0 — ARP-мониторинг выключен.

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

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

updelay — то же самое, что и downdelay, но определяет задержку по включению. На случай, когда сетевой коммутатор (switch) или концентратор (hub) «не до конца включились», напряжение на порт подано, а пакеты не принимаются.

max_bonds — определяет количество bond-интерфейсов, которые будут созданы при загрузке одного модуля. Значение по-умолчанию — 1.

primary — указывает подчинённый интерфейс (eth0, eth1 и прочие), который будет основным в связке. Указанный интерфейс всегда будет работать в активном режиме, когда это возможно. Особенно актуально это, когда скорость одного интерфейса больше других. Опция primary доступна только для режима active-backup.

primary_reselect — определяет условия выбора активного подчинённого интерфейса:

•always или 0 — первичный подчинённый интерфейс всегда становится активным, когда это возможно;
•better или 1 — интерфейс становится активным, если скорость и duplex-режим больше, чем скорость и дуплексный режим активного интерфейса;
•failure или 2 — интерфейс становится активным лишь в случае, когда текущий активный интерфейс становится недоступным.
Параметр primary_reselect не учитывается в двух случаях:

•если нет активных подчинённых интерфейсов, то первичный интерфейс всегда становится активным;
•при первоначальном создании bond-связки, первичный интерфейс всегда становится активным.

Читайте также:  Настройки браузера опера язык

Round-robin balance. Этот режим используется по-умолчанию. Пакеты передаются последовательно в циклическом порядке с первого до последнего интерфейса из bonding-группы. В случае подключения сервера к разным коммутаторам, требуется их настройка. Режим обеспечивает распределение нагрузки и отказоустойчивость.

Active-backup. Активен только один интерфейс из группы, остальные находятся в режиме ожидания, при его отказе, на замену подключается другой интерфейс из группы. Режим применяется для повышения отказоустойчивости.

XOR. В этом режиме физический интерфейс для передачи пакетов вычисляется по формуле:

( source XOR destination ) % n_slavesгде:

•source — MAC-адрес отправителя;
•destination — MAC-адрес получателя;
•n_slaves — число работающих интерфейсов в bonding-е.

Интерфейс, отправляющий пакет зависит от MAC-адреса получателя, каждый физический сетевой интерфейс отправляет пакеты только определённой группе MAC-адресов, тем самым обеспечивая распределение нагрузки.

Broadcast. Широковещательный режим. Все пакеты передаются через все интерфейсы, что обеспечивает отказоустойчивость.

IEEE 802.3ad Dynamic link aggregation. Динамическое объединение соединений. В группы объединяются одинаковые по скорости и дуплексному режиму интерфейсы. Все интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad.

Необходимые условия выполнения:

•поддержка в ethtool определения скорости и дуплексного режима сетевых карт;
•коммутатор, поддерживающий стандарт IEEE 802.3ad Dynamic link aggregation.

Adaptive transmit load balancing. Адаптивная балансировка передачи. Исходящий трафик распределяется в соответствии с текущей нагрузкой (в зависимости от скорости) на интерфейсах.

Необходимые условия выполнения:

•поддержка в ethtool определения скорости и дуплексного режима сетевых карт.
Adaptive load balancing. Включает в себя balance-tlb плюс балансировку на приём (rlb) для IPv4. Не требует применения специальных коммутаторов. Балансировка на приём достигается на уровне протокола ARP. Драйвер перехватывает ARP ответы локальной системы и, в зависимости от загрузки, перезаписывает физический адрес на адрес одного из сетевых интерфейсов.

Настройка bonding при помощи утилиты ifenslave.

Рассмотрим пример создания bonding-связки из двух сетевых интерфейсов eth0 и eth1 в режиме active-backup.

# modprobe bonding max_bonds=1 mode=1 primary=eth0 miimon=100 downdelay=3000 updelay=1000

Со следующими параметрами:

•max_bonds=1 — один bond-интерфейс;
•mode=1 — режим active-backup;
•primary=eth0 — первичным подчинённым интерфейсом является eth0;
•miimon=100 — каждые 100мс проверяется состояние подключения интерфейса;
•downdelay=3000 — через три секунды после того как интерфейс теряет соединение, он становится неактивным и на его замену подключается резервный интерфейс;
•updelay=1000 — через одну секунду после того, как появляется соединение на интерфейсе, на него могу посылаться пакеты.

Проверить, что модуль появился:

# lsmod | grep bonding
bonding 632200

# ip link set bond0 up

# ip address add 192.168.0.1/24 broadcast 192.168.0.255 dev bond0

Добавление интерфейсов в bonding.

Добавляем интерфейсы в bonding-связку:

# ifenslave bond0 eth0
# ifenslave bond0 eth1

Вывод команды ifconfig выглядит следующим образом:

# ifconfigbond0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:35759 errors:0 dropped:0 overruns:0 frame:0
TX packets:16381 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21323250 (20.3 MiB) TX bytes:1322986 (1.2 MiB)eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:28148 errors:0 dropped:0 overruns:0 frame:0
TX packets:15823 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20235049 (19.2 MiB) TX bytes:1286777 (1.2 MiB)
Interrupt:18 Base address:0xdc00eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:7611 errors:0 dropped:0 overruns:0 frame:0
TX packets:558 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1088201 (1.0 MiB) TX bytes:36209 (35.3 KiB)
Interrupt:16 Base address:0xcc00lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:284 errors:0 dropped:0 overruns:0 frame:0
TX packets:284 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:66020 (64.4 KiB) TX bytes:66020 (64.4 KiB)

Читайте также:  Drag racing настройка кпп c16

Показать информацию через ifenslave обо всех интерфейсах, она достаточна минималистична:

# ifenslave -a
The result of SIOCGIFFLAGS on lo is 49.
The result of SIOCGIFADDR is 00.00.7f.00.
The result of SIOCGIFHWADDR is type 772 00:00:00:00:00:00.
The result of SIOCGIFFLAGS on eth0 is 1843.
The result of SIOCGIFADDR is 00.00.ffffffc0.ffffffa8.
The result of SIOCGIFHWADDR is type 1 XX.XX.XX.XX.XX.XX.
The result of SIOCGIFFLAGS on eth1 is 1843.
The result of SIOCGIFADDR is 00.00.ffffffc0.ffffffa8.
The result of SIOCGIFHWADDR is type 1 XX.XX.XX.XX.XX.XX.
The result of SIOCGIFFLAGS on bond0 is 1443.
The result of SIOCGIFADDR is 00.00.ffffffc0.ffffffa8.
The result of SIOCGIFHWADDR is type 1 XX.XX.XX.XX.XX.XX.

Посмотреть подробную информацию об интерфейсах можно используя следующую команду cat /proc/net/bondong/ , где — название bond-интерфейса:

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 1000
Down Delay (ms): 3000Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: XX:XX:XX:XX:XX:XXSlave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: YY:YY:YY:YY:YY:YY

Из вывода можно понять об используемом режиме bonding первичного интерфейса, состоянии всех его интерфейсов, входящих в связку, о настройках задержек мониторинга интерфейсов.

Пример поведения bond-интерфейса в режиме active-backup.

Рассмотрим ситуацию когда на интерфейсе eth0 пропадает соединение (когда вытащили не тот кабель и вставили обратно):

Начальное состояние интерфейса bond0, созданного с настройками, рассмотренными выше:

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 1000
Down Delay (ms): 3000Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: XX:XX:XX:XX:XX:XXSlave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: YY:YY:YY:YY:YY:YY

Пропадает сигнал. Через 100 мс мониторинг обнаруживает, что интерфейс eth0 потерял соединение и выставляет:

Так же отмечается, что было зафиксирована одна потеря соединения на интерфейсе:

В течении 3-х секунд (Down Delay (ms): 3000) выдерживается задержка.

Если за этот промежуток времени соединение восстановлено, то спустя одну секунду задержки:

MII Status принимает значение up:

И работа сетевого bond-интерфейса продолжается без изменений.

Если же за 3 секунды (Down Delay (ms): 3000) соединение не было восстановлено, то происходит активация следующего интерфейса из связки, в данном случае это интерфейс eth1:

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 1000
Down Delay (ms): 3000Slave Interface: eth0
MII Status: down
Link Failure Count: 1
Permanent HW addr: XX:XX:XX:XX:XX:XXSlave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: YY:YY:YY:YY:YY:YY

При восстановлении соединения на интерфейсе eth0, так как он является первичным подчинённым интерфейсом в связке, спустя задержку в одну секунду (Up Delay (ms): 1000), происходит его активация на замену текущего активного интерфейса eth1.

Если первичный интерфейс не был задан, то активным интерфейсом остаётся интерфейс eth1 до следующего сбоя соединения. Назначить принудительно первичный интерфейс можно выполнив команду: ifenslave -c , где — название bond-интерфейса, а — название интерфейса в связке, который станет первичным:

# ifenslave bond0 -c eth0

Удаление интерфейсов из bonding.

Удаление производится командой ifenslave -d :

# ifenslave bond0 -d eth0

Для отключения bonding, необходимо выполнить следующие действия:

•удалить из bonding-связки все интерфейсы:

# ifenslave bond0 -d eth0
# ifenslave bond0 -d eth1

Источник

Adblock
detector