Назад | Перейти на главную страницу

Связать активную резервную копию Linux

Я пытаюсь установить связь на своем сервере 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 заработает? Тем не менее я оставлю ответ, потому что я потратил на него так много времени. :)