Teaming сетевых интерфейсов linux

Объединение сетевых интерфейсов в CentOS с помощью teamd

Обновлено и опубликовано

Опубликовано: 20.08.2019

В двух словах, teamd — еще один способ агрегирования сетевых интерфейсов (подобно bond). Мы рассмотрим его настройку для системы Linux CentOS (Red Hat).

Установка teamd

В системе должен быть установлен пакет teamd. Он находится в репозиториях популярных систем и в CentOS устанавливается командой:

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

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

Создаем конфигурационный файл для team:

ONBOOT=yes
DEVICE=team0
BOOTPROTO=static
DEVICETYPE=Team
NM_CONTROLLED=no
IPADDR=192.168.1.15
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=77.88.8.8
DNS2=8.8.4.4
DOMAIN=dmosk.local
TEAM_CONFIG=’, «link_watch»: >’

* где TEAM_CONFIG — настройка объединения для интерфейса в формате json; подробнее, о настройке сети в CentOS читайте в статье Настройка сети в CentOS.

В примере выше мы используем runner loadbalance — балансировку трафика. Вот возможные варианты и их описание:

Runner Описание
lacp Объединение сетевых интерфейсов с помощью протокола LACP (802.3ad).
broadcast Весь трафик идет через все порты.
roundrobin Трафик идет через все интерфейсы поочередно в случайном порядке.
loadbalance Равномерное распределение трафика между всеми интерфейсами.
activebackup Используется только один интерфейс. Остальные подключаются, при недоступности основного в соответствии с выставленными приоритетами.

Также настроим физические интерфейсы (в данном примере ens32 и ens34):

ONBOOT=yes
DEVICE=ens32
DEVICETYPE=TeamPort
NM_CONTROLLED=no
TEAM_MASTER=team0

ONBOOT=yes
DEVICE=ens34
DEVICETYPE=TeamPort
NM_CONTROLLED=no
TEAM_MASTER=team0

Перезапускаем сетевую службу:

Если один из сетевых адаптеров уже используется, то перезапуск сети может привести к потере удаленного доступа. В таком случае, необходимо перезапустить компьютер командой
shutdown -r now.

systemctl restart network

setup:
runner: loadbalance
ports:
ens32
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens34
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0

* как видим, используется runner loadbalance; объединены интерфейсы ens32 и ens34, которые находятся в состоянии up.

. мы можем посмотреть состояние интерфейсов и назначенные IP-адреса.

Источник

How to Configure Network Bonding or Teaming in Ubuntu

Network Interface Bonding is a mechanism used in Linux servers which consists of binding more physical network interfaces in order to provide more bandwidth than a single interface can provide or provide link redundancy in case of a cable failure. This type of link redundancy has multiple names in Linux, such as Bonding, Teaming or Link Aggregation Groups (LAG).

Читайте также:  Windows server and linux clients

To use network bonding mechanism in Ubuntu or Debian based Linux systems, first you need to install the bonding kernel module and test if the bonding driver is loaded via modprobe command.

Check Network Bonding in Ubuntu

On older releases of Debian or Ubuntu you should install ifenslave package by issuing the below command.

$ sudo apt-get install ifenslave

To create a bond interface composed of the first two physical NCs in your system, issue the below command. However this method of creating bond interface is ephemeral and does not survive system reboot.

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

To create a permanent bond interface in mode 0 type, use the method to manually edit interfaces configuration file, as shown in the below excerpt.

$ 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 bond_updelay 200

Configure Bonding in Ubuntu

In order to activate the bond interface, either restart network service, bring down the physical interface and rise the bond interface or reboot the machine in order for the kernel to pick-up the new bond interface.

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

The bond interface settings can be inspected by issuing the below commands.

Verify Bond Interface in Ubuntu

Details about the bond interface can be obtained by displaying the content of the below kernel file using cat command as shown.

Check Bonding Information in Ubuntu

To investigate other bond interface messages or to debug the state of the bond physical NICS, issue the below commands.

Check Bond Interface Messages

Next use mii-tool tool to check Network Interface Controller (NIC) parameters as shown.

Check Bond Interface Link

The types of Network Bonding are listed below.

The full documentations regarding NIC bonding can be found at Linux kernel doc pages.

I’am a computer addicted guy, a fan of open source and linux based system software, have about 4 years experience with Linux distributions desktop, servers and bash scripting.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Fix 'deb-src' URIs in your sources.list Error

Setup Network Bonding and Bridging in Ubuntu

Linux IP Address

Fix

Fix Username is not in the sudoers file in Ubuntu

Ubuntu Desktop vs Ubuntu Server

6 thoughts on “How to Configure Network Bonding or Teaming in Ubuntu”

Thank you for your post! Where can I find information about adding network redundancy, not just link redundancy?. Specifically, connecting a single server with 2 NIC’s to 2 separate switches. I’m more worried about a switch failure in the network; it’s the weak link that would shut the whole system down completely. Ideally, I’d have a redundant network allowing (at bare minimum) out-of-band access to remote servers through Telnet, SSH, or web GUI’s. Link Aggregation also requires configuration on a switch… meaning a minimum of a QUAD port NIC. If I have only 2 ports, I’m splitting them between switches, not bonding them. So it seems that link aggregation (to me) is a conversation only after network redundancy/stability is achieved. Can you recommend any specific articles or resources? Reply

Читайте также:  Залогинившийся пользователь в linux

Now that Unbuntu in 20.04 is using Netplan what do I need to do to configure a real server (HPE dl60 H9) with two network interfaces at 192.168.3.24 and 192.168.3.25 as fixed IP with no DHCP and binded into a single interface? Can I still use these commands or do I have to figure out the arcane syntax of Netplan? Reply

I’m trying to bond enp3s0 and wlp4s0 interfaces connected to one wireless repeater. enp3s0 is connected to ap2, which is connected to ap1. wlp4s0 is directly connected to ap1. So they are getting IP from one source. As enp3s0 first gets ip it’s working fine, but wlp4s0 doesn’t get IP because of error: wlp4s0: IAID conflicts with one assigned to enp3s0 CTRL-EVENT-DISCONNECTED bssid=bc:ee:7b:90:74:c8 reason=4 locally_generated=1 wlp4s0: IAID 03:d7:8c:63
Jun 05 11:30:45 fallback-os dhcpcd[23163]: wlp4s0: IAID conflicts with one assigned to enp3s0
Jun 05 11:30:45 fallback-os dhcpcd[23163]: wlp4s0: adding address fe80::3e65:1ccc:341a:27c9
Jun 05 11:30:45 fallback-os dhcpcd[23163]: wlp4s0: soliciting a DHCP lease
Jun 05 11:30:46 fallback-os dhcpcd[23163]: wlp4s0: offered 192.168.1.178 from 192.168.1.254
Jun 05 11:30:46 fallback-os dhcpcd[23163]: wlp4s0: soliciting an IPv6 router
Jun 05 11:30:46 fallback-os dhcpcd[23163]: wlp4s0: probing address 192.168.1.178/24
Jun 05 11:30:46 fallback-os dhcpcd[23163]: wlp4s0: hardware address f8:1a:67:5c:7c:e2 claims 192.168.1.172 It would be great if someone could help to resolve this issue. Reply

I have eth0 from ISP0 and eth1 from ISP1 , both have different gateways and IP addresses. So based on what have you put those static values for bond0?

"address 192.168.1.150 netmask 255.255.255.0 gateway 192.168.1.1"

Источник

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

Так уже получилось что писал статью для howtoforge. И естественно тут же все это оказалось в русском варианте на других сайтах. Только вот незадача: в статье были допущены неточности, и публицисты с других «сайтов» вставили as-is.
Хочу попробовать исправить это оплошность.
Для чего это надо?
Объясню на примере: был у меня фтп с 2мя сетевыми картами, но использовалась одна. Со временем весь 1Гб/с начал забиваться по вечерам — и людям плохо, и у меня iowait растет. Но есть вторая сетевая карта. Так вот такое объединение позволит использовать 2 (3, 4, 5. ) как одну с 2Гб/с.
Но это не «потолок», вот полный список режимов:
mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс.
mode=1 (active-backup)
Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Все пакеты на все интерфейсы
mode=4 (802.3ad)
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.
mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.
mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.
Настройка
Очень простая. Вы выбираете режим, втыкаете в коммутатор второй кабель.
Дальше в зависимости от системы, я делал это на Debian Lenny
#apt-get install ifenslave-2.6
Дальше есть 2 варианта:
Вариант №1 Подправить /etc/network/interfaces к примеру так.
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1
и подправить /etc/modprobe.d/arch/i386 примерно так
alias bond0 bonding
options bonding mode=5 miimon=100 downdelay=200 updelay=200
Естественно указать свой режим и настройки сети.
# update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart
Вариант №2 Все настройки через /etc/network/interfaces
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
bond_mode balance-tlb
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1
Сохраняем и пишем:
update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart
После этого должен появится один интерфейс bond0. Далее можно плодить интерфейсы bon0:0 и т.д.
UPD: Перенес из своего блога в нужный
UPD 2: Спасибо infotim, за правки.

Читайте также:  Installing python packages on linux

Источник

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