如果这是一个显而易见的问题,我深表歉意,就冗余网络而言,我是个新手,我不确定要用 Google 搜索哪些关键字。我的应用场景是这样的:
为了实现网络冗余,最明显的办法是使用两个高速以太网交换机,并将每个 Linux 服务器连接到这两个交换机。这样,如果其中一个交换机发生故障,或者有人意外切断了以太网电缆,则可以通过另一根电缆/交换机继续通信,并且系统将保持完全正常运行。
我的问题是,有没有办法让冗余对应用软件 100% 透明?(透明的意思是,应用软件不应该知道或关心有多个以太网端口;理想情况下,它只能看到 eth0 而看不到 eth1……如果数据由于某种原因停止在两个物理以太网端口之一上流动,应用软件不应该检测故障或做任何特殊的事情来继续工作)。
对于我的目的来说,额外的带宽并不重要(千兆以太网的一个“通道”已经足够快了),但简单性和可靠性很重要。
答案1
你想要的 google juice 是“以太网绑定”。它是一件艺术品。
答案2
如果您想要简单和可靠,只需购买两台支持多机箱链路聚合的交换机(供应商对此有自己的名称,有时只是“堆叠”),并支持每台交换机足够的链路聚合以满足您的需求。设置链路控制协议在交换机端口上和服务器,因此您的所有应用程序看到的只是每台服务器上的单个“bond0”接口。
Linux 还支持一种称为“自适应负载平衡”的功能,它看起来仍然像一个“bond0”接口到应用层,但不使用 LACP,也不需要具有多机箱链路聚合支持的交换机(但交换机必须交叉连接且带宽良好)。此模式使用 ARP 技巧将传入流量定向到每个物理接口,而不是使用链路层绑定标准。它只需要没有特殊功能的哑交换机,并且对于我们在使用 IPv4 的生产中效果很好,不确定 IPv6 是否适用。