Linux bond balance rr

Объединение сетевых интерфейсов в Linux. Настройка bonding

Объединение сетевых интерфейсов(Bonding) – это механизм, используемый Linux-серверами и предполагающий связь нескольких физических интерфейсов в один виртуальный, что позволяет обеспечить большую пропускную способность или отказоустойчивость в случае повреждения кабеля. В данном руководстве мы разберем реализацию объединения интерфейсов в Linux для Ubuntu/Debian и CentOS/RHEL/Fedora.

Агрегация сетевых интерфейсов в Ubuntu и Debian

Важно! Если у вас используется Ubuntu версии 17.10 и выше, то необходимо установить пакет ifupdown или настраивать агрегацию каналов нужно через netplan

Прежде всего нужно установить модуль ядра для поддержки объединения и при помощи команды modprobe проверить, загружен ли драйвер.

В более старых версиях Debian или Ubuntu может потребоваться установка пакета ifenslave:

$ sudo apt-get install ifenslave

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

$ sudo ip link add bond0 type bond mode 802.3ad $ sudo ip link set eth0 master bond0 $ sudo ip link set eth1 master bond0

Для создания постоянного связанного интерфейса типа mode 0 (ниже мы разберем эти типы более подробно), нужно отредактировать файлы конфигурации сетевых интерфейсов. Откройте с помощью любого текстового редактора, например nano, файл /etc/network/interfaces , как показано в следующем фрагменте (замените IP-адрес, маску подсети, шлюз и DNS-серверы на используемые в вашей сети).

$ sudo nano /etc/network/interfaces # The primary network interface auto bond0 iface bond0 inet static address 192.168.1.150 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 8.8.8.8 dns-search domain.local slaves eth0 eth1 bond_mode 0 bond-miimon 100 bond_downdelay 200 bound_updelay 200

Чтобы активировать объединенный интерфейс, перезапустите сетевую службу, отключите физические интерфейсы и включите объединенный интерфейс, либо перезагрузите машину, чтобы ядро определило новый объединенный интерфейс.

$ sudo systemctl restart networking.service
$ sudo ifdown eth0 && ifdown eth1 && ifup bond0

Настройки связанного интерфейса можно проверить при помощи следующих команд:

Подробную информацию об объединенном интерфейсе можно получить, просмотрев содержимое следующего файла ядра командой cat:

Для отладки ошибок можно использовать команду tail

Проверку параметров сетевой карты можно выполнить при помощи инструмента mii-tool:

Режимы работы

mode=0 (balance-rr)
При этом методе объединения трафик распределяется по принципу «карусели»: пакеты по очереди направляются на сетевые карты объединённого интерфейса. Например, если у нас есть физические интерфейсы eth0, eth1, and eth2, объединенные в bond0, первый пакет будет отправляться через eth0, второй — через eth1, третий — через eth2, а четвертый снова через eth0 и т.д.

Читайте также:  Su сбой при проверке подлинности kali linux

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

mode=2 (balance-xor)
В данном случае объединенный интерфейс определяет, через какую физическую сетевую карту отправить пакеты, в зависимости от MAC-адресов источника и получателя.

mode=3 (broadcast) Широковещательный режим, все пакеты отправляются через каждый интерфейс. Имеет ограниченное применение, но обеспечивает значительную отказоустойчивость.

mode=4 (802.3ad)
Особый режим объединения. Для него требуется специально настраивать коммутатор, к которому подключен объединенный интерфейс. Реализует стандарты объединения каналов IEEE и обеспечивает как увеличение пропускной способности, так и отказоустойчивость.

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

mode=6 (balance-alb)
Адаптивное распределение нагрузки. Аналогично предыдущему режиму, но с возможностью балансировать также входящую нагрузку.

Объединение сетевых интерфейсов в CentOS, RHEL и Fedora

Создайте новый файл bonding.conf в директории /etc/modprobe.d/ . Имя может быть любым, но расширение должно быть .conf. Вставьте в этот файл следующую строку:

Такая строка в файле /etc/modprobe.d/bonding.conf требуется для каждого bond интерфейса.
Для агрегации интерфейсов создайте в директории /etc/sysconfig/network-scripts/ файл конфигурации с именем ifcfg-bond0. Вот пример содержимого файла конфигурации (IP-адреса в вашей системе могут отличаться):

DEVICE=bond0 IPADDR=192.168.1.8 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no

После создания объединённого интерфейса нужно настроить его и связанные с ним сетевые карты, добавив в файлы конфигурации директивы MASTER и SLAVE. Для всех связанных интерфейсов эти файлы могут быть почти одинаковыми. Например, у двух интерфейсов eth0 и eth1, связанных в один, они могут иметь следующий вид. Отредактируйте их, как показано ниже.
Для eth0

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

Значение этих директив следующее:
DEVICE: определяет имя устройства
USERCTL: определяет, может ли пользователь управлять интерфейсом (в данном случае нет)
ONBOOT: определяет, включать ли интерфейс при загрузке
MASTER: есть ли у этого устройства ведущий интерфейс (здесь это bond0)
SLAVE: работает ли это устройство каки ведомое
BOOTPROTO: Определяет получение IP-адреса по DHCP. При статическом IP-адресе устанавливается значение none

Перезагрузите сетевую службу и проверьте конфигурацию командой ifconfig.

# systemctl restart network # ifconfig

Заключение

Объединение сетевых интерфейсов — удобный и функциональный механизм для обеспечения качественной и бесперебойной работы вашей сети. Надеемся, данное руководство было полезным. Более подробную информацию об используемых командах можно получить в соответствующих man-страницах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Похожие записи:

Источник

Настройка Bonding интерфейса в Linux.

В данной статье расскажем про возможности объединения сетевых интерфейсов в Linux для обеспечения резервирования, отказоустойчивости и увеличения пропускной способности сетевых подключений. Скорее всего, вы уже слышали название в Linux – Bonding — интерфейс, а в Windows – TEAMing интерфейс.

Читайте также:  Kali linux all releases

Типы агрегации (объединения) интерфейсов в Linux.

Для понимания вопроса ознакомимся с теорией. Интерфейсы Bonding являются виртуальными сетевыми интерфейсами, которые объединяют несколько физических сетевых интерфейсов для увеличения отказоустойчивости и пропускной способности канала. Различаются несколько типов объединения интерфейсов в Bond.

1. mode=0 (balance-rr) или Round Robin

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

Из названия Round Robin понятно, что в данном режиме пакеты отправляются «по кругу» от первого интерфейса к последнему и сначала, что решает вопросы отказоустойчивости и балансировки нагрузки., т.е. по очереди. При подключении bond-интерфейс в режиме balance-rr к коммутатору, на коммутаторе должно быть настроено статическое объединение портов (static port trunking).

2. mode=1 (active-backup)

В режиме Active-Backup активен только один сетевой интерфейс из двух объединённых. Второй интерфейс становится активным только в том случае, когда первый (активный) интерфейс перестает работать. Эта политика применяется для повышения отказоустойчивости, но не решает вопросы балансировки трафика интерфейсов; При такой политике MAC-адрес бонд-интерфейса виден снаружи только через один сетевой порт, во избежание появления проблем с коммутатором.

mode=2 (balance-xor)

В режиме XOR передача пакетов распределяется между сетевыми интерфейсами по формуле: ((«MAC-адрес источника» XOR «MAC-адрес назначения») % «число интерфейсов»). Получается, один и тот же сетевой интерфейс передает пакеты одним и тем же получателям. Режим XOR применяется для балансировки нагрузки и обеспечения отказоустойчивости. При подключении bond-интерфейс в режиме balance-xor к коммутатору, на коммутаторе должно быть настроено статическое объединение портов (static port trunking).

3. mode=3 (broadcast)

В режиме Broadcast (широковещательный трафик) происходит отправка всех сетевых пакетов через все интерфейсы, обеспечивая отказоустойчивость без балансировки. При подключении bond-интерфейс в режиме balance-broadcast к коммутатору, на коммутаторе должно быть настроено статическое объединение портов (static port trunking).

4. mode=4 (802.3ad)

В данном режиме используется протокол Link Agregation Control Protocol, LACP — IEEE 802.3ad. Каждый LAG состоит из портов с одинаковой скоростью и установленной full-duplex операцией.

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

5. mode=5 (balancetlb) (Adaptive transmit load balancing)

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

Читайте также:  Linux which ports are opened

6. mode=6 (balance-alb) (Adaptive load balancing)

Включает в себя режим mode=5 balance-tlb плюс осуществляет балансировку входящего трафика. Не требует дополнительной настройки на коммутаторе. Балансировка входящего трафика достигается путем ARP-переговоров. Драйвер перехватывает ARP-ответы, отправляемые с локальных сетевых карт наружу, и переписывает MAC-адрес источника на один из уникальных MAC-адресов сетевой карты, участвующей в объединении. Таким образом, различные пиры используют различные MAC-адреса сервера. Балансировка входящего трафика распределяется последовательно (round-robin) между интерфейсами.

Перейдем к настройке режимов на Linux, в котором рассмотрим пример объединения физических интерфейсов eth1, eth2 в bonding интерфейс с протоколом LACP (mode=4 (802.3ad)):

Настройка Bonding-интерфейса.

1. В первую очередь установим пакет “ifenslave”, который необходим для boniding, вводим команду:

2. Отключим физические интерфейсы, которые мы собираем в Bond0-интерфейс:

# ifdown eth0 eth1 # /etc/init.d/networking stop
# ifconfig eth0 eth1 down # /etc/init.d/networking stop

3. Далее переходим к редактированию файла конфигурации сетевого интерфейса /etc/network/interfaces. Приводим его к следующему виду:

auto bond0 iface bond0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.254 bond-slaves eth0 eth1 bond-mode active-backup bond-miimon 100 bond-downdelay 200 bond-updelay 200

Объяснимся по содержанию конфигурационного файла bond интерфейса

address – IP адрес логического интерфейса bond0;

netmask – сетевая маска для IP адрес логического интерфейса;

mtu – параметр для задания MTU интерфейса; значение по умолчанию – 1500; при изменении MTU интерфейса bond0 меняется MTU и объединяемых интерфейсов eth1 и eth2;

slaves – имена физических интерфейсов, объединяемых в агрегированный канал;

bond_mode – настройка, отвечающая за протокол, который обеспечивает работу агрегации каналов (в данном примере – это LACP, который основан на стандарте 802.3ad);

bond_miimon – параметр, определяющий интервал времени в миллисекундах. Через заданное время будет происходить проверка физических интерфейсов на их доступность;

bond_downdelay — время (в миллисекундах) задержки перед отключением интерфейса, если произошел сбой соединения. Эта опция действительна только для мониторинга MII (miimon). Значение параметра должно быть кратным значениям miimon.

bond_updelay — время задержки в миллисекундах, перед тем как поднять канал при обнаружении его восстановления. Этот параметр возможен только при MII-мониторинге (miimon). Значение параметра должно быть кратным значениям miimon.

bond_xmit_hash_policy – параметр, определяющий уровень (в соответствии с эталонной моделью OSI), на котором будет происходить вычисление хеш-функции для последующей балансировки трафика.

Введем команды, которые отключат интерфейсы eth1, eth2 и активируем bond0:

4. Перезапускаем службу networking:

service networking restart service networking start

5. Для проверки работы bond0 введите команду:

Для отображения интерфейсов и их настроек и команду:

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Оцените статью
Adblock
detector