Кворумные модели (режимы работы кворума) отказоустойчивого кластера под управлением Windows 2008 (R2)

В отказоустойчивой кластеризации Windows Server 2008 (R2) изменилась модель кворума.

Основные задачи кворума:

  • Решить проблему расщепления кластера на несколько независимых кластеров, вследствие потери связи между узлами (эффект “Split Brain”);
  • Обеспечить единство взгляда (Cluster View) всех узлов кластера на кластерную конфигурацию.

В более старых системах (Windows 2000…2003) под “кворумом” понимался общий диск, где находились настройка кластера и некоторые реплицированные файлы, вследствие чего, кворум был слабым звеном для всего кластера. В случае сбоя диска кворума служба кластера прекращала работу, и высокая доступность терялась.

В кластеризации же Windows Server 2008 концепция кворума действительно означает консенсус. Кворум (или консенсус) теперь достигается путем наличия достаточного числа голосов для перевода кластера в рабочий режим. В зависимости от состава кластера, достаточное число голосов может быть достигнуто различными путями. В отказоустойчивой кластеризации Windows Server 2008 доступны четыре режима (модели) кворума:

  • Node Majority (Большинство узлов);
  • Node and Disk Majority (Большинство узлов и дисков);
  • Node and File Share Majority (Большинство узлов и общая папка);
  • No majority. Disk only (Только диск)

Кворум Node Majority обычно применяется на кластерах с несколькими узлами и не требует общего хранилища.

Node and Disk Majority – кворум состоит из узлов и общего диска. Опять же, для функционирования кластера требуется участие большинства голосов (voices). Голосом может быть, как сам узел, так и общий диск. Кроме того, теперь для диска кворума не нужна буква диска. Чтобы выбрать диск из доступного хранилища, выберите первый диск размером не более 500 МБ, на котором есть раздел NTFS.

Node and File Share Majority или “Общая папка-свидетель” (File Share Witness) –этот ресурс расположен в группе основных ресурсов кластера вместе с сетевым именем кластера и связанными ресурсами IP-адреса (Рис. 1).

 

Рис. 1

Принципиальное отличие Node and Disk Majority от Node and File Share Majority состоит в том, что в первом случае на диске хранится полная версия базы данных кластера (ветвь реестра .Cluster) (См. Рис. 2), в то время, как на File Share хранится лишь два файла, один бинарный файл (Witness) с текущим номером версии базы данных кластера и второй пустой (VerifyShareWriteAccess), по которому узлы определяют доступность ресурса и отсутствие блокировки от других узлов.

.

  Рис. 2. Реестр кластра файлы на кворумном диске

Из вышеописанного следует важное преимущество дисковой версии кворума по отношению к файловой паке. В случае аварийного разделения кластера (работающего с File Share Witness) на группы (эффект “Split Brain”), узлы, отделившиеся от кластера, смогут определить (используя File Share Witness), что их версия базы не соответствует текущей версии, но скопировать новую версию базы кластера не смогут, поскольку на File Share Witness ее попросту нет. Т.е. эта модель способна предотвратить “Split Brain”, но решить его не способна.

В кластере может быть настроен лишь один ресурс-свидетель, будь то диск или общая папка. Этот ресурс предоставляет дополнительный голос, если таковой понадобится кластеру для достижения кворума. Другими словами, если кластеру не хватает одного голоса для достижения консенсуса, то для достижения кворума подключается ресурс-свидетель. Если для достижения кворума кластеру не хватает более чем одного голоса, ресурс-свидетель не подключается, и кластер остается в неактивном состоянии, ожидая присоединения еще одного узла кластера. Для размещения File Share Witness можно использовать любой сервер поддерживающий протокол SMB. Это может быть, как Windows-сервер, так и другой сервер с другой ОС (Linux, Unix…). Для достижения высокой устойчивости кластера желательно, чтобы этот сервер располагался на третьем сайте или в Интернете.

При выборе модели кворума следует использовать следующие правила:

  • Если в кластере устанавливается нечетное число узлов, выберите режим большинства узлов (Node Majority).
  • Если кластер состоит из четного количества узлов, а общее хранилище подключено и доступно, выберите режим большинства узлов и дисков (Node and Disk Majority).
  • Если кластер состоит из четного количества узлов и кластер является гео-распределенным, а общее хранилище недоступно выберите режим большинства узлов и файлового ресурса выделенного в общее пользование (Node and File Share Majority (File Share Witness)).

Последний режим – No Majority: Disk Only (Отсутствие большинства и использование только диска) – эквивалентен модели общего кворума в старых кластерах. Он представляет собой слабое звено в системе кластеризации, и его использовать не следует.

Просмотр и изменение текущей конфигурации кворума возможно из:

  • Графической оболочки;
  • Командной строки, используя CLUSTER.EXE;
  • Командной строки, используя PowerShell;

Просмотр настроек кворума через PowerShell:

Get-Cluster | Get-ClusterQuorum

Для установки режима кворума Node and Disk Majority:

Get-Cluster | Set-ClusterQuorum -NodeAndDiskMajority "Quorum Disk"

Для установки режима кворума Node and File Share Majority:

Get-Cluster | Set-ClusterQuorum -NodeAndFileShareMajority "\\fileserver\fsw1"

Для установки режима кворума Node Majority:

Get-Cluster | Set-ClusterQuorum -NodeMajority

В кластерах Windows 2008 (R2) при установке HotFix 2494036 (http://support.microsoft.com/kb/2494036) существует возможность сделать часть узлов кластера не голосующими (не участвующими в голосовании по сходимости кластера), что может быть особенно полезно для географически распределенных кластеров (геокластеров).

Такой режим работы может быть установлен в командной строке ОС либо PowerShell.

Просмотр параметра NodeWeight через PowerShell:

(Get-ClusterNode “NodeName”).NodeWeight

Установка параметра NodeWeight через PowerShell:

  (Get-ClusterNode “NodeName”).NodeWeight = 0

Информация о кворуме хранится в ветви реестра Quorum (См. Рис. 3)

 

Рис. 3

Информация о кворумном ресурсе храниться (в данном случае) в ветви реестра {b770e4b8-4349-472e-a7bc-fed5071f8b53} (См. Рис. 4)

 

Рис. 4

Просмотр всех свойств кворума возможен через утилиту CLUSTER.EXE и PowerShell.

Просмотр настроек кворума через PowerShell:

Get - Cluster | Get - ClusterQuorum

Просмотр открытых (public) свойств ресурса кворума через PowerShell:

Get-Cluster | Get-ClusterResource “Quorum Disk” | fl *

Просмотр закрытых (private) свойств ресурса кворума через PowerShell:

Get-Cluster | Get-ClusterResource | Get-ClusterParameter

Примечание: Описание открытых и закрытых свойств дискового ресурса будет приведено в разделе с описанием дисковой подсистемы кластера.

За управление кворумом отвечает [QUORUM MANAGER] (QUORUM), это часть процесса ClusSvc.exe, отвечающего:

  • За определение факта, что “Cluster View”, полученное от [MEMBERSHIP MANAGER [MM] достигло кворума;
  • Отслеживание собственника кворумного ресурса (если кворумный ресурс сконфигурирован).

Примечание: “ ClusterView** ” это текущая конфигурация кластера, некий моментальный снимок узлов работающих в данный момент. Информация о нем получается от MM , отслеживающего с помощью специальных сигналов ( Heartbeat ) работоспособность узлов кластера.

При потере голоса (или кворумного ресурса, являющегося голосом) в графической оболочке появляется сообщение (Cм. Рис. 5).

 

Рис. 5

И в кластерный лог записывается информация:

WARN [RES] Physical Disk <Quorum Disk>: Terminate: Failed to offline volume \Device\Harddisk1\Partition1, Error 5

INFO [QUORUM] Node 1: quorum is not owned by anyone

Но кластер при этом сохраняет работоспособность, поскольку количество оставшихся голосов более половины (в данном примере использован двух узловой кластер с дисковым кворумом).

Если же выйдет из строя еще один узел (будет потерян еще один голос), то кластерный сервис на оставшемся узле остановиться и кластер перестанет функционировать. Хотя, реально, некоторое время сервис будет находится в состоянии STARTED и будет продолжать попытки найти остальные узлы кластера.

Обратите внимание, что кластерная служба (точнее ее компонент [HOST MANAGER] (HM)) производит попытки поиска неработающих узлов через все сетевые интерфейсы подключенные к кластерным узлам и выделенные для межузловых коммуникаций (Более подробно это будет рассмотрено в модуле посвященном сетям).

DBG [HM] Trying to connect to W2K8R2-N2 at 172.16.1.2:~3343~

DBG [HM] Trying to connect to W2K8R2-N2 at 20.0.0.32:~3343~

DBG [HM] Trying to connect to W2K8R2-N2 at 192.168.0.32:~3343~

Если эти попытки будут неуспешны, то кластерная служба переходит в режим STOPPED (См. Рис. 6).

 

Рис. 6

Для восстановления работоспособности кластера даже без наличия кворума необходимо рестартовать службу ClusSvc с ключом /FQ (См. Рис. 7), (что обозначает “Force Quorum”, не путать с ключом /FQ кластера под управлением Windows 2000, который обозначал “Fix Quorum”).

 

Рис. 7

Кластерная служба перейдет в рабочий режим и кластер может быть использован, однако в данной конфигурации он не является отказоустойчивым, поскольку состоит из одного узла.

Обратите внимание, что [Node Manager] (Node) не прекращает попытки подсоединиться к другим узлам кластера, и как только это станет возможным эти узлы будут автоматически подсоединены и кластер перейдет в режим нормального функционирования.

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 192.168.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 20.0.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 192.168.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 172.16.1.2:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 192.168.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 172.16.1.2:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 20.0.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 172.16.1.2:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 20.0.0.32:~3343~'

INFO [NODE] Node 1: New join with n2: stage: 'Attempt Initial Connection' status WSAETIMEDOUT(10060) reason: 'Failed to connect to remote endpoint 192.168.0.32:~3343~'

После рестарта кластера с ключом /FQ изменится формат представления версии кластера (Paxos Tag) (См. Рис. 8 и 9)

 

Рис. 8. Paxos Tag до рестарта ClusSvc с ключом /FQ.

 

Рис. 9. Paxos Tag после рестарта ClusSvc с ключом /FQ.

Формат Paxos Tag более не меняется и остается в таком виде до конца “жизни” кластера.

Как видно из статьи, система кворума кластера под управлением Windows 2008 (R2) стала более гибкой, отказоустойчивой и оптимизирована для различных реализаций отказоустойчивого кластера. Она позволяет использовать кворум для различных вариантов развертывания кластера.

В следующей статье мы рассмотрим новую организацию кворума – Динамический кворум. Данный режим работы кворума предназначен для кластеров с большим количеством узлов работающих в составе “Облачных” технологий.

 

Александр Каленик, Senior Premier Field Engineer (PFE), MSFT (Russia)