我在 Microsoft 故障转移群集中安装了 13 个 Hyper-V 节点。大约 50% 的客户端是 Linux,使用静态 MAC 地址效果最佳。我们的 Windows 客户端可以以任何方式工作,但为了简单起见,我们也将它们设置为静态 MAC 地址。
我们的程序是:配置虚拟机,在安装操作系统之前,打开虚拟机,关闭它,将网络适配器更改为静态,保留自动生成的 mac 地址。
问题是:
- 在 Node1 上创建客户机。其 MAC 地址位于 Node1 的 MAC 范围内。
- 将客户机移至 Node2。没问题。
- 在 Node1 上创建新的来宾。它获得 Node1 范围内的 MAC。我确信故障转移群集足够智能,可以检查与任何来宾没有冲突,但它只是从该节点的范围中随机选择一个未被该节点上的任何来宾使用的 MAC,而不是群集中其他地方的 MAC。
- 令我沮丧的是,这实际上造成了 MAC 冲突,它会偶然发现已经分配给迁移到不同节点的客户机的同一地址。
短期解决方案很简单,我们只需运行 PowerShell 命令来跨整个集群引用 MAC 地址,但长期解决方案是什么?我们应该检查池中所有 VM 的每个自动生成的 MAC 地址吗?如果我们为每个 Hyper-V 节点提供相同的池,它会检查整个集群吗,还是会有更多的冲突?SCVMM 会在这里帮助我们,还是会让事情变得更糟?
答案1
解决方案是将 SCVMM 与 hyper-V 群集一起使用。如果没有它,MS 并不打算在整个群集中使 mac 地址生成保持一致。