编辑:

编辑:

我在 HP ML 350 G5 上运行 RHEL 6.4,kernel-2.6.32-358.el6.i686,配​​有两个板载 Broadcom NetXtreme II BCM5708 1000Base-T NIC。我的目标是将两个接口通过通道绑定到mode=1故障转移对中。

我的问题是,尽管有证据表明绑定已建立并被接受,但将电缆从主 NIC 中拔出会导致所有通信停止。

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 拔出网线会导致所有通信中断。问题可能出在哪里?我应该采取哪些进一步的步骤来排除故障?

编辑:

进一步故障排除:

该网络是一个由 ProCurve 1800-8G 交换机提供的单子网、单 VLAN。我已添加primary=eth0ifcfg-bond0重新启动网络服务,但这并未改变任何行为。我/sys/class/net/bond0/bonding/primary在添加前后都进行了检查primary=eth1,发现它有一个空值,我不确定这是好是坏。

尾缆拆除/var/log/messageseth1只显示:

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=0ifcfg-bond0BONDING_OPTS部分中添加了启用 MII/ETHTOOL ioctl 的功能。重新启动网络服务后,症状没有任何变化。拔掉电缆eth0会导致所有网络通信停止。再次,/var/log/messages除了通知该端口上的链接断开外,没有其他错误。

答案1

讀取您的設定。

当失败时...

讀取。所有。输出。

你看到里面有什么了吗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  ]

仔细注意您输入的所有内容,当您犯了不可避免的打字错误时,请仔细注意您看到的每个输出。

你是一个坏人,你应该感到难过。

答案2

尝试指定其中一个 NICS 作为主从属设备。

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。主设备是第一个要使用的绑定接口,除非它发生故障,否则不会被放弃。当绑定接口中的一个 NIC 速度更快,因此能够处理更大的负载时,此设置特别有用。此设置仅在绑定接口处于主动备份模式时有效。有关更多信息,请参阅 /usr/share/doc/kernel-doc-/Documentation/networking/bonding.txt。

答案3

添加以下绑定选项 downdelay=xxxx(单位为毫秒),该选项在检测到 eth 失败后使 eth 失败,并将主从属设置为剩余的 eth。如果此参数不在bonding_opt 中,则绑定会检测到失败(因为您包含了 miimom=yyyy),但它永远不会使 eth0 失败。您可以通过查看 /proc/net/bonding/bondX 文件来查看这种情况。

无论如何,使用 RHEL 6.3(几乎与您的版本相同)时,我们遇到了与故障恢复相关的其他几个绑定问题,从交换机看到重复的 mac 地址。

祝你好运。

相关内容