Объединение сетевых интерфейсов в CentOS с помощью teamd
В двух словах, teamd — еще один способ агрегирования сетевых интерфейсов (подобно bond). Мы рассмотрим его настройку для системы Linux CentOS (Red Hat).
Установка teamd
В системе должен быть установлен пакет teamd. Он находится в репозиториях популярных систем и в CentOS устанавливается командой:
yum install teamd
Объединение сетевых интерфейсов
Чтобы настройки были постоянными (объединение сети также работало после перезагрузки компьютера), мы настроим сеть через ifcfg-файлы.
Создаем конфигурационный файл для team:
vi /etc/sysconfig/network-scripts/ifcfg-team0
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='{"runner": {"name": "loadbalance"}, "link_watch": {"name": "ethtool"}}'
* где TEAM_CONFIG — настройка объединения для интерфейса в формате json; подробнее, о настройке сети в CentOS читайте в статье Настройка сети в CentOS.
В примере выше мы используем runner loadbalance — балансировку трафика. Вот возможные варианты и их описание:
Runner | Описание |
---|---|
lacp | Объединение сетевых интерфейсов с помощью протокола LACP (802.3ad). |
broadcast | Весь трафик идет через все порты. |
roundrobin | Трафик идет через все интерфейсы поочередно в случайном порядке. |
loadbalance | Равномерное распределение трафика между всеми интерфейсами. |
activebackup | Используется только один интерфейс. Остальные подключаются, при недоступности основного в соответствии с выставленными приоритетами. |
Также настроим физические интерфейсы (в данном примере ens32 и ens34):
vi /etc/sysconfig/network-scripts/ifcfg-ens32
ONBOOT=yes
DEVICE=ens32
DEVICETYPE=TeamPort
NM_CONTROLLED=no
TEAM_MASTER=team0
... и ens34:
vi /etc/sysconfig/network-scripts/ifcfg-ens34
ONBOOT=yes
DEVICE=ens34
DEVICETYPE=TeamPort
NM_CONTROLLED=no
TEAM_MASTER=team0
Перезапускаем сетевую службу:
Если один из сетевых адаптеров уже используется, то перезапуск сети может привести к потере удаленного доступа. В таком случае, необходимо перезапустить компьютер командой
shutdown -r now.
systemctl restart network
Проверяем состояние team:
teamdctl team0 state
... в моем случае это было:
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 a
... мы можем посмотреть состояние интерфейсов и назначенные IP-адреса.