如果这是一个明显的问题,我深表歉意,就冗余网络而言,我是新手,我不确定谷歌的关键字是什么。我的应用场景是这样的:
为了获得网络冗余,显而易见的事情是拥有两个高速以太网交换机,并将每个 Linux 服务器连接到两个交换机。这样,如果其中一个交换机发生故障,或者有人意外切断了以太网电缆,则可以通过另一条电缆/交换机继续通信,并且系统将保持完整功能。
我的问题是,有没有办法让冗余对应用软件 100% 透明?(通过透明,我的意思是应用程序软件不必知道或关心有多个以太网端口;理想情况下,它只会看到一个 eth0 而不是 eth1……如果数据停止流过其中一个两个物理以太网端口,无论出于何种原因,应用软件都不必检测故障或执行任何特殊操作即可继续工作)。
额外的带宽对我的目的并不重要(千兆以太网的一个“通道”就足够快了),但简单性和可靠性才是。
你想要的谷歌果汁是“以太网绑定”。这是一件艺术品。
如果您想要简单性和可靠性,只需购买两台支持多机箱链路聚合的交换机(供应商对其有自己的名称,有时只是“堆叠”),并且每个交换机支持足够的链路聚合来满足您的需求。在交换机端口和服务器上设置LACP ,因此您的所有应用程序看到的是每个服务器上的单个“bond0”接口。
Linux 还支持一种叫做“自适应负载平衡”的东西,它看起来仍然像一个应用层的“bond0”接口,但不使用 LACP,也不需要支持多机箱链路聚合的交换机(但交换机必须是跨连接良好的带宽)。此模式使用 ARP 技巧将传入流量引导到每个物理接口,而不是使用链路层绑定标准。它只需要没有特殊功能的哑交换机,并且在我们使用 IPv4 的生产环境中运行良好,不确定 IPv6。