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 建议与实际执行是两件事:非全自动级别下只给出建议,需要人工确认;排查「虚机没有自动均衡」时先确认自动化级别与规则约束。