Отслеживание доменов сбоя

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, версии 21H2 и 20H2

Отказоустойчивая кластеризация позволяет нескольким серверам работать вместе с целью обеспечения высокого уровня доступности или, другими словами, отказоустойчивости узла. Но сегодняшние предприятия требуют постоянно большей доступности от своей инфраструктуры. Для обеспечения бесперебойной работы, свойственной облачной среде, необходимо настроить защиту даже от таких маловероятных событий, как поломки корпуса, простои стойки или стихийные бедствия. Именно поэтому отказоустойчивая кластеризация в Windows Server 2016 также представила шасси, стойку и отказоустойчивость сайта.

Домены сбоя и отказоустойчивость

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

В этом коротком видео представлен обзор доменов сбоя в Windows Server 2016.

Осведомленность о домене сбоя в Windows Server 2019

Осведомленность о домене сбоя доступна в Windows Server 2019, но она отключена по умолчанию и должна быть включена в реестре Windows.

Чтобы включить осведомленность о домене сбоя в Windows Server 2019, перейдите в реестр Windows и задайте параметр Get-Cluster. Раздел реестра AutoAssignNodeSite до 1.

    (Get-Cluster).AutoAssignNodeSite=1

Чтобы отключить осведомленность о домене сбоя в Windows 2019, перейдите в реестр Windows и задайте значение (Get-Cluster). Раздел реестра AutoAssignNodeSite до 0.

    (Get-Cluster).AutoAssignNodeSite=0

Льготы

  • Дисковые пространства, в частности локальные, используют домены сбоя для повышения уровня безопасности данных. Устойчивость в дисковых пространствах в принципе аналогична распределенной программно определяемой системе RAID. Несколько копий всех данных синхронизируются. В случае сбоя оборудования и потери одной копии другие копируются повторно для восстановления устойчивости. Для достижения максимальной устойчивости копии следует хранить в отдельных доменах сбоя.

  • Служба работоспособности использует домены сбоя для предоставления более полезных оповещений. Каждый домен сбоя можно связать с метаданными расположения, которые будут автоматически включаться в любые последующие оповещения. Используя эти дескрипторы, рабочий или обслуживающий персонал могут различать оборудование, что поможет уменьшить количество ошибок.

  • Stretch кластеризация использует домены сбоя для сопоставления хранилища. В растянутой кластеризации можно присоединить к общему кластеру отдаленные серверы. Для повышения производительности приложения или виртуальные машины следует запускать на серверах, которые расположены недалеко от серверов, на которых хранятся данные. Осведомленность о домене сбоя позволяет обеспечить сходство хранилища.

Уровни доменов сбоя

Существует четыре классических уровня доменов сбоя: сайт, стойка, корпус и узел. Узлы обнаруживаются автоматически. Каждый дополнительный уровень не является обязательным. Например, если развертывание не использует серверы колонки, уровень шасси может не понять смысла.

Diagram of the different levels of fault domains

Использование

С помощью разметки PowerShell или XML можно указать домены сбоя. Оба подхода эквивалентны и полнофункциональны.

Внимание

Перед включением локальных дисковых пространств по возможности укажите домены сбоя. Это позволяет автоматической конфигурации подготовить пул, уровни и такие параметры, как устойчивость и число столбцов для обеспечения отказоустойчивости корпуса или стойки. После создания пула и томов данные не будут перемещены обратно после изменения топологии домена сбоя. Чтобы переместить узлы между корпусами или стойками после включения локальных дисковых пространств, сначала следует исключить узел и его диски из пула с помощью Remove-ClusterNode -CleanUpDisks.

Определение доменов сбоя с помощью PowerShell

Windows Server 2016 представляет следующие командлеты для работы с доменами сбоя:

  • Get-ClusterFaultDomain
  • Set-ClusterFaultDomain
  • New-ClusterFaultDomain
  • Remove-ClusterFaultDomain

В этом коротком видео показано использование команд PowerShell домена сбоя кластера.

Используется Get-ClusterFaultDomain для просмотра текущей топологии домена сбоя. В этом списке перечислены все узлы в кластере, а также все созданные шасси, стойки или сайты. Вы можете отфильтровать результаты с помощью таких параметров, как -Type или -Name, но это не обязательно.

Get-ClusterFaultDomain
Get-ClusterFaultDomain -Type Rack
Get-ClusterFaultDomain -Name "server01.contoso.com"

Используется New-ClusterFaultDomain для создания новых шасси, стоек или сайтов. Параметры -Type и -Name являются обязательными. Возможные значения: -TypeChassis, Rackи Site. Может быть любая -Name строка. (Для Node доменов сбоя типа имя должно быть фактическим именем узла, как задано автоматически).

New-ClusterFaultDomain -Type Chassis -Name "Chassis 007"
New-ClusterFaultDomain -Type Rack -Name "Rack A"
New-ClusterFaultDomain -Type Site -Name "Shanghai"

Внимание

Windows Server не может и не проверяет, соответствуют ли какие-либо домены сбоя в реальном физическом мире. (Это может показаться очевидным, но важно понять.) Если в физическом мире узлы находятся в одной стойке, то создание двух -Type Rack доменов сбоя в программном обеспечении не обеспечивает отказоустойчивость стойки. Вы отвечаете за обеспечение соответствия топологии, созданной с помощью этих командлетов, фактическому расположению оборудования.

Используется Set-ClusterFaultDomain для перемещения одного домена сбоя в другой. Обычно для описания этого отношения вложенности используются термины "родительской" и "дочерний". Параметры -Name и -Parent являются обязательными. Укажите -Nameимя перемещаемого домена сбоя; введите -Parentимя назначения. Чтобы переместить сразу несколько доменов сбоя, перечислите их имена.

Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent "Rack A"
Set-ClusterFaultDomain -Name "Rack A", "Rack B", "Rack C", "Rack D" -Parent "Shanghai"

Внимание

При перемещении доменов сбоев их дочерние элементы перемещаются вместе с ними. Если в приведенном выше примере стойка A является родительским элементом для server01.contoso.com, этот домен не нужно отдельно перемещать на сайт Shanghai. Это уже сделано, поскольку там находится его родительский элемент: все так же, как и в реальном мире.

В выходных данных Get-ClusterFaultDomainParentName выходных данных в столбцах и ChildrenNames столбцах можно увидеть связи с родительскими и дочерними элементами.

Можно также использовать Set-ClusterFaultDomain для изменения некоторых других свойств доменов сбоя. Например, можно указать необязательные -Location или -Description метаданные для любого домена сбоя. Эти сведения будут включены в оповещения службы работоспособности, касающиеся оборудования. Вы также можете переименовать домены сбоя с помощью -NewName параметра. Не переименуйте Node домены сбоя типа.

Set-ClusterFaultDomain -Name "Rack A" -Location "Building 34, Room 4010"
Set-ClusterFaultDomain -Type Node -Description "Contoso XYZ Server"
Set-ClusterFaultDomain -Name "Shanghai" -NewName "China Region"

Используется Remove-ClusterFaultDomain для удаления корпусов, стоек или сайтов, созданных вами. Параметр -Name является обязательным. Вы не можете удалить домен сбоя, содержащий дочерние элементы, сначала удалить дочерние элементы или переместить их за пределы использования Set-ClusterFaultDomain. Чтобы переместить домен сбоя за пределы всех остальных доменов сбоя, задайте для нее -Parent пустую строку (""). Невозможно удалить Node домены сбоя типа. Чтобы удалить сразу несколько доменов сбоя, перечислите их имена.

Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent ""
Remove-ClusterFaultDomain -Name "Rack A"

Определение доменов сбоя с помощью XML-разметки

Домены сбоя можно указать при помощи синтаксиса на основе XML. Мы рекомендуем использовать любимый текстовый редактор, например Visual Studio Code (доступно бесплатно здесь) или Блокнот для создания XML-документа, который можно сохранить и повторно использовать.

В этом коротком видео показано использование XML для указания доменов сбоя в кластеризация отработки отказа.

В PowerShell выполните следующий командлет: Get-ClusterFaultDomainXML Будет выведена текущая спецификация домена сбоя для кластера в виде XML-кода. Это отражает все обнаруженные <Node>, упакованные в открывающие и закрывающие <Topology> теги.

Чтобы сохранить эти выходные данные в файл, выполните следующую команду.

Get-ClusterFaultDomainXML | Out-File <Path>

Откройте файл и добавьте и добавьте <Site><Rack><Chassis> теги, чтобы указать, как эти узлы распределяются по сайтам, стоям и шасси. Каждый тег должен быть идентифицирован уникальным именем. Для узлов необходимо сохранить имена, заданные по умолчанию.

Внимание

Хотя все дополнительные теги являются необязательными, они должны соответствовать транзитивной иерархии Site > Rack > Chassis > Node и должны быть правильно закрыты. Помимо имени, freeform Location="..." и Description="..." дескрипторов можно добавить в любой тег.

Пример: два сайта, на каждом по одной стойке

<Topology>
  <Site Name="SEA" Location="Contoso HQ, 123 Example St, Room 4010, Seattle">
    <Rack Name="A01" Location="Aisle A, Rack 01">
      <Node Name="Server01" Location="Rack Unit 33" />
      <Node Name="Server02" Location="Rack Unit 35" />
      <Node Name="Server03" Location="Rack Unit 37" />
    </Rack>
  </Site>
  <Site Name="NYC" Location="Regional Datacenter, 456 Example Ave, New York City">
    <Rack Name="B07" Location="Aisle B, Rack 07">
      <Node Name="Server04" Location="Rack Unit 20" />
      <Node Name="Server05" Location="Rack Unit 22" />
      <Node Name="Server06" Location="Rack Unit 24" />
    </Rack>
  </Site>
</Topology>

Пример: два сервера колонки корпуса

<Topology>
  <Rack Name="A01" Location="Contoso HQ, Room 4010, Aisle A, Rack 01">
    <Chassis Name="Chassis01" Location="Rack Unit 2 (Upper)" >
      <Node Name="Server01" Location="Left" />
      <Node Name="Server02" Location="Right" />
    </Chassis>
    <Chassis Name="Chassis02" Location="Rack Unit 6 (Lower)" >
      <Node Name="Server03" Location="Left" />
      <Node Name="Server04" Location="Right" />
    </Chassis>
  </Rack>
</Topology>

Чтобы задать новую спецификацию домена сбоя, сохраните XML и выполните следующую команду в PowerShell.

$xml = Get-Content <Path> | Out-String
Set-ClusterFaultDomainXML -XML $xml

В этом руководстве представлено всего два примера, но <Site><Rack><Chassis>теги и <Node> теги могут быть смешанными и сопоставленными несколькими способами, чтобы отразить физическую топологию развертывания, независимо от того, что может быть. Мы надеемся, что приведенные примеры иллюстрируют гибкость этих тегов и значение произвольных дескрипторов расположения для их однозначного определения.

Необязательно. Метаданные расположения и описания

Можно указать необязательные метаданные расположения или описания для любого домена сбоя. Эти сведения будут включены в оповещения службы работоспособности, касающиеся оборудования.

В этом коротком видео показано значение добавления дескрипторов расположения в домены сбоя.