Я пытаюсь установить связь на своем сервере Proxmox 4.4.
Я выбрал активную резервную копию, потому что связь будет связана с мостом Linux, который не будет использовать протокол Spanningtree.
связь (bond1) будет иметь 2 ведомых устройства: Bond0, который представляет собой LACP из 3 ссылок (eth0, eth1, eth2) на 1 коммутатор и eth3 на другой коммутатор.
Моя проблема в том, что когда я отключаю Bond0 (основной интерфейс Bond1), я отключаю все кабели от (eth0 eth1 eth2)
Bond1 сохраняет bond0 как активную ссылку и как следствие: сервер недоступен из локальной сети.
Я думаю, это потому, что Bond0 остается в рабочем состоянии, даже когда его 3 ведомых устройства не работают.
потому что когда я делаю ifconfig bond0 down.
Bond1 использует другую ссылку (eth3) для подключения. и сервер снова в локальной сети.
так оно и должно работать.
Итак, я попробовал несколько параметров в bond0, чтобы заставить его иметь состояние DOWN, когда eth0 eth1 и eth2 находятся в DOWN.
Я не мог узнать.
Я даже использовал параметры post-down, post-up, .... на eth0 eth1 и eth2 в / etc / network / interface, чтобы запустить скрипт, который выполняет ifdown bond0, когда эти порты DOWN, и ifup bond0, когда один из них снова работает.
Но это не работает, я попытался отключить bond0. bond1 по-прежнему использует bond0 как активную ссылку. Скрипт не запущен.
В этот момент я хотел вырвать волосы ....
Скрипт не запускается, т.к. они выполняются только тогда, когда я делаю ifdown eth0 ifdown eth1 или ifdown eth2 ...
(post-down, post-up): теперь я знаю, что эти параметры запускали команду только тогда, когда мы запускаем ifdown или ifup, но не когда мы отсоединяем вилку. (серьезно, в чем смысл этой функциональности).
Я хочу выполнить действие, когда интерфейс не работает, и он не работает, когда я отсоединяю кабель Ethernet ...
это совсем не то, что я хочу.
я перезапустился между изменениями.
Я сейчас в отчаянии, я потратил на это 9 часов.
так что я прошу вас вашей помощи.
Я нашел пакет debian "ifplugd", который будет выполнять действия при отключении интерфейсов. Я попробую завтра
Я действительно не знаю, что здесь лучше всего.
Прислушиваюсь к любым советам. Спасибо.
Обновить
Вот / etc / network / interface:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
post-down do_i_bring_bond0_down.sh
post-up do_i_bring_bond0_up.sh
auto eth1
iface eth1 inet manual
post-down do_i_bring_bond0_down.sh
post-up do_i_bring_bond0_up.sh
auto eth2
iface eth2 inet manual
post-down do_i_bring_bond0_down.sh
post-up do_i_bring_bond0_up.sh
iface eth3 inet manual
auto bond0
iface bond0 inet manual
slaves eth0 eth1 eth2
bond_miimon 100
bond_mode 802.3ad
bond_xmit_hash_policy layer3+4
bond_min_links 1
auto bond1
iface bond1 inet manual
slaves bond0 eth3
bond_miimon 100
bond_mode active-backup
bond_primary bond0
bond_updelay 100
bond_downdelay 100
auto vmbr0
iface vmbr0 inet static
address 10.4.2.4
netmask 255.255.255.192
gateway 10.4.2.1
bridge_ports bond1.20
bridge_stp off
bridge_fd 0
auto vmbr1
iface vmbr1 inet manual
bridge_ports bond1
bridge_stp off
bridge_fd 0
bridge_vlan_aware yes
/ proc / net / bonding / bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: bond0 (primary_reselect always)
Currently Active Slave: bond0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 100
Down Delay (ms): 100
Slave Interface: bond0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: c8:1f:66:c2:dc:3b
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:15:17:3a:a9:bf
Slave queue ID: 0
/ proc / net / bonding / bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: c8:1f:66:c2:dc:3b
Active Aggregator Info:
Aggregator ID: 2
Number of ports: 3
Actor Key: 9
Partner Key: 67
Partner Mac Address: 80:2a:a8:df:42:b1
Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: c8:1f:66:c2:dc:3b
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 1
Partner Churned Count: 1
details actor lacp pdu:
system priority: 65535
system mac address: c8:1f:66:c2:dc:3b
port key: 0
port priority: 255
port number: 1
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: 80:2a:a8:df:42:b1
oper key: 67
port priority: 128
port number: 8
port state: 61
Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: c8:1f:66:c2:dc:3c
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: c8:1f:66:c2:dc:3b
port key: 0
port priority: 255
port number: 2
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: 80:2a:a8:df:42:b1
oper key: 67
port priority: 128
port number: 7
port state: 61
Slave Interface: eth2
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:15:17:3a:a9:be
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 1
Partner Churned Count: 1
details actor lacp pdu:
system priority: 65535
system mac address: c8:1f:66:c2:dc:3b
port key: 0
port priority: 255
port number: 3
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: 80:2a:a8:df:42:b1
oper key: 67
port priority: 128
port number: 9
port state: 61
Вы не можете связывать облигации, это неправильная конфигурация.
См. Мой другой ответ, чтобы узнать, как добиться «переключения при отказе между связями» исключительно с помощью LACP, что является правильной конфигурацией: https://unix.stackexchange.com/questions/82569/bonds-vs-aggregators/172232#172232
Проблема вроде бы в следующем: «Мин. Ссылок: 0». Из документация по связыванию для параметра min_links
min_links
Это позволяет установить минимальное количество портов-членов, которые должны быть включены (состояние соединения), прежде чем помечать связанное устройство как работающее (несущая включена).
Значение по умолчанию - 0. Это приведет к подтверждению несущей (для режима 802.3ad) всякий раз, когда есть активный агрегатор, независимо от количества доступных каналов в этом агрегаторе.
Однако эта часть несколько сбивает с толку:
Обратите внимание: поскольку агрегатор не может быть активен без хотя бы одной доступной ссылки, установка для этого параметра значения 0 или 1 имеет тот же эффект.
В вашем примере с bond0 все три интерфейса eth имеют MII-статус (состояние ссылки) не работает, но активен агграгатор, в котором они находятся (2), что, похоже, противоречит документации. Посмотрим на источник.
Код для bond_3ad_set_carrier () вызывает __agg_active_ports (), который просто проверяет значение флага is_enabled каждого разработчика и, по-видимому, не имеет ничего общего со статусом ссылки.
Этот патч похоже, указывает на то, что это так:
На данный момент патч использует количество активных ведомых устройств для сравнения с min_links, чтобы узнать, когда включить / выключить связующий носитель. Рекомендуемая настройка min_links - 1, а не ноль по умолчанию. Использование min_links = 1 означает, что по крайней мере 1 ведомое устройство должно быть активным в связи, чтобы связь была несущей.
Из того, что я могу сказать, патч не был интегрирован в основную ветку или, возможно, он имеет измененную форму, которую я не мог различить.
Попробуйте установить min_links на 1 или 2 и посмотрите, что произойдет. Если это не сработает, вы можете переключиться с miimon на мониторинг arp (установка arp_interval, apr_ip_target и т. Д.)
P.S. Если вы в конечном итоге используете LACP, я бы изменил lacp_rate со значения по умолчанию (медленные LACPDU каждые 30 секунд, т.е. время обнаружения сбоя составляет 30 секунд) на быстрое или 1 (запросить у партнера передачу LACPDU каждые 1 секунду).
Изменить: изучение кода заставило меня усомниться в своем ответе. Функция bond_3ad_handle_link_change () должна отключать разработчика при изменении статуса ссылки. Может быть, вы не подождали 30+ секунд, пока машина состояний LACP заработает? Тем не менее я оставлю ответ, потому что я потратил на него так много времени. :)