Home

VMware vSphere 故障排查实战系列:DRS 不均衡调度原理与诊断(12)

我最近在看一篇关于 DRS 的排查文章,里面有一个点我很认同:很多“DRS 不均衡”的现场,不是 DRS 坏了,而是我们把“看起来不均衡”和“值得迁移”混在了一起。

这篇我按自己的实战习惯整理成一版,重点放在三件事:

  1. DRS 到底按什么逻辑判定要不要迁移
  2. 什么配置最常导致“看起来不工作”
  3. 出问题后怎么快速定位,不靠拍脑袋

一、先统一认知:DRS 不是“均分 CPU 百分比”

DRS(Distributed Resource Scheduler)做的是集群级的资源调度,核心能力有三个:

  • 初始放置:虚拟机开机时选目标主机
  • 持续均衡:运行中根据负载变化给出或执行迁移
  • 维护联动:主机进维护模式时配合迁移虚拟机

它默认按周期评估(常见是约 5 分钟),不是每秒钟盯着图表自动迁移。

实际判断里,DRS 看的是收益与代价,而不是“谁 CPU 高谁就一定要动”。

二、为什么你觉得不均衡,但 DRS 不迁

典型场景是 A 主机 80%+,B 主机 20% 左右,但 DRS 没动。常见原因如下:

1)自动化级别不对

如果集群设成 ManualPartially Automated,DRS 可能只提建议,不自动执行迁移。

2)Migration Threshold 太保守

阈值偏保守(例如 1-2)时,小到中等不均衡可能被判定为“不值得迁”。

3)规则限制了可迁移空间

Affinity / Anti-Affinity 规则、VM/Host RuleVM Override 都可能让 DRS 无法选出满足约束的目标。

4)目标主机不满足条件

例如目标主机资源不足、处于维护模式、EVC/CPU 兼容条件不满足,DRS 会放弃这次迁移。

5)业务视角和 DRS 视角不一致

运维常盯的是主机利用率;DRS 还会考虑虚拟机活跃内存、迁移成本、短时波动是否会自愈。

所以有些“看起来难受”的分布,在 DRS 看来仍是可接受状态。

三、排查顺序

这个顺序的目标是:先排配置,再看限制,最后进日志。

步骤 1:先看集群 DRS 基础配置

检查项:

  • Automation Level 是否 Fully Automated
  • Migration Threshold 是否过保守
  • DRS 是否处于启用状态

步骤 2:看规则和单 VM 覆盖

检查项:

  • VM/Host Rules 是否限制了迁移路径
  • VM Overrides 是否把关键 VM 设成了 ManualDisabled

步骤 3:看 DRS Faults / Recommendations / History

重点看:

  • 当前为什么不给建议(或建议不可执行)
  • 历史上有没有频繁建议但失败
  • 是否存在“同一类失败反复出现”(资源不足、兼容性问题、规则冲突)

步骤 4:看 EVC 与跨代 CPU 兼容

如果集群有不同代际 CPU,又没正确配置 EVC,vMotion 成功率会受影响,DRS 自然会变保守。

步骤 5:必要时进 vCenter DRS 日志

定位困难场景建议看 vCenter 上的 DRS 决策日志目录(按版本路径可能略有差异):

/var/log/vmware/vpxd/drmdump/<cluster>/

这里能看到 DRS 每轮评估时的决策依据,适合处理“UI 看不清、规则又复杂”的集群。

四、实战里的几个误区

误区 1:把“有波动”当“有故障”

短时热点不一定要迁;频繁迁移本身也有代价(尤其是业务敏感时段)。

误区 2:阈值一把拉到激进

阈值过激进会增加 vMotion 频率,可能换来“表面更均衡,业务抖动更多”。

误区 3:规则越多越安全

规则越多,DRS 决策空间越小。规则应服务业务边界,而不是把调度器锁死。

五、可直接落地的调优建议

给一个我比较常用的保守起步方案:

  1. 生产集群优先 Fully Automated
  2. Migration Threshold 从默认中间档起步(先观察,不急着拉满)
  3. 关键数据库类 VM 用 VM Override 做定向约束
  4. 跨代 CPU 集群提前把 EVC 策略定好
  5. 定期复核规则,删掉历史遗留但已无业务意义的约束

六、一份排障清单

问题:DRS 看起来不均衡

1. 集群 DRS 是否启用?
2. Automation Level 是否 Fully Automated?
3. Migration Threshold 是否过保守?
4. VM Overrides 有没有禁用/半自动的虚拟机?
5. VM/Host Rules 是否造成冲突?
6. DRS Faults 有没有明确报错?
7. 目标主机资源是否满足迁移条件?
8. EVC/CPU 兼容性是否满足?
9. 历史建议是“无建议”还是“建议失败”?
10. 必要时看 drmdump 日志确认决策原因

结语

DRS 的核心不是“看到不均衡就迁”,而是“在约束条件下做收益更高的调度”。

只要把配置、规则、兼容性和日志这四层捋顺,绝大多数“DRS 不工作”的问题都能落地定位。


参考:微信原文《VMware vSphere 故障排查实战系列-DRS 不均衡?调度原理与诊断(12)》

VMware vSphere DRS vMotion 故障排查