这是情况。 我想使用双链路将我的Linux服务器连接到单个networking,以实现容错和负载平衡的原因。 服务器有2个或更多个1Gig的网卡,并且我打算将它们中的每一个连接到位于单个堆栈(即单个虚拟交换机)中的不同交换机。 所有交换机都是Juniper EX4200或EX4500。
我知道我可以使用任何的Linux绑定模式,我不知道什么是最好的。 以前我使用的是主动备份模式,因为有些服务器连接到非堆栈交换机,但现在我们有了一个新的一致的networking,我想使用绑定模式,除了容错之外,还提供负载均衡。
我认为最好的方式是使用802.3ad(LACP),因为这是在所有networking设备上使用的标准,但是当我在交换机侧configuration一组端口作为LACP信道时,连接断开,直到我还要正确configuration服务器端。 这使得我们的系统pipe理任务变得更加困难,因为在安装新的服务器之前,我们必须删除交换机上的LACPconfiguration(因为PXE引导和networking安装等操作在LACP端口上不起作用),安装后我们需要更换交换机设置,但只能在服务器configuration为使用LACP之后,否则连接将会死亡。
其他绑定模式,如平衡白板不需要在交换机侧的任何特殊configuration,而在纸上提供相同的优点。
是否有理由select802.3ad而不是balance-alb?
我对Juniper交换机并不熟悉,但是您不必在其上configurationLACP; 这是 LACP的重点。 如果情况并非如此,则交换机configuration有问题。
LACP只规定了dynamic聚合端口的协议。 它没有指定端口调度策略(在哪里发送和接收stream量)。 这个政策是分开设置的。 我不记得Linux中的过程,但是我知道Linux支持在两种不同的策略中指定,可能类似于balance-alb。
balance-alb具有特定的缺点。 主要是它半智能地select一个出站端口用于新的连接,并且在连接的整个过程中它们被卡住到一个端口(实际上由MAC完成,而不是端口,如果一个端口出现故障,MAC被分配到另一个端口,从而允许连接继续)。
但是,这并不是完全“聚集”端口,因为连接将不能使用多个端口。 所以如果你有2个1GbE端口,单个连接仍然限制在1GbE。 LACP通常会解决这个问题,尽pipe这取决于您的调度策略以及每端支持的活动端口数。
在balance-alb中,发送帧和接收帧都使用更改MAC地址技巧进行负载平衡。 这可能会导致应用程序级别的问题。 并非所有的应用程序都适合这种模式。
处理您的原始问题。 这是我以前做的事。
Chakri –
如果您在连接到LACP的端口上设置了LACP,则主机端唯一的“正确”设置就是使用LACP。 EX将根据以太网stream量的以太网源和目标MAC进行平衡,如果在您的帧上有IP数据包,则会考虑IPstream量的IP源/目的地/端口。 请考虑阅读瞻博networkingKB22943的哈希algorithm的详细信息。 如果您的交换机支持交叉堆叠LACP(4XXX EX是这种情况),如果您有堆叠,请使用LACP。 如果每个VLAN环路有更复杂的L2拓扑结构,那么也可以更容易地进行debugging。
LACP在工作的时候非常棒,它提供的性能几乎是单个NIC的两倍。 如果只有less数机器使用绑定的NIC,那就去做吧。
但是,其中一个缺点就是如果你的预算有限,所以使用低端交换机,他们往往缺乏足够的LACP组,并且没有MLAG或SMLTfunction。 至less从惠普和类似的大多数交换机似乎只提供尽可能多的绑定组,因为有一半的端口。 有些甚至更less。 尽pipe有52个端口,我们曾经使用过的2k超微型交换机只有8个LACP组。 我猜这个数字是相对任意的。 没有人认为你需要超过1/2的交换机端口数量。 这可能只是固件中的硬编码,可能会占用更多的内存。
但是,如果使用SR-IOV,绑定和虚拟机,这确实是一个巨大的限制。
如果您是想要在机架中容纳数百或数千台机器的供应商,您不一定要在高端交换机上花费数万美元,这对于提供冗余和性能非常重要,但却不必要的昂贵一个机架的单个机架。 我可以看到为什么像Facebook这样的公司想要创build自己的交换机。
所以在这种情况下,我会select一种不同的模式,也许是balance-alb。