dcsimg

了解Linux的NIC绑定

一旦了解了所有选择及其局限性,即可轻松将NIC与Linux绑定。

如果认真完成,网卡绑定是增加可用带宽的有效方法。如果没有支持802.3ad的交换机,则必须具有正确的硬件才能使其正常工作。在本文中,我们将说明绑定的工作原理,以便您可以根据情况部署正确的模式。

大多数管理员认为,如果链路断开,将多个网卡绑定在一起会立即使带宽增加一倍,并具有高可用性。不幸的是,事实并非如此。让我们从最常见的示例开始,在该示例中,您有一台服务器具有很高的网络负载,并且希望允许超过1Gb / s的速度。

与802.3Ad结合

您将两个接口连接到交换机,启用绑定,然后发现一半的数据包丢失。如果为802.3ad链路聚合配置了Linux,则还必须告知交换机。在思科世界中,这称为EtherChannel。一旦交换机知道这两个端口实际上应该使用802.3ad,它将对发往您所连接服务器的流量进行负载平衡。

如果要连接来自不同客户端的大量网络连接,则此方法非常有用。但是,如果大多数吞吐量来自单个服务器,那么您将无法获得比1Gb / s的端口速度更好的速度。交换机基于源进行负载均衡 苹果电脑 默认情况下为地址,因此,如果仅发生一个连接,则始终沿同一链接发送。许多交换机支持更改负载平衡算法,因此,如果您属于单个服务器到服务器类别,请确保允许它轮流以太网帧。

另外,您根本不需要烧掉昂贵的交换机端口。两台服务器都可以通过交叉电缆连接到绑定的接口。在此配置中,您想在两侧都使用balance-rr模式,我们将在稍后进行解释。

通用键合

您可以在Linux中设置多种模式,最常见的“通用”模式是bonding-alb。此模式在大多数情况下均有效,无需配置开关或其他任何技巧。但是,它确实要求您的网络接口支持动态更改MAC地址。此模式“通常”运行良好,因为它不断交换MAC地址以欺骗另一端(无论是交换机还是另一台连接的主机),从而通过两条链路发送流量。在启用端口安全性的思科网络上,这可能会造成严重破坏,但总的来说,这是使它正常工作的快速而肮脏的方法。

通道绑定模式

通道绑定模式可以分为三类:通用,需要交换机支持的模式和仅故障转移。

仅故障转移模式是 主动备份: 一个端口处于活动状态,直到链路发生故障,然后另一个端口接管MAC并变为活动状态。

需要开关支持的模式是:

  • balance-rr: 帧以循环方式传输而不散列,以实现真正的负载平衡。
  • 802.3ad: 此模式是链路聚合的官方标准,并且包括许多有关如何平衡流量的可配置选项。
  • 平衡异或: 流量根据另一端的接收者进行散列和平衡。此模式也可作为802.3ad的一部分使用。

请注意,需要交换机支持的模式也可以通过两台服务器之间的交叉电缆来背对背运行。例如,当使用DRBD复制两个分区时,此功能特别有用。

通用模式包括:

  • 广播: 此模式实际上不是链路聚合-只是从两个接口广播所有流量,当将数据发送到分区的广播域以实现高可用性时,这很有用(请参阅下文)。如果在单个网络上使用广播模式,则建议使用交换机支持。
  • 平衡:传出流量是负载均衡的,但是传入仅使用单个接口。发送时,驱动程序将更改NIC上的MAC地址,但传入的数据始终保持不变。
  • 余额-白平衡: 发送和接收帧都使用更改MAC地址技巧进行负载均衡。

高可用性

您多久看到一次网络灾难性地死亡?太糟糕了,链接消失了吗?可能是:永远不会。更多时候,您会看到丢包和非常奇怪的行为。 NIC绑定的故障转移部分对于许多管理员来说非常吸引人,但是它很少起作用。当两个端口都连接到的交换机重新启动以进行固件升级时,您处于关闭状态。

简单的解决方法是将每个端口连接到两个不同的交换机,对吗?如果您使用不需要交换机支持的绑定模式,则可以正常工作。但是,如果使用的模式需要开关支持,则在大多数设备上是不可能的。支持堆叠并从一个点进行管理的交换机通常跨多个交换机支持EtherChannel。理想情况下,您应该将一个端口连接到每个端口,并且永远不要同时重新启动整个交换机堆栈。

决定

一旦了解了每种模式的局限性,绑定就很简单。如果您在交换机支持802.3ad的环境中工作并且没有特殊需要,请使用该模式。相反,如果您没有交换机支持,只是想增加吞吐量并启用故障转移,请使用balance-alb。最后,如果只需要两台服务器之间的数据复制链接,则可以使用balance-rr。

本文最初于2009年12月2日发布
通过网络更新新闻获取最新消息