Служба сведений о домене сбоя

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

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

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

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

В этом коротком видео представлен обзор доменов сбоя в Windows Server 2016:Click this image to watch an overview of fault domains in 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

Этот короткий видеоролик демонстрирует использование указанных командлетов. Click this image to watch a short video on the usage of the Cluster Fault Domain cmdlets

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

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

Используется для New-ClusterFaultDomain создания новых корпусов, стоек или сайтов. Параметры -Type и -Name являются обязательными. Возможные значения -Type : Chassis, 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. Мы рекомендуем с помощью любого текстового редактора создать XML-документ, который вы сможете сохранить и использовать потом. Например, можно использовать Visual Studio Code (загрузите его бесплатно отсюда) или Блокнот.

Этот короткий видеоролик демонстрирует использование XML-разметки для определения доменов сбоев.

Click this image to watch a short video on how to use XML to specify fault domains

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

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

Get-ClusterFaultDomainXML | Out-File <Path>

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

Важно!

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

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

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

Click to see a short video demonstrating the value of adding location descriptors to fault domains