Linux 的第 2 层 (VMAC) 网络冗余选项

Linux 的第 2 层 (VMAC) 网络冗余选项

借助 heartbeat 和 keepalived,我一直使用的冗余选项通过将虚拟 IP 地址移动到新机器(第 3 层解决方案)来实现。新机器会发送免费 arp 来告知网络上的机器其 MAC 地址是该 IP 的新 MAC。

目前是否有任何网络冗余选项使用在机器之间移动的虚拟 MAC 地址(第 2 层)以及虚拟 IP?这对于某些不理解 GARP 请求的操作系统很有用。我确实发现这个keepalivd线程(碰巧来自 Server Fault 用户)但它是 2005 年的。有人知道 Linux 中虚拟 mac 故障转移的当前状态吗?

答案1

VRRP(RFC2338对于 VRRPv2,RFC5798对于添加了 IPv6 支持的 VRRPv3)为每个实例的虚拟路由器使用虚拟 MAC 地址,但在切换时仍会发送免费 ARP。

虽然 keepalived VRRP 实现忽略了规范的这一部分并仅仅使用接口 MAC,但 VRRPd 能够使用虚拟 MAC。

但是,虚拟 MAC 的概念与 Linux 的网络接口概念不太兼容;VRRPd 进程在接管时必须将接口的 MAC 地址更改为虚拟 MAC,这会阻止在给定接口上运行多个 VRRP 虚拟路由器。

答案2

当然,HP 的各种“VirtualConnect”产品允许您使用预配置的 MAC 或 MAC 范围,然后根据需要将其映射到特定服务器。我已经广泛使用了它,它工作得很好,虽然我们在物理服务器到达现场之前使用它来预定义新服务器的以太网和 FC 环境,但它可以按照您描述的方式使用。

顺便说一下,这完全是与操作系统无关的,它是一个虚拟硬件的东西,除了通过某种形式的脚本之外,我不知道 Linux 特定的实现方法。

答案3

鲤鱼使用虚拟 MAC 地址(方式类似于虚拟专用网络备份组(但不受专利限制)为每个 IP 冗余组分配一个虚拟 MAC 地址。组中的主主机使用虚拟 MAC 地址进行响应。当发生故障转移时,MAC 地址不会改变。我使用过乌卡普在 Linux 上并且对此非常满意。

编辑:

这不会帮到你(大家投反对票吧!)。我链接到的 Linux CARP 实现 ucarp 实际上不使用虚拟 MAC 地址。原始 OpenBSD 实现使用虚拟 MAC 地址,但 Linux 实现不使用。在我的部署中,一切都按我想要的方式运行,所以我从未深入研究过它(直到今天早上)才发现它在第 2 层没有为 Kyle 的需求做任何有用的事情。

我看到一些关于Linux HA 列表关于ifconfig在故障转移时使用虚拟 MAC 地址分配接口。这听起来并不是一个很糟糕的选择,特别是如果您正在使用虚拟硬件并且有能力“花费”虚拟 NIC。

相关内容