Linux 绑定:802.3ad (LACP) 与 balance-alb 模式

sag*_*agi 5 networking linux bonding lacp

这是情况。出于容错和负载平衡的原因,我想使用双链路将我的 Linux 服务器连接到单个网络。服务器有 2 个或更多 1-gig NIC,我计划将它们中的每一个连接到驻留在单个堆栈中的不同交换机(即单个虚拟交换机)。所有交换机都是瞻博网络 EX4200 或 EX4500。

我知道我可以使用任何 Linux 绑定模式,我想知道什么是最好的。过去我使用主动备份模式,因为有些服务器连接到非堆叠交换机,但现在我们有了一个新的、一致的网络,我想使用一种绑定模式,除了容错外,还提供负载平衡。

我认为最好使用的模式是 802.3ad (LACP),因为这是所有网络设备上使用的标准,但事实证明,当我将一组端口配置为交换机端的 LACP 通道时,连接中断,直到我还要正确配置服务器端。这使我们的系统管理任务变得更加困难,因为在安装新服务器之前,我们必须删除交换机上的 LACP 配置(因为 PXE 引导和网络安装之类的东西在 LACP 端口上不起作用),并且在安装之后我们需要更改交换机再次设置,但必须在服务器配置为使用 LACP 之后,否则连接将中断。

其他绑定模式(例如 balance-alb)不需要在交换机侧进行任何特殊配置,而在纸面上提供相同的优势。

有什么理由选择 802.3ad 而不是 balance-alb?

Chr*_*s S 4

我对 Juniper 交换机不太熟悉,但您不必在它们上配置 LACP;这就是LACP 的意义所在。如果不是这种情况,则说明您的交换机配置有问题。

LACP仅指定动态聚合端口的协议。它不指定端口调度策略(发送和接收流量的位置)。本政策另行制定。我不记得Linux中的过程,但我知道Linux支持指定几个不同的策略,可能类似于balance-alb。

Balance-alb 有特定的缺点。主要是它半智能地为新连接选择一个传出端口,并且在连接的整个生命周期中它们都固定在该端口上(实际上是由 MAC 完成的,而不是端口,如果一个端口出现故障,则 MAC 会被分配给另一个端口,从而允许连接继续)。

然而,这并不完全“聚合”端口,因为连接将无法利用多个端口。因此,如果您有 2 个 1GbE 端口,单个连接仍仅限于 1GbE。LACP 通常可以解决此问题,但这取决于您的调度策略和每端支持的活动端口数量。