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