Короткий ответ
Без quorum служба кластера не держит роли: CSV, VM, Broker — Offline. Лечение — вернуть большинство голосов (узлы + witness), а не «запустить VM руками на обоих серверах». Force quorum (Start-ClusterNode -FixQuorum / /fq) — аварийный рычаг, когда вы доказали, что другой раздел кластера мёртв и не пишет на те же LUN.
Симптомы и как отличить
Типичная картина:
- Failover Cluster Manager не подключается / «cluster not reachable»;
- Event ID 1177 (Cluster service shutting down because quorum was lost), 1135 (lost communication);
Get-Clusterс узла падает илиGet-ClusterNodeпоказывает Down;- Hyper-V GUI локально видит VM, кластер — нет.
Отличия:
| Что видно | Куда |
|---|---|
| Кворум есть, CSV мёртв | CSV |
| Кворум есть, не едет одна VM | перенос VM |
| Плановый DR на другую площадку | резервирование |
| Один хост больной, кластер жив | health |
Возможные причины
- Упала сеть heartbeat/cluster (часто та же, что CSV).
- Большинство узлов выключены (электропитание стойки).
- Witness недоступен (file share, disk, cloud) плюс нечёт голосов.
- Динамический кворум снял голоса и остался один узел без witness.
- После аварии забыли Force и оставили кластер в «странном» наборе.
- Рассинхрон времени, долгие паузы (редко как единственная причина).
Диагностика
На каждом узле, до которого есть консоль:
Get-Service clussvc | Format-List Status, StartType
Get-Cluster -ErrorAction SilentlyContinue
Get-ClusterNode -ErrorAction SilentlyContinue | Format-Table Name, State, Id
Get-ClusterQuorum -ErrorAction SilentlyContinue | Format-List QuorumResource, QuorumType
Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 1177,1135,1561,1558; StartTime = (Get-Date).AddHours(-12) } |
Format-Table TimeCreated, Id, Message -WrapСеть:
Get-ClusterNetwork -ErrorAction SilentlyContinue | Format-Table Name, State, Role
Get-NetAdapter | Format-Table Name, Status, LinkSpeed
Test-NetConnection -ComputerName 'HV02.contoso.example' -Port 3343Witness:
Get-ClusterResource -ErrorAction SilentlyContinue | Where-Object ResourceType -match 'Witness|File Share|Cloud'
# file share witness: с узла
Test-Path '\\fs01.contoso.example\clusterwitness'BMC: питание HV01/HV02/HV03. Запишите в заявку, кто Up. Пока два узла «вроде живы, но не видят друг друга» — это кандидаты на split, не на Force.
Решение
Сценарий A. Сеть моргнула, узлы живы
Почините L2/L3 cluster network, firewall UDP 3343 между узлами. Когда heartbeat вернулся, кворум часто поднимается сам. Не FixQuorum.
Сценарий B. Упал witness, узлы в большинстве
Верните file share / disk / cloud witness. Для cloud witness — время, DNS, доступ к endpoint, ключ хранилища не протух. Set-ClusterQuorum меняйте осознанно, не «на Node Majority» на двух узлах без понимания, что падение одного снова убьёт кластер.
Get-ClusterQuorum | Format-ListСценарий C. Один узел жив, остальные доказанно выключены
- BMC: остальные Power Off, не «сеть management лежит, а кластерный NIC жив».
- Отключите от СХД узлы, в которых не уверены (zoning/iSCSI logout), чтобы они не стартовали VM.
- Только затем, с документированным решением:
Start-ClusterNode -Name 'HV01' -FixQuorum
Get-ClusterNode | Format-Table Name, State
Get-ClusterQuorum- Когда остальные узлы реально включают: пусть присоединяются к этому авторитетному разделу, не поднимайте второй Force на
HV02.
Сценарий D. Split уже случился
Не merge «чей NTFS свежее». Остановите VM на одном разделе, разберите запись на LUN, планируйте restore гостей. Это инцидент целостности.
После успешного Force не поднимайте сразу все группы. Порядок: quorum → CSV Online → одна некритичная VM → сверка Get-VM на всех узлах (нет второго Running) → остальные роли. DNS/VIP приложений не «починятся сами», если вы переехали не туда.
Не оставляйте кластер навсегда в режиме, когда NodeWeight нули. Как только witness и узлы живы, верните штатный Get-ClusterQuorum. Двух-узел без witness снова упадёт на следующем ребуте одного сервера.
Сценарий E. Динамический кворум оставил 0
Изучите Get-ClusterNode Property NodeWeight после восстановления сети. Не крутите NodeWeight без модели голосов.
Как проверить, что проблема устранена
Get-ClusterNode | Format-Table Name, State
Get-ClusterQuorum | Format-List
Get-ClusterSharedVolume | Format-Table Name, State
Get-ClusterGroup | Format-Table Name, State, OwnerNodeВсе ожидаемые узлы Up, quorum type штатный, witness Online если он в модели. CSV Online. VM-APP01 Running на одном OwnerNode. Get-VM -ComputerName HV01,HV02 не показывает одну и ту же VM Running на двух хостах с одним Path.
Сверьте с BMC, что нет «тихого» третьего узла.
Если не помогло
- clussvc не стартует даже с fq: журнал Cluster, повреждён hive — не импортируйте чужой cluster db.
- Кворум есть, CSV нет: статья CSV.
- После Force забыли вернуть witness — двух-узел снова хрупкий.
- Cloud witness в закрытом контуре без доступа — смените тип quorum штатно, не Force каждую пятницу.
Профилактика
- Witness обязателен для чётного числа узлов.
- Отдельная сеть heartbeat.
- Мониторинг 1177/1135 и Get-ClusterQuorum.
- Запрет FixQuorum без runbook и двух человек.
- ИБП/две стойки, чтобы не гасить majority разом.
- Регулярный
Test-Clusterв окно, не во время аварии как первая мысль.
FAQ
Node majority на двух узлах?
При падении одного кворума нет. Добавьте witness (disk, file share, cloud).
ForceStartResource на VM без кворума?
Не обход. Сначала quorum. Иначе риск двух писателей.
Можно ли выключить динамический кворум?
Иногда в специфических топологиях. Не «чтобы Force не понадобился». Читайте модель Microsoft Dynamic Quorum прежде чем LowerQuorumPriority руками.
File share witness на одном из узлов кластера?
Нет. Witness должен пережить падение любого узла. Шара на HV01 бесполезна, когда мёртв HV01.
После FixQuorum VM сами не Online?
Поднимайте группы осознанно, сверив что второй раздел не держит те же VM. Start-ClusterGroup не массово «все».
Event 1135 без 1177?
Потеря связи с узлом при живом кворуме. Чините сеть этого узла, не Force.