Hyper-V 反亲和性

Hyper-V Anti Affinity

我正在尝试使用群集 Hyper-V 设置设置反亲和性,但我正在努力让任何 VM 保持分离。好像是反亲和根本就没有兑现。

设置:

尝试 1: 我 运行 服务器 1 上的以下脚本:

$WEBAntiAffinity = New-Object System.Collections.Specialized.StringCollection

$WEBAntiAffinity.Add("WEB Servers")

(Get-ClusterGroup –Name WEB_TEST_1).AntiAffinityClassNames = $WEBAntiAffinity
(Get-ClusterGroup –Name WEB_TEST_2).AntiAffinityClassNames = $WEBAntiAffinity
(Get-ClusterGroup –Name WEB_TEST_3).AntiAffinityClassNames = $WEBAntiAffinity

Get-ClusterGroup |Select-Object -Property name,AntiAffinityClassNames

在我 运行 上述操作之前所有三个虚拟机都已关闭,并且都在服务器 1 上创建。

开机时,全部开机,一直在server1上。

尝试 2: 我 运行 在其他服务器(server2 和 server3)上使用上面的相同脚本。

我关闭了虚拟机并重新启动它们,它们再次全部保留在服务器 1 上。

尝试 3: 在所有服务器上安装 运行 脚本后,我一台一台地重新启动了服务器。在重新启动期间,虚拟机在节点之间正常移动,但是当所有重新启动时,我停止了所有虚拟机,将它们移动到服务器 1,然后再次启动它们。

我的假设是 2 会在开机前移动,但那并没有发生,它们都在服务器 1 上启动。

有人知道我做错了什么吗?我是否缺少一些先决条件?我在网上找不到大量示例。

这在 Microsoft 的文档中并未具体提及,但要使 anti-affinity 规则在 Hyper-V 中起作用,您还需要 System Center Virtual Machine Manager (SCVMM)。 SCVMM 读取 anti-affinity 规则(以及其他规则,例如相似性、优先级等)并执行迁移以应用这些规则。

这相当于vmware堆栈,其中ESXi是管理程序,VM配置包含规则,Director或vSphere实际应用规则。