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

Область применения: Windows Server 2019 и Windows Server 2016Applies to: Windows Server 2019 and Windows Server 2016

Отказоустойчивая кластеризация позволяет нескольким серверам работать вместе с целью обеспечения высокого уровня доступности или, другими словами, отказоустойчивости узла.Failover Clustering enables multiple servers to work together to provide high availability – or put another way, to provide node fault tolerance. Но современные предприятия стремятся к постоянному доступу из своей инфраструктуры.But today's businesses demand ever-greater availability from their infrastructure. Для обеспечения бесперебойной работы, свойственной облачной среде, необходимо настроить защиту даже от таких маловероятных событий, как поломки корпуса, простои стойки или стихийные бедствия.To achieve cloud-like uptime, even highly unlikely occurrences such as chassis failures, rack outages, or natural disasters must be protected against. Именно по этой причине отказоустойчивая кластеризация в Windows Server 2016 предоставила бы также защиту корпуса, стойки и отказоустойчивости сайта.That's why Failover Clustering in Windows Server 2016 introduced chassis, rack, and site fault tolerance as well.

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

Домены сбоя и отказоустойчивость — тесно связанные понятия.Fault domains and fault tolerance are closely related concepts. Домен сбоя — это набор аппаратных компонентов, которые совместно используют единственную точку сбоя.A fault domain is a set of hardware components that share a single point of failure. Чтобы достичь отказоустойчивости конкретного уровня, необходимо использовать на нем несколько доменов сбоя.To be fault tolerant to a certain level, you need multiple fault domains at that level. Например, чтобы обеспечить отказоустойчивость стоек, серверы и данные необходимо распределить среди нескольких стоек.For example, to be rack fault tolerant, your servers and your data must be distributed across multiple racks.

В этом коротком видео представлен обзор доменов сбоя в Windows Server 2016.  щелкните этот образ, чтобы просмотреть общие сведения о доменах сбоя в windows Server 2016 .This short video presents an overview of fault domains in Windows Server 2016: Click this image to watch an overview of fault domains in Windows Server 2016

Поддержка домена сбоя в Windows Server 2019Fault domain awareness in Windows Server 2019

Служба "поддержка домена сбоя" доступна в Windows Server 2019, но по умолчанию отключена и должна быть включена в реестре Windows.Fault domain awareness is available in Windows Server 2019 but it's disabled by default and must be enabled through the Windows Registry.

Чтобы включить поддержку домена сбоя в Windows Server 2019, перейдите в реестр Windows и установите (Get-Cluster). Для раздела реестра Аутоассигннодесите значение 1.To enable fault domain awareness in Windows Server 2019, go to the Windows Registry and set the (Get-Cluster).AutoAssignNodeSite registry key to 1.

    (Get-Cluster).AutoAssignNodeSite=1

Чтобы отключить осведомленность о домене сбоя в Windows 2019, перейдите в реестр Windows и установите (Get-Cluster). Для раздела реестра Аутоассигннодесите значение 0.To disable fault domain awareness in Windows 2019, go to the Windows Registry and set the (Get-Cluster).AutoAssignNodeSite registry key to 0.

    (Get-Cluster).AutoAssignNodeSite=0

ПреимуществаBenefits

  • Дисковые пространства, в частности локальные, используют домены сбоя для повышения уровня безопасности данных.Storage Spaces, including Storage Spaces Direct, uses fault domains to maximize data safety. Устойчивость в дисковых пространствах в принципе аналогична распределенной программно определяемой системе RAID.Resiliency in Storage Spaces is conceptually like distributed, software-defined RAID. Несколько копий всех данных синхронизируются. В случае сбоя оборудования и потери одной копии другие копируются повторно для восстановления устойчивости.Multiple copies of all data are kept in sync, and if hardware fails and one copy is lost, others are recopied to restore resiliency. Для достижения максимальной устойчивости копии следует хранить в отдельных доменах сбоя.To achieve the best possible resiliency, copies should be kept in separate fault domains.

  • Служба работоспособности использует домены сбоя для предоставления более полезных оповещений.The Health Service uses fault domains to provide more helpful alerts. Каждый домен сбоя можно связать с метаданными расположения, которые будут автоматически включаться в любые последующие оповещения.Each fault domain can be associated with location metadata, which will automatically be included in any subsequent alerts. Используя эти дескрипторы, рабочий или обслуживающий персонал могут различать оборудование, что поможет уменьшить количество ошибок.These descriptors can assist operations or maintenance personnel and reduce errors by disambiguating hardware.

  • Кластеризация с растяжением использует домены сбоя для сходства хранилища.Stretch clustering uses fault domains for storage affinity. В растянутой кластеризации можно присоединить к общему кластеру отдаленные серверы.Stretch clustering allows faraway servers to join a common cluster. Для повышения производительности приложения или виртуальные машины следует запускать на серверах, которые расположены недалеко от серверов, на которых хранятся данные.For the best performance, applications or virtual machines should be run on servers that are nearby to those providing their storage. Служба "осведомленность о доменах сбоя" обеспечивает соответствие этого хранилища.Fault domain awareness enables this storage affinity.

Уровни доменов сбояLevels of fault domains

Существует четыре классических уровня доменов сбоя: сайт, стойка, корпус и узел.There are four canonical levels of fault domains - site, rack, chassis, and node. Узлы обнаруживаются автоматически. Каждый дополнительный уровень не является обязательным.Nodes are discovered automatically; each additional level is optional. Например, если в развертывании не используются стоечные серверы, учитывать уровень корпуса не имеет смысла.For example, if your deployment does not use blade servers, the chassis level may not make sense for you.

Схема различных уровней доменов сбоя

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

Для указания доменов сбоя можно использовать разметку PowerShell или XML.You can use PowerShell or XML markup to specify fault domains. Оба подхода эквивалентны и полнофункциональны.Both approaches are equivalent and provide full functionality.

Важно!

Перед включением локальных дисковых пространств по возможности укажите домены сбоя.Specify fault domains before enabling Storage Spaces Direct, if possible. Это позволяет автоматической конфигурации подготовить пул, уровни и такие параметры, как устойчивость и число столбцов для обеспечения отказоустойчивости корпуса или стойки.This enables the automatic configuration to prepare the pool, tiers, and settings like resiliency and column count, for chassis or rack fault tolerance. После создания пула и томов данные не будут перемещены обратно после изменения топологии домена сбоя.Once the pool and volumes have been created, data will not retroactively move in response to changes to the fault domain topology. Чтобы переместить узлы между корпусами или стойками после включения локальных дисковых пространств, сначала следует исключить узел и его диски из пула с помощью Remove-ClusterNode -CleanUpDisks.To move nodes between chassis or racks after enabling Storage Spaces Direct, you should first evict the node and its drives from the pool using Remove-ClusterNode -CleanUpDisks.

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

В Windows Server 2016 представлены следующие командлеты для работы с доменами сбоя.Windows Server 2016 introduces the following cmdlets to work with fault domains:

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

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

Используйте Get-ClusterFaultDomain , чтобы просмотреть текущую топологию домена сбоя.Use Get-ClusterFaultDomain to see the current fault domain topology. Появится список всех узлов в кластере, а также любых созданных корпусов, стоек или сайтов.This will list all nodes in the cluster, plus any chassis, racks, or sites you have created. Вы можете отфильтровать результаты с помощью таких параметров, как -Type или -Name, но это не обязательно.You can filter using parameters like -Type or -Name, but these are not required.

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

Используйте New-ClusterFaultDomain для создания нового шасси, стоек или сайтов.Use New-ClusterFaultDomain to create new chassis, racks, or sites. Параметры -Type и -Name являются обязательными.The -Type and -Name parameters are required. Возможные значения для -Type : Chassis , Rack и Site .The possible values for -Type are Chassis, Rack, and Site. -NameМожет быть любой строкой.The -Name can be any string. (Для Node типов домена сбоя имя должно быть фактическим именем узла, как задано автоматически).(For Node type fault domains, the name must be the actual node name, as set automatically).

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

Важно!

Windows Server не может и не проверяет, соответствуют ли создаваемые домены сбоя каким-либо данным в реальном мире.Windows Server cannot and does not verify that any fault domains you create correspond to anything in the real, physical world. (Это может показаться очевидным, но важно понимать.) Если в физическом мире узлы находятся в одной стойке, то создание двух -Type Rack доменов сбоя в программном обеспечении не обеспечивает волшебную отказоустойчивость стойки.(This may sound obvious, but it's important to understand.) If, in the physical world, your nodes are all in one rack, then creating two -Type Rack fault domains in software does not magically provide rack fault tolerance. Вы отвечаете за обеспечение соответствия топологии, созданной с помощью этих командлетов, фактическому расположению оборудования.You are responsible for ensuring the topology you create using these cmdlets matches the actual arrangement of your hardware.

Используйте Set-ClusterFaultDomain для перемещения одного домена сбоя в другой.Use Set-ClusterFaultDomain to move one fault domain into another. Обычно для описания этого отношения вложенности используются термины "родительской" и "дочерний".The terms "parent" and "child" are commonly used to describe this nesting relationship. Параметры -Name и -Parent являются обязательными.The -Name and -Parent parameters are required. В -Name введите имя домена сбоя, который перемещается в -Parent , и укажите имя назначения.In -Name, provide the name of the fault domain that is moving; in -Parent, provide the name of the destination. Чтобы переместить сразу несколько доменов сбоя, перечислите их имена.To move multiple fault domains at once, list their names.

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

Важно!

При перемещении доменов сбоев их дочерние элементы перемещаются вместе с ними.When fault domains move, their children move with them. Если в приведенном выше примере стойка A является родительским элементом для server01.contoso.com, этот домен не нужно отдельно перемещать на сайт Shanghai. Это уже сделано, поскольку там находится его родительский элемент: все так же, как и в реальном мире.In the above example, if Rack A is the parent of server01.contoso.com, the latter does not separately need to be moved to the Shanghai site – it is already there by virtue of its parent being there, just like in the physical world.

В выходных данных Get-ClusterFaultDomain , в ParentName столбцах и, можно увидеть связи типа «родители-потомки» ChildrenNames .You can see parent-child relationships in the output of Get-ClusterFaultDomain, in the ParentName and ChildrenNames columns.

Также можно использовать Set-ClusterFaultDomain для изменения некоторых других свойств доменов сбоя.You can also use Set-ClusterFaultDomain to modify certain other properties of fault domains. Например, можно указать необязательные -Location или -Description метаданные для любого домена сбоя.For example, you can provide optional -Location or -Description metadata for any fault domain. Эти сведения будут включены в оповещения службы работоспособности, касающиеся оборудования.If provided, this information will be included in hardware alerting from the Health Service. Домены сбоя также можно переименовывать с помощью -NewName параметра.You can also rename fault domains using the -NewName parameter. Не переименовывайте Node домены сбоя типа.Do not rename Node type fault domains.

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 для удаления созданного корпуса, стоек или сайтов.Use Remove-ClusterFaultDomain to remove chassis, racks, or sites you have created. Параметр -Name является обязательным.The -Name parameter is required. Невозможно удалить домен сбоя, содержащий дочерние элементы — сначала удалите дочерние элементы или переместите их за пределы использования Set-ClusterFaultDomain .You cannot remove a fault domain that contains children – first, either remove the children, or move them outside using Set-ClusterFaultDomain. Чтобы переместить домен сбоя за пределы всех остальных доменов сбоя, задайте -Parent для него пустую строку ("").To move a fault domain outside of all other fault domains, set its -Parent to the empty string (""). Невозможно удалить Node домены сбоя типа.You cannot remove Node type fault domains. Чтобы удалить сразу несколько доменов сбоя, перечислите их имена.To remove multiple fault domains at once, list their names.

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

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

Домены сбоя можно указать при помощи синтаксиса на основе XML.Fault domains can be specified using an XML-inspired syntax. Мы рекомендуем с помощью любого текстового редактора создать XML-документ, который вы сможете сохранить и использовать потом. Например, можно использовать Visual Studio Code (загрузите его бесплатно отсюда) или Блокнот.We recommend using your favorite text editor, such as Visual Studio Code (available for free here) or Notepad, to create an XML document which you can save and reuse.

Этот короткий видеоролик демонстрирует использование XML-разметки для определения доменов сбоев.This short video demonstrates the usage of XML Markup to specify fault domains.

Щелкните этот образ, чтобы просмотреть короткий видеоролик об использовании XML для указания доменов сбояClick this image to watch a short video on how to use XML to specify fault domains

В PowerShell выполните следующий командлет: Get-ClusterFaultDomainXML .In PowerShell, run the following cmdlet: Get-ClusterFaultDomainXML. Будет выведена текущая спецификация домена сбоя для кластера в виде XML-кода.This returns the current fault domain specification for the cluster, as XML. Это отражает все обнаруженные <Node> , заключенные в теги открывающих и закрывающих <Topology> тегов.This reflects every discovered <Node>, wrapped in opening and closing <Topology> tags.

Чтобы сохранить эти выходные данные в файл, выполните следующую команду.Run the following to save this output to a file.

Get-ClusterFaultDomainXML | Out-File <Path>

Откройте файл и добавьте <Site> <Rack> теги, и, <Chassis> чтобы указать, как эти узлы распределяются между сайтами, стойками и шасси.Open the file, and add <Site>, <Rack>, and <Chassis> tags to specify how these nodes are distributed across sites, racks, and chassis. Каждый тег должен быть идентифицирован уникальным именем.Every tag must be identified by a unique Name. Для узлов необходимо сохранить имена, заданные по умолчанию.For nodes, you must keep the node's name as populated by default.

Важно!

Хотя все дополнительные теги являются необязательными, они должны соответствовать транзитивной иерархии Site > Rack > Chassis > Node и должны быть правильно закрыты.While all additional tags are optional, they must adhere to the transitive Site > Rack > Chassis > Node hierarchy, and must be properly closed. Кроме имени, произвольная Location="..." и Description="..." дескрипторы могут быть добавлены к любому тегу.In addition to name, freeform Location="..." and Description="..." descriptors can be added to any tag.

Пример: два сайта, на каждом по одной стойкеExample: Two sites, one rack each

<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>

Пример: два корпуса, стоечные серверыExample: two chassis, blade servers

<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 следующую команду.To set the new fault domain specification, save your XML and run the following in PowerShell.

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

В этом руководством представлены только два примера, но <Site> теги,, <Rack> <Chassis> и <Node> могут быть смешанными и сопоставлены во многих дополнительных способах отражения физической топологии развертывания, что может быть.This guide presents just two examples, but the <Site>, <Rack>, <Chassis>, and <Node> tags can be mixed and matched in many additional ways to reflect the physical topology of your deployment, whatever that may be. Мы надеемся, что приведенные примеры иллюстрируют гибкость этих тегов и значение произвольных дескрипторов расположения для их однозначного определения.We hope these examples illustrate the flexibility of these tags and the value of freeform location descriptors to disambiguate them.

Необязательно: метаданные расположения и описанияOptional: Location and description metadata

Можно указать необязательное Расположение или метаданные описания для любого домена сбоя.You can provide optional Location or Description metadata for any fault domain. Эти сведения будут включены в оповещения службы работоспособности, касающиеся оборудования.If provided, this information will be included in hardware alerting from the Health Service. В этом коротком видео показано значение добавления таких дескрипторов.This short video demonstrates the value of adding such descriptors.

Щелкните, чтобы просмотреть короткое видео с демонстрацией значений добавления дескрипторов расположения в домены сбоя.Click to see a short video demonstrating the value of adding location descriptors to fault domains

См. также:See Also