Короткий ответ

Hyper-V Replica — асинхронная копия VM на другой хост/кластер, не Live Migration и не CSV. На стороне источника HV01 смотрите Get-VMReplication, на приёмнике — Get-VMReplicationServer и firewall слушателя HTTP 80 или HTTPS 443. В кластере нужен роль Hyper-V Replica Broker, иначе партнёр не найдёт, куда стучаться после смены владельца.

Не «чините» реплику удалением VM на приёмнике без понимания, что это единственная копия данных после сбоя площадки.

Симптомы и как отличить

Типичная картина:

  • в Hyper-V Manager Replication Health: Warning/Critical;
  • Get-VMReplication : State : Suspended / Error;
  • initial replication 0% днями;
  • на реплике нет C:\ClusterStorage\Volume1\Hyper-V Replica\ (путь ваш) или нет объекта Replica VM.

Отличия:

Что видноКуда
Нужно выбрать Replica vs cluster vs backupрезервирование
Падает Live Migration, replica ни при чёмLive Migration
Кластер без кворумаquorum
Хост сам больнойhealth

Возможные причины

  1. На приёмнике не включён Replication Server (Set-VMReplicationServer).
  2. Кластер без Broker или Broker Offline.
  3. Kerberos: нет SPN/доверия, часы разъехались; или выбран HTTPS без подходящего сертификата.
  4. Firewall (хост или межплощадочный) режет 80/443.
  5. Нет места на томе реплики, в том числе под HRL (Hyper-V Replica Log).
  6. Имя сервера в Enable-VMReplication не совпадает с Brokern (FQDN кластера).
  7. Сертификат: CN/SAN не равны FQDN, истёк, нет на всех узлах кластера.

Диагностика

Источник:

Get-VMReplication -VMName 'VM-APP01' | Format-List VMName, State, Mode, Health, PrimaryServer, ReplicaServer, ReplicationRelationshipType, AuthType, LastReplicationTime, AverageReplicationSize
Measure-VMReplication -VMName 'VM-APP01' -ErrorAction SilentlyContinue
Get-WinEvent -FilterHashtable @{ LogName = 'Microsoft-Windows-Hyper-V-VMMS-Admin'; StartTime = (Get-Date).AddHours(-24) } |
  Where-Object { $_.Message -match 'Replica|Replication|VM-APP01' } |
  Select-Object -First 25 TimeCreated, Id, Message

Приёмник (пример HV-DR01.contoso.example):

Get-VMReplicationServer | Format-List ReplicationEnabled, AllowedAuthenticationType, KerberosAuthenticationPort, CertificateAuthenticationPort, ReplicationAllowedFromAnyServer
Get-VMReplication -Replica | Where-Object VMName -match 'VM-APP01'

Кластер:

Get-ClusterGroup | Where-Object Name -match 'Broker|Replica'
Get-ClusterResource | Where-Object ResourceType -match 'Broker|Virtual Machine Replication'

Сеть до слушателя (порт как в Get-VMReplicationServer):

Test-NetConnection -ComputerName 'HV-DR01.contoso.example' -Port 443
Test-NetConnection -ComputerName 'HV-DR01.contoso.example' -Port 80

Firewall (не выключать, проверить правила):

Get-NetFirewallRule -DisplayGroup 'Hyper-V Replica HTTP' | Get-NetFirewallPortFilter
Get-NetFirewallRule | Where-Object DisplayName -match 'Replica' | Format-Table DisplayName, Enabled, Direction, Action

Сертификат (если HTTPS):

Get-ChildItem Cert:\LocalMachine\My | Format-Table Thumbprint, Subject, NotAfter

Время: w32tm /query /status на обоих концах. Kerberos не любит skew.

Решение

Сценарий A. Слушатель выключен

На приёмнике (одиночный хост):

Set-VMReplicationServer -ReplicationEnabled $true -AllowedAuthenticationType Kerberos

Для HTTPS — -AllowedAuthenticationType Certificate и -CertificateThumbprint по вашей схеме. Затем разрешите правило Replica HTTP или HTTPS в профиле Domain, не «firewall off».

Авторизация: либо явный список серверов, либо ReplicationAllowedFromAnyServer плюс группа авторизации. Слепой AnyServer в интернете — плохая идея; для внутренней DR-площадки всё равно ограничьте источники.

Сценарий B. Кластер: нет Broker

Создайте/включите роль Hyper-V Replica Broker в Failover Cluster Manager. Клиент реплики должен целиться в FQDN Broker, не в случайный узел, который завтра не владеет ролью.

Get-ClusterGroup | Format-Table Name, State, OwnerNode

Broker Offline при живом кворуме — чините ресурс Broker (IP, сеть кластера), не Replica на VM.

Сценарий C. Kerberos / сертификат

Kerberos: оба хоста в домене contoso.example, корректный DNS A/AAAA на Broker, часы. Constrained Delegation здесь не тот же набор SPN, что у Live Migration; не копируйте SPN миграции «на всякий».

HTTPS: сертификат с SAN = FQDN, к которому коннектятся, на каждом узле приёмника и в шаблоне Broker. Просроченный thumbprint в Set-VMReplicationServer даёт обрыв после месяца «всё работало».

Сценарий D. Реплика в Error, цепочка жива

Resume-VMReplication -VMName 'VM-APP01'

Если требуется resynchronization (журнал HRL разъехался):

Resume-VMReplication -VMName 'VM-APP01' -Resynchronize

Это тяжёлый IO. Делайте в окно, смотрите место на обоих томах.

Сценарий E. Начальная репликация не лезет в канал

Seed через внешний диск / Start-VMInitialReplication -InitialReplicationStartTime вне пика. Не рвите сессию, если Percent растёт. Обрыв WAN — донастройка, не Disable-VMReplication без плана: потеряете партнёрство.

Как проверить, что проблема устранена

Get-VMReplication -VMName 'VM-APP01' | Format-List Health, State, LastReplicationTime, ReplicaServer
Measure-VMReplication -VMName 'VM-APP01'

Health Normal, LastReplicationTime свежий в пределах вашего интервала (5/15 мин — как настроили). На приёмнике Replica VM Off (так и должно быть до failover). Test Failover в изолированной сети, если политика DR это требует — затем удалите тестовую копию штатно.

Test-NetConnection на порт аутентификации с источника на FQDN Broker/сервера — TcpTestSucceeded True.

Если не помогло

  • Health Warning из-за пропущенных циклов: канал/диск, не «ещё раз Enable».
  • После смены имени кластера старый ReplicaServer в объекте — перенастройте relationship.
  • CSV источник в redirected: сначала storage.
  • Путаете Replica с backup: Replica не замена 3-2-1, см. резервирование.

Не открывайте 80/443 Replica в интернет без TLS и фильтра источников.

Профилактика

  • Мониторинг ReplicationHealth и возраста LastReplicationTime.
  • Сертификаты с алертами NotAfter.
  • Broker как clustered role, не «узел HV01 навсегда».
  • Запас диска под HRL и initial.
  • Регулярный Test Failover по runbook.

FAQ

Replica заменяет Failover Cluster?

Нет. Кластер — HA внутри площадки (RTO минуты, общее хранилище). Replica — DR на другую площадку с лагом RPO. Часто нужны оба.

Порт 80 без HTTPS нормален?

Внутри изолированной сети с Kerberos Microsoft это поддерживает. Между площадками через недоверенную сеть — HTTPS.

Можно ли реплицировать VM с checkpoint?

Лучше слить снимки. Длинная цепочка плюс Replica усложняет IO и место.

Почему приёмник показывает VM Off?

Это штатно. Running на обеих площадках без split-brain защиты — путь к расхождению дисков.

Enable-VMReplication снова с нуля?

Снесёт relationship. Сначала Resume/Resynchronize. Disable — только когда осознанно пересоздаёте пару.

Нужен ли одинаковый CPU на DR?

Для старта реплики на другом поколении CPU может понадобиться compatibility / разные процессоры. Это не блокирует саму репликацию логов, но вскроется на failover.