Я пытаюсь настроить конфигурацию fail-back в bonding, но не могу обойти конфигурацию интерфейса. Мой интерфейс выглядит следующим образом:
auto bond0
iface bond0 inet static
address 192.168.1.39
netmask 255.255.255.0
up /sbin/ifenslave bond0 eth1 eth3
down /sbin/ifenslave -d bond0 eth1 eth3
Мой файл /etc/modprobe.d/bonding.conf выглядит так:
alias bond0 bonding
options bonding mode=3
Я тестирую его, запуская ping из другой системы. Мой статус облигаций следующий:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0
Когда я отключаю кабель eth1, срабатывает аварийное переключение, и eth3 передает данные (пинг все еще продолжается).
Если я снова подключаюсь к eth1 и удаляю eth3, пинг останавливается, а статус связывания не содержит никаких интерфейсов. Статус связывания:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Я пробовал все режимы в бондинге (от 0 до 6). Но ни одна из конфигураций не обеспечивает поддержку восстановления после сбоя. Где я ошибаюсь?
решение1
ИЗМЕНИТЬ 2019-01-10:Эти инструкции предназначены для Ubuntu 16.04 и старше. Я постараюсь обновиться инструкциями для 18.04.
В этом ответе мы используем active-backup
связывание с bond-primary
набором интерфейсов, который позволяет при отказе вернуться к основному, когда он доступен. Более подробную информацию можно найти:https://wiki.linuxfoundation.org/networking/bonding
Связывание в Ubuntu отличается от настройки в других дистрибутивах Linux, таких как RedHat. Я сделал несколько конфигураций связывания в Ubuntu и я изложу их ниже как можно лучше.
Судя по всему, у вас уже ifenslave
установлено, но если нет, установите ifenslave
:
sudo apt-get install ifenslave
Далее, взгляните /etc/modules
и убедитесь, что в нем есть следующие строки:
loop
lp
rtc
bonding
В /etc/network/interfaces
файле задайте интерфейсы loopback
, eth1
, и eth3
:
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth1
auto eth3
iface eth3 inet manual
bond-master bond0
Теперь настройте bond0
интерфейс на active-backup
отказоустойчивость в случае сбоя одного из подключений сетевой карты:
auto bond0
iface bond0 inet static
address 192.168.1.39
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bond-mode active-backup
bond-miimon 100
bond-slaves none
Сохраните изменения в /etc/network/interfaces
файле и перезапустите сетевую службу:
sudo /etc/init.d/networking restart
Теперь вы можете проверить настройки связывания. Убедитесь, что ваши bond0
, eth1
и eth3
верны:
sudo ethtool bond0
sudo ethtool eth1
sudo ethtool eth3
Проверьте, работает ли теперь отказоустойчивость, удалив eth1
из bond0
:
sudo ifenslave -d bond0 eth1
Проверьте, можете ли вы по-прежнему пинговать шлюз:
ping -c2 192.168.1.1
Добавить eth1
обратно в bond0
:
sudo ifenslave bond0 eth1
Надеюсь это поможет!