I'm wondering if anyone has an opinion on what the 'best' anti-affinity rule would be, between VM-to-Host & Keep-VMs-Separate. Here is my situation:
- 6 ESX servers in 1 cluster
- ~100 VMs
- HA, DRS, & SDRS are all active.
- All VMs are setup in pairs, for example: SQL1 & SQL2, WEB1 & WEB2.
Goal: Ensure that each VM in a pair are never running on the same ESX host as it's counterpart while allowing for a flexible fail-over scenario.
For the first 50 VMs in my environment, I set up two VM-to-Host rules to ensure that all SERVER-1s run on a group of ESX hosts, and all SERVER-2s run on a separate group of ESX hosts. It looks like this:
Virtual Machine Groups
Set A: SQL1, APP1, WEB1....
Set B: SQL2, APP2, WEB2....
Host Groups:
Group1: ESX1, ESX2, ESX3
Group2: ESX4, ESX5, ESX6
The Rules:
Must Run on Hosts in this group:
Set A to run on Group 1
Set B to run on Group 2
Now I'm at a point where I need to add the next group of 50 VMs to the rules, and I started to wonder if my above setup is the most efficient way (mainly with VM fail-over options in mind) to ensure that the VMs are never paired with their partner. Would setting up a Keep-VMs-Separate for each pair of servers be a better solution for failover purposes? I theorize that it would, as it would give a larger pool of ESX servers for VMs to failover to, rather than the just the 3 it's been locked to it's specific group. Is this logical?
As a follow up, would changing the rule qualifier to Should Run... allow for a more flexible fail-over scenario?
This is my first foray into Affinity rules, so I apologize in advance for any and all noob mistakes I may have made.