首页/云/云平台与虚拟化速查/DRS 亲和与反亲和规则
虚拟化操作94 条

DRS 亲和与反亲和规则

DRS 规则约束虚机在主机间的分布:同组虚机保持在一起(亲和)或相互分离(反亲和),用于可用性隔离与授权约束;规则与 DRS 级别共同生效。

云平台与虚拟化速查云更新于 2026-10-13

DRS 规则是什么

DRS 负责集群内的负载均衡,按自动化级别自动或建议迁移虚机;亲和与反亲和规则用来人为约束放置位置。KeepTogether 让一组虚机尽量落在同一主机,常用于应用内通信密集或授权绑定的场景;KeepApart 让一组虚机分散到不同主机,常用于主备、副本以及要求主机级容灾的业务。规则会与容量和 HA 一起决定虚机是否开得了机。

基本信息

亲和规则KeepTogether:同组虚机尽量同主机
反亲和规则KeepApart:同组虚机分布到不同主机
生效条件受 DRS 自动化级别与集群状态约束
查看Get-DrsRule -Cluster <集群名>
相关规则类型虚机与虚机规则、虚机到主机规则

典型使用场景

  • 主备数据库分散到不同主机,避免单主机故障同时影响主备
  • 同一应用的多副本做主机级反亲和,降低主机故障的爆炸半径
  • 授权或性能要求高的应用绑定在同一主机(亲和)
  • 大内存虚机避免集中,防止某台主机内存被占满
  • 排查虚机开机被阻塞时确认是否与规则冲突
  • 集群扩容或缩容后复核规则是否仍然合理

创建与查看规则

创建与查看规则
New-DrsRule -Name 'web-keep-together' -Cluster 'ProdCluster' -KeepTogether $true -VM 'web1','web2'
New-DrsRule -Name 'db-separate' -Cluster 'ProdCluster' -KeepTogether $false -VM 'db1','db2'
Get-DrsRule -Cluster 'ProdCluster'                        # 查看现有规则
Get-Cluster 'ProdCluster' | Select DrsEnabled,DrsAutomationLevel  # 确认自动化级别
Get-DrsRecommendation -Cluster 'ProdCluster'              # 查看 DRS 当前建议

规则读法与副作用

规则类型作用常见副作用
虚机亲和一组虚机尽量同主机同主机容量不足时开机与迁移都受阻
虚机反亲和一组虚机分布到不同主机主机数不足时虚机无法开机,提示不直观
虚机到主机规则约束虚机可运行的主机范围主机维护时虚机无处可迁
自动化级别决定 DRS 是自动执行还是仅给建议全自动下规则冲突会自动触发反复迁移
与接入控制叠加预留容量与规则共同约束放置冗余不足时开机被阻塞
规则与主机容量冲突时虚机可能无法开机或迁移受阻:大型集群要定期复核规则,尤其是反亲和规则条数与主机数量的比例。
DRS 建议与实际执行是两件事:非全自动级别下只给出建议,需要人工确认;排查「虚机没有自动均衡」时先确认自动化级别与规则约束。

易错点

  • 反亲和规则下主机不足:虚机开机被阻塞且提示不直观
  • 规则数量过多相互叠加,DRS 无法找到同时满足所有约束的放置方案
  • 把 DRS 当作容量保障:它只做均衡,容量不足时仍需扩容
  • 集群缩容后不清理规则,遗留规则让新虚机无法开机

数据来源与参考

  • VMware 文档:DRS 规则
  • PowerCLI 文档:New-DrsRule
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌