VMware vSphere Knowledge Base

Phase 3 — HA & Fault Tolerance ⚠ Break Scenarios ✓ Fix Procedures
10
HA & FT Issues
5
Break Scenarios
5
Fix Procedures
Phase 3
Current Phase
21
HA Admission Control Blocking VM Power-On
"Insufficient resources to satisfy HA failover" prevents VM start — admission control reserves too much capacity
Impact: VMs cannot be powered on even though physical resources are available. New deployments and DR recovery are blocked. Business-critical workloads may fail to start after maintenance windows.
Symptoms
  • VM power-on fails with "Insufficient resources to satisfy vSphere HA failover level"
  • vCenter events show "Admission control denied"
  • Cluster shows yellow HA status — resources over-committed
  • DRS cannot place VM on any host in the cluster
  • New VMs or cloned VMs fail to power on
Root Causes
  • Admission control policy reserves too much capacity (e.g., 50%)
  • Slot size inflated by a single VM with large CPU/memory reservation
  • Host in maintenance mode reduces available capacity below threshold
  • Overcommitted cluster with aggressive VM density
  • Dedicated failover host policy with host already failed

HA Admission Control reserves a portion of cluster resources to guarantee VM restarts after host failures. When the policy is set to "Cluster resource percentage", it may reserve 25–50% of CPU/memory. If the remaining capacity after reserving failover resources is insufficient for the new VM, the power-on is blocked — even if the physical hosts have idle resources. The slot-based policy can be especially restrictive when one VM has a large reservation, inflating the slot size for the entire cluster.

1

Check current admission control policy and slot sizes

# PowerCLI — view HA admission control settings:
Get-Cluster "ClusterName" | Select Name, HAAdmissionControlEnabled, HAFailoverLevel

# Check slot size information:
Get-Cluster "ClusterName" | Get-View | Select -ExpandProperty Summary |
  Select CurrentFailoverLevel, NumVmotions
2

Identify VMs with large reservations inflating slot size

# PowerCLI — find VMs with CPU/memory reservations:
Get-VM -Location "ClusterName" | Where-Object {
    $_.ExtensionData.ResourceConfig.CpuAllocation.Reservation -gt 0 -or
    $_.ExtensionData.ResourceConfig.MemoryAllocation.Reservation -gt 0
} | Select Name,
  @{N='CPUResMHz';E={$_.ExtensionData.ResourceConfig.CpuAllocation.Reservation}},
  @{N='MemResMB';E={$_.ExtensionData.ResourceConfig.MemoryAllocation.Reservation}} |
  Sort-Object MemResMB -Descending
3

Review cluster capacity vs. reservation

# PowerCLI — cluster capacity overview:
$cluster = Get-Cluster "ClusterName"
$hosts = $cluster | Get-VMHost
$hosts | Select Name, ConnectionState,
  @{N='CPUTotalMHz';E={$_.CpuTotalMHz}},
  @{N='CPUUsageMHz';E={$_.CpuUsageMHz}},
  @{N='MemTotalGB';E={[math]::Round($_.MemoryTotalGB,1)}},
  @{N='MemUsageGB';E={[math]::Round($_.MemoryUsageGB,1)}} |
  Format-Table -AutoSize
1

Adjust admission control policy to percentage-based

# vSphere Client:
# Cluster → Configure → vSphere Availability → Edit
# Admission Control Policy: "Cluster resource percentage"
# Set CPU/Memory to match your N+1 requirements (e.g., 25% for 4-host cluster)

# PowerCLI:
$spec = New-Object VMware.Vim.ClusterConfigSpecEx
$spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
$spec.DasConfig.AdmissionControlEnabled = $true
# Apply via Set-Cluster or Reconfigure-Cluster
2

Temporary: Disable admission control to power on critical VMs

# WARNING: Only use temporarily — re-enable immediately after
# vSphere Client:
# Cluster → Configure → vSphere Availability → Edit
# Uncheck "Enable Admission Control"

# Power on the VM, then RE-ENABLE admission control:
# Cluster → Configure → vSphere Availability → Edit
# Check "Enable Admission Control"
Warning: Disabling admission control removes HA protection guarantees. Only disable temporarily for emergency VM power-on and re-enable immediately. Consider switching from slot-based to percentage-based policy to avoid slot size inflation.
🛈 Best Practice: Use "Cluster resource percentage" policy instead of slot-based for mixed workloads. Set percentage based on N+1 or N+2 requirements. If using slot policy, define explicit slot size to prevent one large VM from inflating it. Review admission control after any host maintenance or decommission.
22
HA Master Election Failure
No HA master elected — cluster unprotected, FDM agents cannot communicate across management network
Impact: Without an HA master, the cluster is completely unprotected. If a host fails, no VM restarts will be initiated. This is a silent failure — vCenter may still report HA as "enabled" while no actual protection exists.
Symptoms
  • vSphere Client shows HA status: "Agent unreachable" on multiple hosts
  • Cluster-level alarm: "vSphere HA host status" — red/yellow
  • FDM log: Failed to elect master or No master found
  • HA-protected VM count shows 0 in cluster summary
  • Events: "Cannot complete the HA configuration"
Root Causes
  • Management network partition — hosts can't reach each other on port 8182
  • FDM agent crashed on all potential master hosts
  • Firewall rules blocking FDM communication (TCP/UDP 8182)
  • DNS resolution failure for ESXi hostnames
  • Corrupted HA configuration files on hosts

vSphere HA uses the FDM (Fault Domain Manager) agent on each host. One host is elected as the master, which monitors all slave hosts and initiates VM restarts on failure. The master election uses the management network (port 8182). If a network partition, firewall misconfiguration, or agent crash prevents communication between all hosts, no master can be elected. The cluster appears "HA enabled" in vCenter but has zero actual protection.

1

Check FDM status and logs on each host

# SSH to each ESXi host:
/etc/init.d/fdm status

# Check FDM election logs:
cat /var/log/fdm.log | grep -i "master\|elect\|error\|fail" | tail -40

# Check if FDM is listening:
esxcli network ip connection list | grep 8182
2

Verify management network connectivity between hosts

# From each ESXi host, ping other hosts on management network:
vmkping -I vmk0 <other-host-mgmt-ip>

# Test FDM port connectivity:
nc -z <other-host-mgmt-ip> 8182

# Check firewall rules:
esxcli network firewall ruleset list | grep fdm
3

Check DNS resolution for all cluster hosts

# Verify each host can resolve other hosts:
nslookup esxi-host01.domain.local
nslookup esxi-host02.domain.local

# Check /etc/hosts for local overrides:
cat /etc/hosts

# Verify DNS settings:
esxcli network ip dns server list
1

Restart management agents on all hosts

# SSH to each ESXi host:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
/etc/init.d/fdm restart

# Verify FDM is running:
/etc/init.d/fdm status
# Expected: "VMware Fault Domain Manager is running"
2

Reconfigure HA on the entire cluster

# vSphere Client:
# 1. Cluster → Configure → vSphere Availability → Edit
# 2. Uncheck "Turn ON vSphere HA" → OK
# 3. Wait for all hosts to show "HA Disabled"
# 4. Re-enable: Check "Turn ON vSphere HA" → OK

# PowerCLI alternative:
Set-Cluster "ClusterName" -HAEnabled:$false -Confirm:$false
Start-Sleep -Seconds 30
Set-Cluster "ClusterName" -HAEnabled:$true -Confirm:$false
🛈 Best Practice: Monitor HA master election status via vCenter alarms. Ensure management network redundancy with NIC teaming. Verify that ESXi host firewall allows FDM traffic on port 8182. After any network changes, verify HA reconfiguration completes on all hosts. Use /var/log/fdm.log as your primary HA troubleshooting log.
23
HA Heartbeat Datastore Issues
Missing or insufficient heartbeat datastores — unreliable host isolation detection leads to false positives
Impact: Without sufficient heartbeat datastores, HA cannot reliably distinguish between a host failure and a network isolation. This can lead to false isolation events, unnecessary VM restarts, or missed failovers.
Symptoms
  • Alarm: "No heartbeat datastores found for host"
  • HA configuration warning: "Only 1 heartbeat datastore" (minimum 2)
  • False host isolation events during network blips
  • VMs unexpectedly restarted due to incorrect isolation detection
  • FDM log: Insufficient heartbeat datastores
Root Causes
  • Only local datastores in cluster — no shared VMFS/NFS
  • Shared datastores not accessible from all hosts
  • HA heartbeat datastore selection set to "Use datastores only from the specified list" but list is empty
  • Storage connectivity issues reducing visible datastores
  • vSAN cluster with only one fault domain

vSphere HA uses two heartbeat mechanisms: network heartbeats (management network) and datastore heartbeats (shared storage). When the management network fails, HA relies on datastore heartbeats to determine if a host is actually down or just network-isolated. With fewer than 2 heartbeat datastores, the master cannot reliably make this distinction. A network blip may be misinterpreted as a host failure, triggering unnecessary VM restarts — or a real failure may go undetected.

1

Check current heartbeat datastore configuration

# vSphere Client:
# Cluster → Configure → vSphere Availability → Heartbeat Datastores
# Verify at least 2 datastores are listed

# PowerCLI — list heartbeat datastores:
$cluster = Get-Cluster "ClusterName"
$clusterView = $cluster | Get-View
$clusterView.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo |
  Select Datastore, @{N='Name';E={
    (Get-View $_.Datastore).Name
  }}
2

Verify shared datastore visibility across all hosts

# PowerCLI — find datastores shared by all hosts:
$hosts = Get-Cluster "ClusterName" | Get-VMHost
$allDS = $hosts | ForEach-Object { ($_ | Get-Datastore).Name }
$shared = $allDS | Group-Object | Where-Object { $_.Count -eq $hosts.Count }
$shared | Select Name, Count | Format-Table -AutoSize
1

Add shared datastores and configure heartbeat selection

# vSphere Client:
# Cluster → Configure → vSphere Availability → Heartbeat Datastores → Edit
# Select: "Use datastores from the specified list and complement automatically"
# Choose at least 2 shared VMFS/NFS datastores accessible from all hosts

# Ensure datastores are on different storage arrays for true redundancy
2

Verify heartbeat configuration after changes

# After adding datastores, reconfigure HA:
# Right-click each host → Reconfigure for vSphere HA

# Verify in FDM log on each host:
cat /var/log/fdm.log | grep -i "heartbeat" | tail -20
# Expected: "Using datastore [DatastoreName] for heartbeating"
🛈 Best Practice: Always configure at least 2 heartbeat datastores on different storage arrays. Use "complement automatically" to let HA add extra datastores beyond your manual selection. For vSAN, ensure multiple fault domains exist. Monitor heartbeat datastore alarms in vCenter and respond immediately to "insufficient heartbeat datastores" warnings.
24
FDM Agent Crash / Restart Loop
FDM (Fault Domain Manager) agent failing on host — HA shows "Agent Unreachable" or configuration errors
Impact: A host with a crashed FDM agent is not protected by HA. If this host fails, VMs on it will not be restarted on other hosts. If the crashing host is the HA master, the entire cluster may lose protection.
Symptoms
  • Host HA status: "Agent Unreachable" or "Configuration Error"
  • Repeated events: "HA agent on host has an error"
  • FDM process consumes high CPU then crashes
  • /etc/init.d/fdm status returns "not running"
  • Zdump/core files in /var/core/ for fdm process
Root Causes
  • Corrupted FDM configuration in /etc/opt/vmware/fdm/
  • Ramdisk full — /var/run/ or /tmp/ out of space
  • ESXi patch incompatibility with FDM agent version
  • SSL certificate mismatch between host and vCenter
  • Management network IP conflict or VMkernel adapter issue

The FDM agent runs as a daemon on each ESXi host and is critical for HA operation. When the agent crashes due to corrupted configs, ramdisk pressure, or certificate issues, it may enter a restart loop — starting, failing, and restarting repeatedly. During this loop, the host is effectively unprotected. If vCenter cannot push a clean FDM configuration to the host, the loop persists until manual intervention.

1

Check FDM status and crash logs

# SSH to the affected ESXi host:
/etc/init.d/fdm status

# Check for recent FDM crash/error entries:
cat /var/log/fdm.log | grep -i "error\|crash\|fatal\|exception" | tail -30

# Check for core dumps:
ls -la /var/core/ | grep fdm

# Check ramdisk usage:
vdf -h
2

Verify FDM configuration integrity

# Check FDM config directory:
ls -la /etc/opt/vmware/fdm/

# Verify SSL certificates:
ls -la /etc/vmware/ssl/
openssl x509 -in /etc/vmware/ssl/rui.crt -noout -dates

# Check management VMkernel adapter:
esxcli network ip interface list | grep -A5 vmk0
1

Restart FDM agent and clear stale config

# Stop FDM:
/etc/init.d/fdm stop

# Clear stale FDM state (safe to remove — vCenter will repush):
rm -rf /etc/opt/vmware/fdm/*

# Restart management agents:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart

# Start FDM:
/etc/init.d/fdm start
/etc/init.d/fdm status
2

Reconfigure HA on the cluster from vCenter

# vSphere Client:
# Right-click affected host → Reconfigure for vSphere HA

# If that fails, disable/re-enable HA on the cluster:
# Cluster → Configure → vSphere Availability → Edit
# Uncheck HA → OK → Wait → Re-check HA → OK

# Verify agent status after reconfiguration:
# Host → Monitor → vSphere HA → Heartbeat
# Status should show "Connected" and "Agent running"
🛈 Best Practice: Monitor FDM agent status via vCenter alarms for "HA agent error." After ESXi patches, verify FDM restarts cleanly. Keep ramdisk usage below 80% — use vdf -h regularly. If FDM crashes persist after config clearing and reconfiguration, collect a support bundle and open a VMware SR.
25
VM Component Protection (VMCP) Configuration
Protect VMs from APD/PDL storage failures — configure cluster-level VMCP response policies
Objective: Configure VM Component Protection to automatically respond to APD (All Paths Down) and PDL (Permanent Device Loss) storage events, preventing prolonged VM unavailability during storage failures.
APD (All Paths Down)
  • What: All storage paths to a datastore are lost (potentially transient)
  • Conservative: Wait for timeout, then power off and restart VMs
  • Aggressive: Immediately power off and restart VMs
  • Default timeout: 140 seconds before APD is declared
  • VM recovery delay: Additional 180 seconds (configurable)
PDL (Permanent Device Loss)
  • What: Storage array confirms the device is permanently unavailable
  • Response: Power off and restart VMs on hosts with access
  • Detection: SCSI sense codes from the storage array
  • No delay: PDL is definitive — immediate action recommended
  • Requires: Storage array must return proper SCSI sense codes
1

Enable VMCP on the cluster

# vSphere Client:
# Cluster → Configure → vSphere Availability → Edit
# Under "Failure conditions and VM response":
#   → Datastore with PDL: "Power off and restart VMs"
#   → Datastore with APD:
#       Response: "Power off and restart VMs (conservative)"
#       Delay: 180 seconds (default)
#       VM Storage Protection: "Disabled" / "Enabled"

# PowerCLI — check current VMCP settings:
Get-Cluster "ClusterName" | Get-View |
  Select -ExpandProperty ConfigurationEx |
  Select -ExpandProperty DasConfig |
  Select -ExpandProperty DefaultVmSettings |
  Select -ExpandProperty VmComponentProtectionSettings
2

Configure advanced APD/PDL settings

# Advanced HA settings for VMCP tuning:
# Cluster → Configure → vSphere Availability → Advanced Options

# Key settings:
# das.config.fdm.reportFailed.APDTimeout = 140
#   (seconds before APD is reported — default 140)
# vpxd.das.config.fdm.storageVMotion.APDTimeout = 180
#   (seconds to wait before taking action on APD VMs)

# Verify on ESXi host:
esxcli storage core device list | grep -A3 "Status\|APD"
3

Test VMCP response with non-production VMs

# Test APD scenario (simulate by blocking storage paths):
# 1. Identify test datastore and test VM
# 2. Block iSCSI/FC paths at switch level (controlled test)
# 3. Monitor: Cluster → Monitor → vSphere HA → VM Protection
# 4. Verify VM is restarted on a host with storage access
# 5. Restore paths and verify datastore reconnects

# Check VMCP events:
# vCenter → Monitor → Events → filter "VMCP\|APD\|PDL"
Warning: APD "aggressive" mode can cause premature VM restarts during transient storage issues (e.g., storage firmware upgrade). Use "conservative" mode unless your environment requires minimal storage RTO. Always test VMCP behavior in a maintenance window before relying on it in production.
🛈 Best Practice: Enable VMCP with "conservative" APD response for most environments. Enable PDL response as "Power off and restart VMs" — PDL is definitive and shouldn't be ignored. Ensure your storage array supports proper SCSI sense codes for PDL detection. Document your VMCP settings in your runbook.
26
vSphere Fault Tolerance Setup & Troubleshooting
FT provides zero-downtime protection via shadow VM — requirements, limits, and common issues
Objective: Configure and troubleshoot vSphere Fault Tolerance for mission-critical VMs that require zero downtime and zero data loss during host failures.
FT Requirements
  • CPUs: FT-compatible processors (Intel/AMD with hardware virtualization)
  • Network: Dedicated FT logging VMkernel adapter (10 GbE recommended)
  • Storage: Shared storage (VMFS, NFS, or vSAN) — no local disks
  • VM restrictions: No snapshots, no Storage vMotion, no hot-add CPU/memory
  • HA: vSphere HA must be enabled on the cluster
FT Limits (vSphere 7/8)
  • Max vCPUs: Up to 8 vCPUs per FT-protected VM
  • Max memory: Up to 256 GB per FT VM
  • Max FT VMs per host: 8 (primary + secondary combined)
  • Disk format: Thick provisioned (eager zeroed) required
  • No USB/PCI passthrough on FT VMs
1

Configure FT logging network and enable FT

# 1. Create a dedicated FT logging VMkernel adapter:
#    Host → Configure → Networking → VMkernel adapters → Add
#    Enable "Fault Tolerance logging" service
#    Assign to a dedicated 10 GbE portgroup

# 2. Enable FT on the VM:
#    Right-click VM → Fault Tolerance → Turn On Fault Tolerance

# PowerCLI — check FT compatibility:
Get-VM "CriticalVM" | Get-View |
  Select @{N='FTCompatible';E={$_.Runtime.FaultToleranceState}}
2

Troubleshoot FT logging latency and bandwidth

# Check FT latency on the host:
esxtop
# Press 'n' for network view
# Look at FT logging VMkernel: check %DRPTX, %DRPRX, MbRX/MbTX

# Check FT status in vCenter:
# VM → Summary → Fault Tolerance section
# "Secondary VM" should show "Running" and "Up to date"

# If FT latency > 8ms, check:
# - Network bandwidth (10 GbE recommended)
# - NIC teaming / load balancing policy
# - Physical switch MTU (jumbo frames if needed)
3

Resolve common FT compatibility issues

# FT not available? Check these VM settings:
# 1. Remove all snapshots: VM → Snapshots → Manage Snapshots → Delete All
# 2. Convert disk to thick eager zeroed:
vmkfstools -i "thin.vmdk" -d eagerzeroedthick "thick.vmdk"

# 3. Verify CPU compatibility:
esxcli hardware cpu global get

# 4. Disable features incompatible with FT:
# - No USB controllers, no PCI passthrough
# - No Storage DRS, no VM encryption (pre-vSphere 7 U2)
# - Remove CD/DVD devices if connected to client device
🛈 Best Practice: Reserve FT for truly mission-critical VMs (DB servers, domain controllers) where even seconds of downtime are unacceptable. Use a dedicated 10 GbE network for FT logging — shared networks cause latency issues. Monitor FT latency via esxtop and set vCenter alarms for FT degradation. For most workloads, HA with VM Monitoring provides sufficient protection at lower resource cost.
27
HA Network Partition — Split Brain
Management network partition causes multiple HA masters — VMs may appear on both partitions simultaneously
Impact: Split brain is the most dangerous HA failure mode. VMs may run simultaneously on two different hosts, causing data corruption on shared storage. VMDK files may become locked by multiple hosts, leading to irreversible data loss.
Symptoms
  • Multiple HA master hosts detected in the cluster
  • VM appears "Powered On" on two different hosts simultaneously
  • VMDK lock errors: "Failed to lock the file"
  • FDM log: Network partition detected
  • Hosts show "Network Isolated" in HA status
Root Causes
  • Physical switch failure splitting management VLAN
  • Routing change breaking management network reachability
  • NIC teaming failure on management VMkernel adapter
  • Isolation address unreachable (misconfigured gateway/IP)
  • Firewall or ACL change blocking FDM traffic (port 8182)

When the management network is partitioned, hosts in each partition cannot communicate. Each partition elects its own HA master. If the isolation response is set to "Leave powered on", isolated hosts keep their VMs running while the master in the other partition also restarts those VMs — resulting in the same VM running on two hosts. Both instances write to the same VMDK, corrupting the virtual disk. This is the split brain scenario — the most destructive HA failure mode.

1

Detect network partition and multiple masters

# Check FDM logs for partition events:
cat /var/log/fdm.log | grep -i "partition\|split\|multiple master\|isolat" | tail -30

# Check which host is HA master:
# On each host:
cat /var/log/fdm.log | grep "I am the master" | tail -5

# If more than one host claims master → split brain active!
2

Check isolation address and network connectivity

# Verify isolation address configuration:
vim-cmd hostsvc/advopt/view das.isolationAddress0
vim-cmd hostsvc/advopt/view das.useDefaultIsolationAddress

# Test isolation address reachability:
vmkping -I vmk0 <isolation-address-ip>

# Check management network NIC status:
esxcli network nic list
esxcli network vswitch standard list
1

Restore network connectivity immediately

# Priority 1: Restore the physical network
# - Check switch ports, VLANs, uplinks for management network
# - Verify trunk ports are passing management VLAN
# - Check NIC teaming failover status on each host

# From affected host — verify connectivity:
vmkping -I vmk0 <vcenter-ip>
vmkping -I vmk0 <other-host-mgmt-ip>

# Restart networking if needed:
esxcli network restart
2

Resolve split-brain VMs and reconfigure HA

# If a VM is running on two hosts:
# 1. Identify which instance has the latest state (check VM console)
# 2. Power off the STALE instance via direct host connection
#    (DCUI or direct ESXi vSphere Client)
# 3. Verify VMDK lock is released:
vmkfstools -D /vmfs/volumes/datastore/vm/vm.vmdk

# After network is restored — reconfigure HA:
# Cluster → Right-click → Reconfigure for vSphere HA

# Verify single master:
cat /var/log/fdm.log | grep "I am the master" | tail -5
3

Configure isolation address and response to prevent recurrence

# Set proper isolation address (NOT the default gateway alone):
# Cluster → Configure → vSphere Availability → Advanced Options
# Add:
#   das.isolationAddress0 = 10.0.0.1  (gateway)
#   das.isolationAddress1 = 10.0.0.2  (secondary reliable IP)
#   das.useDefaultIsolationAddress = false

# Set isolation response to "Shut down and restart":
# Cluster → Configure → vSphere Availability → Edit
# Host Isolation Response: "Shut down and restart VMs"
Critical Warning: Never set isolation response to "Leave powered on" unless you have a specific reason and accept the split-brain risk. VMDK corruption from split brain is often unrecoverable. Always use "Shut down and restart VMs" or "Power off and restart VMs" to prevent dual-run scenarios.
🛈 Best Practice: Use redundant management network (NIC teaming with active/standby or LACP). Configure multiple isolation addresses. Set isolation response to "Shut down and restart VMs." Ensure heartbeat datastores are on separate storage paths from management network. Regularly test HA isolation response in non-production clusters.
28
Proactive HA with DRS Integration
Hardware health monitoring triggers automated VM evacuations before host failure — IPMI/iLO/iDRAC integration
Objective: Configure Proactive HA to detect degrading hardware conditions (fan failures, power supply issues, memory errors) and automatically evacuate VMs via DRS before the host fails completely.
How It Works
  • Hardware health providers (Dell iDRAC, HP iLO, vendor CIM) report component health
  • vCenter receives health status: Green → Yellow → Red
  • When a host transitions to Yellow (degraded), Proactive HA triggers
  • DRS migrates VMs off the degrading host to healthy hosts
  • Host enters quarantine or maintenance mode for repair
Supported Health Providers
  • Dell: OpenManage Integration for VMware vCenter (OMIVV)
  • HPE: Agentless Management Service (AMS) + iLO Amplifier
  • Lenovo: XClarity Integrator for VMware vCenter
  • Cisco: UCS Plugin for vCenter
  • Generic: CIM-based hardware providers on ESXi
1

Install health provider and enable Proactive HA

# 1. Install the vendor health provider plugin in vCenter:
#    Administration → Solutions → vCenter Server Extensions
#    Deploy Dell OMIVV / HPE Amplifier / Lenovo XClarity

# 2. Enable Proactive HA:
#    Cluster → Configure → Proactive HA → Edit
#    Check "Proactive HA Enabled"
#    Automation Level: "Automated" (recommended)
#    Remediation: "Quarantine mode" or "Maintenance mode"

# 3. Verify health provider registration:
#    Cluster → Configure → Proactive HA → Providers
#    Status should show "Registered" for your vendor
2

Configure failure conditions and host monitoring

# Proactive HA failure conditions:
# Cluster → Configure → Proactive HA → Failure Conditions
# Map hardware component types to responses:
#   - Fan failure → Quarantine mode (moderate)
#   - Power supply failure → Maintenance mode (severe)
#   - Memory error → Maintenance mode (severe)
#   - Storage controller → Maintenance mode (severe)

# Verify DRS is set to "Fully Automated" for evacuation:
Get-Cluster "ClusterName" | Select DrsEnabled, DrsAutomationLevel
# DrsAutomationLevel should be "FullyAutomated"
3

Test and validate Proactive HA response

# Simulate hardware degradation (vendor-specific):
# Dell: OMIVV → Test Hardware Alert
# HPE: iLO → simulate fan failure via RIBCL

# Monitor response:
# vCenter → Monitor → Tasks → look for DRS migration events
# Host → Monitor → Hardware Status → check component health

# Verify evacuation:
Get-VMHost "affected-host" | Get-VM | Select Name, PowerState, VMHost
# All VMs should have migrated to other hosts
🛈 Best Practice: Proactive HA requires DRS in "Fully Automated" mode to evacuate VMs without manual approval. Use "Quarantine mode" for moderate failures (allows existing VMs to stay but prevents new placement) and "Maintenance mode" for severe failures (forces full evacuation). Ensure vendor health provider is compatible with your ESXi and vCenter version. Test hardware health alerts regularly.
29
HA Isolation Response Policy Configuration
Configure what happens when a host loses all network connectivity — power off, shut down, or leave powered on
Objective: Configure the HA isolation response policy to ensure VMs are properly handled when a host is network-isolated, balancing between data protection and availability.
Available Policies
  • Power off and restart VMs: Hard power off, then restart on other hosts (fastest, but ungraceful)
  • Shut down and restart VMs: Guest OS shutdown via VMware Tools, then restart (recommended)
  • Leave powered on: Do nothing — VMs stay running on isolated host (split-brain risk!)
  • Disabled: VM-level override to exempt specific VMs from cluster policy
Isolation Detection
  • Default: Ping the default gateway (management network gateway)
  • Custom: das.isolationAddress0 through das.isolationAddress9
  • Logic: If all isolation addresses are unreachable AND no management network heartbeats → host is isolated
  • Datastore heartbeats: Still checked before declaring full isolation
1

Set isolation response policy and custom addresses

# vSphere Client:
# Cluster → Configure → vSphere Availability → Edit
# Host Isolation Response: "Shut down and restart VMs" (recommended)

# Configure custom isolation addresses:
# Cluster → Configure → vSphere Availability → Advanced Options → Add:
das.isolationAddress0 = 10.0.0.1     # Default gateway
das.isolationAddress1 = 10.0.0.2     # Secondary switch/router
das.isolationAddress2 = 10.0.0.254   # Out-of-band management IP
das.useDefaultIsolationAddress = false  # Use custom only
2

Configure per-VM isolation response overrides

# For VMs that should NOT be shut down during isolation:
# Cluster → Configure → vSphere Availability → VM Overrides → Add
# Select VM → Host Isolation Response: "Leave powered on" or "Disabled"

# Use overrides for:
# - VMs that handle their own clustering (e.g., Oracle RAC, WSFC)
# - Infrastructure VMs that must stay running (DNS, AD)

# PowerCLI — list current VM overrides:
$cluster = Get-Cluster "ClusterName"
(Get-View $cluster).ConfigurationEx.DasVmConfig |
  Select @{N='VM';E={(Get-View $_.Key).Name}},
    @{N='IsolationResponse';E={$_.DasSettings.IsolationResponse}} |
  Format-Table -AutoSize
3

Verify isolation address reachability from all hosts

# SSH to each ESXi host and verify:
vmkping -I vmk0 10.0.0.1     # Isolation address 0
vmkping -I vmk0 10.0.0.2     # Isolation address 1
vmkping -I vmk0 10.0.0.254   # Isolation address 2

# Verify settings applied:
vim-cmd hostsvc/advopt/view das.isolationAddress0
vim-cmd hostsvc/advopt/view das.isolationAddress1
vim-cmd hostsvc/advopt/view das.useDefaultIsolationAddress
Warning: "Leave powered on" should only be used for specific VM overrides, never as the cluster default. This setting creates split-brain risk where the same VM runs on two hosts. Always prefer "Shut down and restart VMs" which gracefully shuts down via VMware Tools and restarts on a healthy host.
🛈 Best Practice: Set cluster default to "Shut down and restart VMs" — this gives guest OS a chance to flush writes. Use at least 2 custom isolation addresses on different network paths. Ensure VMware Tools is installed and running on all VMs for graceful shutdown. Test isolation response in a maintenance window by disconnecting a host's management NIC. Override "Leave powered on" only for VMs with their own clustering mechanisms.
30
HA Restart Priority & VM Override
Control VM restart order after failure — priorities, overrides, and VM/application monitoring configuration
Objective: Configure HA restart priorities to ensure critical infrastructure VMs (domain controllers, database servers, DNS) start first after a host failure, with proper VM monitoring for ongoing health checks.
Priority Levels
  • Highest: Infrastructure VMs — AD/DNS, vCenter (restart first)
  • High: Critical business VMs — database servers, app servers
  • Medium: Standard workloads (default for all VMs)
  • Low: Development/test VMs, non-critical workloads
  • Disabled: VM will NOT be restarted by HA
VM Monitoring Options
  • VM Monitoring: Checks VMware Tools heartbeat — restarts VM if heartbeat stops
  • Application Monitoring: Uses SDK inside guest to monitor app health
  • Sensitivity: Low (120s), Medium (60s), High (30s) — heartbeat failure window
  • Max resets: Number of resets in a time window before giving up
  • Restart condition: VM monitoring checks for "blue screen" or guest crash
1

Set VM restart priorities via VM overrides

# vSphere Client:
# Cluster → Configure → vSphere Availability → VM Overrides → Add
# Select VM → VM Restart Priority:
#   AD/DNS server → "Highest"
#   Database server → "High"
#   App servers → "Medium" (default)
#   Dev/Test VMs → "Low"
#   Template VMs → "Disabled"

# PowerCLI — set restart priority:
$cluster = Get-Cluster "ClusterName"
$vm = Get-VM "DC01"
$spec = New-Object VMware.Vim.ClusterConfigSpecEx
$vmConfig = New-Object VMware.Vim.ClusterDasVmConfigSpec
$vmConfig.Operation = "add"
$vmConfig.Info = New-Object VMware.Vim.ClusterDasVmConfigInfo
$vmConfig.Info.Key = $vm.ExtensionData.MoRef
$vmConfig.Info.DasSettings = New-Object VMware.Vim.ClusterDasVmSettings
$vmConfig.Info.DasSettings.RestartPriority = "highest"
$spec.DasVmConfigSpec += $vmConfig
$cluster.ExtensionData.ReconfigureComputeResource($spec, $true)
2

Enable VM Monitoring for guest-level health checks

# vSphere Client:
# Cluster → Configure → vSphere Availability → Edit
# VM Monitoring → "VM Monitoring Only" or "VM and Application Monitoring"
# Monitoring sensitivity: "Medium" (60 second heartbeat window)

# VM Monitoring settings:
#   Failure interval: 30 seconds (time between heartbeat checks)
#   Minimum uptime: 120 seconds (grace period after power on)
#   Maximum per-VM resets: 3 (within the time window)
#   Maximum resets time window: 1 hour

# Verify VMware Tools heartbeat is working:
Get-VM "CriticalVM" | Select Name,
  @{N='ToolsStatus';E={$_.ExtensionData.Guest.ToolsStatus}},
  @{N='Heartbeat';E={$_.ExtensionData.GuestHeartbeatStatus}}
3

Configure orchestrated restart with VM dependencies

# For VMs with startup dependencies (e.g., DB must start before app):
# Cluster → Configure → VM/Host Rules → Add Rule

# Example orchestrated restart order:
#   1. "Highest" priority: DC01, DNS01 (start first)
#   2. "High" priority: SQL01 (waits for Highest VMs to be running)
#   3. "Medium" priority: AppServer01 (waits for High VMs)

# Use VM-VM dependency rules:
# Cluster → Configure → vSphere Availability → VM Overrides
# Set "Orchestrated Restart" dependencies:
#   AppServer01 depends on SQL01
#   SQL01 depends on DC01

# Verify restart order:
# vCenter → Monitor → vSphere HA → Configuration Issues
# Should show no warnings about restart order
🛈 Best Practice: Always set infrastructure VMs (AD, DNS, DHCP, vCenter) to "Highest" restart priority. Enable VM Monitoring with "Medium" sensitivity for production VMs — this catches guest OS crashes without false positives. Ensure VMware Tools is installed and up-to-date on all VMs for heartbeat monitoring. Use orchestrated restart for multi-tier applications where startup order matters. Review and update VM overrides quarterly as workloads change.