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

RHEL 6.4: Связывание каналов в режиме 1 без отказа

Я использую RHEL 6.4, kernel-2.6.32-358.el6.i686, на HP ML 350 G5 с двумя встроенными сетевыми картами Broadcom NetXtreme II BCM5708 1000Base-T. Моя цель - связать два интерфейса в один mode=1 пара аварийного переключения.

Моя проблема в том, что, несмотря на все свидетельства того, что связь установлена ​​и принята, выдергивание кабеля из основного сетевого адаптера приводит к прекращению связи.

ifcfg-etho и ifcfg-eth1

Во-первых, ifcfg-eth0:

DEVICE=eth0
HWADDR=00:22:64:F8:EF:60
TYPE=Ethernet
UUID=99ea681d-831b-42a7-81be-02f71d1f7aa0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

Далее ifcfg-eth1:

DEVICE=eth1
HWADDR=00:22:64:F8:EF:62
TYPE=Ethernet
UUID=92d46872-eb4a-4eef-bea5-825e914a5ad6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

ifcfg-bond0

Конфигурационный файл моей облигации:

DEVICE=bond0
IPADDR=192.168.11.222
GATEWAY=192.168.11.1
NETMASK=255.255.255.0
DNS1=192.168.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimmon=100"

/etc/modprobe.d/bonding.conf

у меня есть /etc/modprobe.d/bonding.conf файл, который заполняется таким образом:

alias bond0 bonding

вывод IP-адреса

Связь закончилась, и я могу получить доступ к публичным сервисам сервера через IP-адрес облигации:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.222/24 brd 192.168.11.255 scope global bond0
    inet6 fe80::222:64ff:fef8:ef60/64 scope link 
       valid_lft forever preferred_lft forever

Модуль ядра связывания

... загружено:

# cat /proc/modules | grep bond
bonding 111135 0 - Live 0xf9cdc000

/ система / класс / сеть

В /sys/class/net файловая система показывает хорошие вещи:

cat /sys/class/net/bonding_masters 
bond0
cat /sys/class/net/bond0/operstate 
up
cat /sys/class/net/bond0/slave_eth0/operstate 
up
cat /sys/class/net/bond0/slave_eth1/operstate 
up
cat /sys/class/net/bond0/type 
1

/ var / log / сообщения

В файле журнала нет ничего подозрительного. На самом деле все выглядит довольно счастливым.

Jun 15 15:47:28 rhsandbox2 kernel: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: Adding slave eth0.
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: using MSI
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: making interface eth0 the new active one.
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: first active interface up!
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: enslaving eth0 as an active interface with an up link.
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: Adding slave eth1.
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:05:00.0: eth1: using MSI
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: enslaving eth1 as a backup interface with an up link.
Jun 15 15:47:28 rhsandbox2 kernel: 8021q: adding VLAN 0 to HW filter on device bond0
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Up, 1000 Mbps full duplex
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:05:00.0: eth1: NIC Copper Link is Up, 1000 Mbps full duplex

Так в чем проблема?!

Выдергивание сетевого кабеля из eth0 приводит к потере связи. В чем может быть проблема и какие дальнейшие шаги мне следует предпринять для ее устранения?

РЕДАКТИРОВАТЬ:

Дальнейшее устранение неполадок:

Сеть представляет собой одну подсеть, одну VLAN, обеспечиваемую коммутатором ProCurve 1800-8G. я добавил primary=eth0 к ifcfg-bond0 и перезапустите сетевые службы, но это не повлияло на поведение. Я проверил /sys/class/net/bond0/bonding/primary как до, так и после добавления primary=eth1 и он имеет нулевое значение, что я не уверен, хорошо это или плохо.

Хвост /var/log/messages когда eth1 После снятия кабеля не видно ничего, кроме:

Jun 15 16:51:16 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Down
Jun 15 16:51:24 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Up, 1000 Mbps full duplex

я добавил use_carrier=0 к ifcfg-bond0с BONDING_OPTS раздел, позволяющий использовать MII / ETHTOOL ioctls. После перезапуска сетевой службы симптомы не изменились. Вытаскивание кабеля из eth0 приводит к прекращению всей сетевой связи. Еще раз, никаких ошибок в /var/log/messages за исключением уведомления о том, что ссылка на этот порт не работает.

ЧИТАТЬ. ВАШ. КОНФИГИ.

И когда это не удается ...

ЧИТАТЬ. ВСЕ. ВЫХОДЫ.

Вы видите, что в ifcfg-bond0? Нет ты понять что внутри ifcfg-bond0?
Что такое в мире скользких пингвинов miimmon=100?
О, извини, ты имел в виду miimon=100?

Да, я думаю, ты имел в виду miimon и нет miimmon.

Кроме того, большое преимущество заключается в том, что при перезапуске сетевой службы вы видите следующее:

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:  ./network-functions: line 446: /sys/class/net/bond0/bonding/miimmon: No such file or directory
./network-functions: line 446: /sys/class/net/bond0/bonding/miimmon: No such file or directory
                                                           [  OK  ]

Обращайте особое внимание на все, что вы печатаете, и когда вы делаете неизбежную опечатку, обращайте особое внимание на каждый вывод, который вы видите.

Вы плохой человек, и вам должно быть плохо.

Добавьте следующую опцию связывания downdelay = xxxx в milisec, которая выдает сбой eth после того, как он был обнаружен как сбойный, и установите для основного подчиненного устройства оставшееся. Если этого параметра нет в bonding_opt, связь обнаруживает сбой (потому что вы включаете miimom = yyyy), но никогда не дает сбой eth0. Вы можете убедиться в этом, посмотрев на файл / proc / net / bonding / bondX.

В любом случае, с RHEL 6.3 (почти той же версией, что и ваша) у нас есть несколько других проблем со связью, связанных с отказом, дублированным адресом Mac, видимым с переключателя.

удачи.

Попробуйте указать один из сетевых адаптеров в качестве основного ведомого устройства.

DEVICE=bond0
IPADDR=192.168.11.222
GATEWAY=192.168.11.1
NETMASK=255.255.255.0
DNS1=192.168.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimmon=100 primary=eth0"

Дополнительная документация от RH:

primary = Задает имя интерфейса, например eth0, первичного устройства. Первичное устройство является первым из используемых интерфейсов связывания, и от него не отказываются, если только оно не выйдет из строя. Этот параметр особенно полезен, когда одна сетевая карта в интерфейсе связывания работает быстрее и, следовательно, может обрабатывать большую нагрузку. Этот параметр действителен только в том случае, если интерфейс связывания находится в режиме активного резервного копирования. См. /Usr/share/doc/kernel-doc-/Documentation/networking/bonding.txt для получения дополнительной информации.