У меня есть ошибка на некоторых серверах, где LACP (802.3ad
) не работает. У меня на всех серверах есть связующее устройство bond0
с двумя eth
ведомые устройства и каждый интерфейс подключены к другому коммутатору, и оба коммутатора настроены с LACP.
Кажется, все в порядке, но сетевой инженер обнаружил, что какой-то MLAG (реализация Arista LACP) не работал, пока были включены физические устройства.
Когда я посмотрел на /proc/net/bonding/bond0
затронутых серверов, я обнаружил, что каждый интерфейс имеет разные Aggregator ID
. На номинальных серверах Aggregator ID
та же.
Проблема может быть воспроизведена путем выключения и включения порта на коммутаторе, после чего мы можем наблюдать, что, несмотря на то, что физическое соединение установлено, MLAG не работает. Ошибка присутствует в RHEL 6 и 7 (но не на всех серверах).
Конфигурация
#/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
MACADDR=14:02:ec:44:e9:80
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4"
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
# /etc/sysconfig/network-scripts/ifcfg-eno49 (same for other interface)
HWADDR=14:02:ec:44:e9:80
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
У нас есть обходной путь - установить и установить eth
интерфейс на сервере - но это не идеально.
Чтобы проверить протокол LACP, я сделал
tcpdump -i eno49 -tt -vv -nnn ether host 01:80:c2:00:00:02
Я могу видеть пакет каждые 30 секунд на одном интерфейсе, но на другом я вижу пакет каждые 1 секунду, поскольку он пытался установить сеанс LACP.
Есть ли у вас способ найти и исправить это?
(извините, если я не использовал правильный термин для сети, я не очень разбираюсь в LACP)
Спасибо
Изучив документацию и проведя несколько тестов, я обнаружил, что когда сервер использует связывание, вам нужно принудительно отслеживать сетевые ссылки с помощью miimon
параметр из bonding
модуль.
Глядя на /proc/net/bonding/bond0
Я должен был увидеть одно из устройств со статусом MII down
где на самом деле это было на уровне ссылок.
https://access.redhat.com/articles/172483#Link_Monitoring_Modes утверждает, что:
Очень важно, чтобы режим мониторинга канала, либо
miimon
илиarp_interval
иarp_ip_target
параметры должны быть указаны. Настройка связи без режима мониторинга связи не является допустимым использованием драйвера связывания.
Итак, чтобы сообщить об этом в ifcfg-bond0
файл, который вы передаете в BONDING_OPTS
параметры
#/etc/sysconfig/network-scripts/ifcfg-bond0
...
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4 miimon=100"
...
поэтому он заставляет опрашивать ссылки каждые 100 мс.
Перезапустите сетевую службу, чтобы изменения вступили в силу.
Я думаю, вам следует настроить канал виртуального порта на своих коммутаторах