Hướng dẫn cấu hình vSphere Proactive HA: Tự động di chuyển VM trước khi phần cứng bị lỗi

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Hồi mới nhận quản lý cluster VMware với 8 host ESXi tại công ty, mình theo dõi cảnh báo iDRAC/iLO hoàn toàn thủ công — nhận email từ hệ thống monitoring của vendor, SSH vào kiểm tra, rồi tự tay vMotion VM sang host khác nếu thấy có vấn đề. Quy trình đó ổn cho đến một đêm thứ 6. Một host bị lỗi PSU redundancy, không ai nhận email kịp. Standard HA kick in sau khi host đã down hoàn toàn — VM chết rồi mới restart trên host khác, downtime thực tế khoảng 3–4 phút cho toàn bộ workload trên host đó.

Sau sự cố đó mình mới tìm hiểu nghiêm túc về Proactive HA — tính năng cho phép vCenter tự động di chuyển VM trước khi host thực sự bị lỗi, dựa trên tín hiệu cảnh báo sức khỏe phần cứng từ chính hệ thống giám sát của vendor.

Vấn đề với HA truyền thống và cách phòng ngừa thủ công

Không phải là thiếu monitoring — iDRAC của Dell hay iLO của HPE đều cảnh báo rất chi tiết: lỗi memory module, PSU degraded, nhiệt độ cao, NIC error… Vấn đề nằm ở khoảng trống giữa cảnh báo và hành động.

  • Cảnh báo đến email → ai đó phải đọc → đánh giá mức độ nghiêm trọng → quyết định vMotion hay không → thực hiện
  • Ngoài giờ hành chính: cảnh báo gửi lúc 2am, team đọc được lúc 8am sáng hôm sau
  • Phần cứng đang degraded (1/2 PSU bị lỗi) vẫn chạy được nhưng rủi ro rất cao

Standard vSphere HA chỉ phản ứng sau khi host đã mất heartbeat — timeout khoảng 12 giây sau khi down hoàn toàn. Lúc đó VM đã bị kill rồi mới được restart trên host khác. Với database hoặc stateful application không có cơ chế reconnect tốt, vài phút downtime đó đủ để gây sự cố dây chuyền.

Tại sao Proactive HA giải quyết được bài toán này

Proactive HA là extension của vSphere HA, nhận tín hiệu trực tiếp từ Hardware Health Provider của vendor — plugin cài trên vCenter, kết nối với iDRAC/iLO của từng host. Khi provider phát hiện vấn đề, nó đánh giá mức độ và gửi signal cho vCenter trước khi host fail hoàn toàn.

Nhìn vào một trigger thật, flow diễn ra như sau:

  1. iDRAC/iLO phát hiện lỗi phần cứng, gửi cảnh báo cho Hardware Health Provider
  2. Provider phân loại mức độ: Moderate (giảm tải) hoặc Severe (evacuate ngay)
  3. vCenter nhận signal → trigger DRS migrate VM sang host healthy
  4. Host bị cách ly ở Quarantine Mode hoặc Maintenance Mode tùy config
  5. VM được migrate trong trạng thái running — không có downtime

Điểm mấu chốt: VM được vMotion khi host vẫn còn sống và ổn định, không phải restart sau khi host đã chết.

Điều kiện cần có trước khi cấu hình

Proactive HA không đòi hỏi gì đặc biệt ngoài những thứ cluster production bình thường đã có:

  • vCenter Server 6.5 trở lên (Proactive HA có từ phiên bản này)
  • vSphere HA đã bật trên cluster
  • DRS ở chế độ Fully Automated hoặc Partially Automated
  • Hardware Health Provider tương ứng với hardware đã được cài và đăng ký
  • Cluster còn đủ capacity để vMotion (không chạy tight resource)

Mỗi vendor có một plugin riêng:

  • Dell: OpenManage Integration for VMware vCenter (OMIVV)
  • HPE: HPE OneView for VMware vCenter (OV4VC)
  • Lenovo: Lenovo XClarity Integrator for VMware vCenter

Các bước cấu hình Proactive HA

Bước 1: Cài đặt Hardware Health Provider

Dưới đây mình dùng Dell OMIVV làm ví dụ vì đang vận hành hạ tầng Dell:

  1. Download OMIVV appliance OVA từ Dell support site (tìm theo model server của bạn)
  2. Deploy OVA lên vCenter như deploy VM bình thường
  3. Truy cập giao diện web của OMIVV appliance để register với vCenter
  4. Thêm iDRAC credentials để OMIVV poll health data từ từng host ESXi

Sau khi đăng ký xong, kiểm tra provider đã được nhận diện bằng PowerCLI:

# Kết nối vCenter
Connect-VIServer -Server vcenter.lab.local -User [email protected]

# Xem danh sách Health Provider đã đăng ký trên cluster
$cluster = Get-Cluster -Name "Production-Cluster"
$cluster.ExtensionData.ConfigurationEx.ProactiveDrsConfig

# Kiểm tra host health status qua provider
Get-VMHost | Get-View | Select-Object Name, @{N='HealthStatus';E={$_.OverallStatus}}

Bước 2: Bật Proactive HA trên Cluster

Trong vSphere Client: chọn cluster → Configure → vSphere Availability → Edit → tab Proactive HA → bật Enable Proactive HA.

Hoặc dùng PowerCLI:

# Bật Proactive HA và cấu hình automation level
$cluster = Get-Cluster "Production-Cluster"
$spec = New-Object VMware.Vim.ClusterConfigSpecEx

$proactiveDrs = New-Object VMware.Vim.ClusterProactiveDrsConfigInfo
$proactiveDrs.Enabled = $true
$proactiveDrs.DrsAutomationLevel = "automatedLevel"  # hoặc "manualLevel"

$spec.ProactiveDrsConfig = $proactiveDrs
$cluster.ExtensionData.ReconfigureComputeResource_Task($spec, $true)

Write-Host "Proactive HA enabled on cluster: $($cluster.Name)"

Bước 3: Chọn Remediation Mode phù hợp

Moderate alert (phần cứng degraded nhưng chưa critical) cho bạn hai hướng xử lý:

  • Quarantine Mode: Host vẫn chạy VM hiện tại, chỉ không nhận VM mới từ DRS. Team có thời gian xử lý phần cứng mà không cần evacuate ngay.
  • Maintenance Mode: vMotion toàn bộ VM khỏi host, host vào maintenance. Dùng cho cảnh báo Severe.

Mình cấu hình: Moderate → Quarantine Mode, Severe → Maintenance Mode. Cách này cân bằng giữa an toàn và tránh vMotion không cần thiết.

Bước 4: Test trước khi để Automated

Đừng bật Automated ngay. Chạy Manual mode trước, quan sát vài ngày xem system phản ứng thế nào:

# Xem DRS recommendations sau khi có Proactive HA signal
Get-Cluster "Production-Cluster" | Get-DrsRecommendation | 
  Where-Object { $_.Reason -match "Proactive" } |
  Select-Object VMotionPriority, Reason, @{N='VM';E={$_.VirtualMachine.Name}}

# Monitor Proactive HA events trong vCenter
Get-VIEvent -MaxSamples 200 | 
  Where-Object { $_.FullFormattedMessage -match "Proactive" } |
  Select-Object CreatedTime, FullFormattedMessage |
  Format-Table -Wrap

Cách test nhanh nhất với server Dell: rút 1 trong 2 dây PSU redundant. Server vẫn chạy bình thường. iDRAC báo PSU redundancy lost ngay lập tức — OMIVV nhận alert, Proactive HA trigger recommendation. Quan sát DRS đề xuất gì, host có vào Quarantine Mode không, rồi cắm PSU lại.

Cấu hình tốt nhất từ kinh nghiệm vận hành thực tế

1. Exclude VM không nên migrate tự động

VM legacy không support live migration tốt, hoặc đang chạy backup job, nên được đưa vào exception list. Proactive HA sẽ bỏ qua những VM này khi trigger:

# Thêm VM vào exception list - Proactive HA không tự migrate VM này
$vm = Get-VM "legacy-app-01"
$spec = New-Object VMware.Vim.ClusterConfigSpecEx

$vmOverride = New-Object VMware.Vim.ClusterDasVmConfigSpec
$vmOverride.Operation = [VMware.Vim.ArrayUpdateOperation]::add
$vmOverride.Info = New-Object VMware.Vim.ClusterDasVmConfigInfo
$vmOverride.Info.Key = $vm.ExtensionData.MoRef
$vmOverride.Info.DasSettings = New-Object VMware.Vim.ClusterDasVmSettings
$vmOverride.Info.DasSettings.VmToolsMonitoringSettings = New-Object VMware.Vim.ClusterVmToolsMonitoringSettings

$spec.DasVmConfigSpec = @($vmOverride)
(Get-Cluster "Production-Cluster").ExtensionData.ReconfigureComputeResource_Task($spec, $true)
Write-Host "VM override applied for: $($vm.Name)"

2. Giữ admission control đủ rộng

Trên cluster 8 host, mình để admission control tolerate 2 host failure — tương đương 25% capacity reserved. Proactive HA chỉ có tác dụng khi DRS thực sự còn chỗ để migrate. Cluster full resource thì trigger xong cũng không làm gì được.

# Kiểm tra admission control hiện tại
$cluster = Get-Cluster "Production-Cluster"
$cluster.ExtensionData.ConfigurationEx.DasConfig.AdmissionControlPolicy |
  Select-Object FailoverLevel, @{N='Policy';E={$_.GetType().Name}}

3. Tạo alert riêng cho Proactive HA action

VM đã migrate an toàn không có nghĩa là xong việc — host vẫn cần được sửa phần cứng. Tạo Alarm trong vCenter để notify khi có Proactive HA event, đảm bảo team có tín hiệu xử lý kịp thời dù trigger xảy ra lúc nào.

Kết quả sau khi triển khai trên cluster 8 host

Từ khi bật Proactive HA, đã có 3 lần hardware alert thật trên cluster của mình:

  • 2 lần lỗi PSU redundancy (Moderate alert): OMIVV gửi signal → host vào Quarantine Mode → DRS không schedule VM mới lên host đó → team nhận notification, có nguyên một buổi sáng để xử lý phần cứng, không ảnh hưởng gì đến VM đang chạy
  • 1 lần lỗi memory module (Severe alert): Proactive HA trigger vMotion toàn bộ 12 VM trên host → xong trong khoảng 10 phút → host vào Maintenance Mode → user không hay biết gì

Chạy Dell hoặc HPE mà chưa cài OMIVV/OneView thì nên ưu tiên setup cái này trước bất kỳ monitoring tool bên thứ ba nào. Nó tích hợp thẳng vào vCenter, tự xử lý không cần người — đúng thứ mình cần lúc 2 giờ sáng.

Share: