Reconhecimento de domínio de falha

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, versões 21H2 e 20H2

Clustering de failover permite que vários servidores funcionem juntos para fornecer alta disponibilidade ou, em outras palavras, para fornecer tolerância a falhas de nó. Mas as empresas de hoje exigem uma disponibilidade cada vez maior de sua infraestrutura. Para conseguir um tempo de atividade parecido com o da nuvem, é necessário se proteger até mesmo de ocorrências altamente improváveis como desastres naturais, interrupções de rack ou falhas de chassi. É por isso que o clustering de failover no Windows Server 2016 introduziu a tolerância a falhas de chassi, rack e site também.

Domínios de falha e tolerância a falhas

Domínios de falha e tolerância a falhas são conceitos bem próximos. Um domínio de falha é um conjunto de componentes de hardware que compartilham um único ponto de falha. Para ser tolerante a falhas em um determinado nível, você precisa de vários domínios de falha nesse nível. Por exemplo, para ser rack tolerante a falhas do rack, seus servidores e seus dados devem ser distribuídos entre vários racks.

Este breve vídeo apresenta uma visão geral dos domínios de falha em Windows Server 2016:Click this image to watch an overview of fault domains in Windows Server 2016

Reconhecimento de domínio de falha no Windows Server 2019

A conscientização do domínio de falhas está disponível no Windows Server 2019, mas está desabilitada por padrão e deve ser habilitada por meio do Registro Windows.

Para habilitar a conscientização do domínio de falhas no Windows Server 2019, acesse o Registro de Windows e defina o (Get-Cluster). AutoAssignNodeSite registry key to 1.

    (Get-Cluster).AutoAssignNodeSite=1

Para desabilitar a conscientização do domínio de falha no Windows 2019, vá para o Registro Windows e defina o (Get-Cluster). AutoAssignNodeSite registry key to 0.

    (Get-Cluster).AutoAssignNodeSite=0

Benefícios

  • Espaços de armazenamento, incluindo Espaços de armazenamento diretos, usam domínios de falha para maximizar a segurança dos dados. A resiliência nos Espaços de armazenamento é, conceitualmente, parecida com RAID distribuída e definida pelo software. Várias cópias de todos os dados são mantidas em sincronia, e se o hardware falhar e uma cópia for perdida, outros são copiados novamente para restaurar a resiliência. Para obter a máxima resiliência possível, as cópias devem ser mantidas em domínios de falha separados.

  • O Serviço de Integridade usa domínios de falha para fornecer alertas mais úteis. Cada domínio de falha pode ser associado aos metadados de local, que serão incluído automaticamente em todos os alertas subsequentes. Esses descritores podem ajudar a equipe de manutenção ou de operações e reduzir os erros por desambiguação de hardware.

  • O clustering estendido usa domínios de falha para afinidade de armazenamento. O cluster estendido permite que servidores distantes ingressem em um cluster comum. Para obter o melhor desempenho, os aplicativos ou máquinas virtuais devem ser executadas em servidores que estão próximos àqueles que fornecem seu armazenamento. A conscientização do domínio de falhas permite essa afinidade de armazenamento.

Níveis de domínios de falha

Há quatro níveis canônicos de domínios de falha - site, rack, chassi e nó. Os nós são descobertos automaticamente; cada nível adicional é opcional. Por exemplo, se sua implantação não usar servidores blade, talvez o nível de chassi não faça sentido para você.

Diagram of the different levels of fault domains

Uso

Você pode usar a marcação do PowerShell ou XML para especificar domínios de falha. Ambas as abordagens são equivalentes e fornecem a funcionalidade completa.

Importante

Especifique os domínios de falha antes de habilitar Espaços de Armazenamento Diretos, se for possível. Isso permite que a configuração automática prepare o pool, as camadas e as configurações para resiliência e número de colunas, para tolerância a falhas de chassi ou rack. Após a criação do pool e dos volumes, os dados não se movimentarão de retroativa em resposta às alterações na topologia do domínio de falha. Para mover nós entre chassis ou racks depois de habilitar os Espaços de Armazenamento Diretos, você deve remover primeiro o nó e suas unidades do pool usando Remove-ClusterNode -CleanUpDisks.

Definindo domínios de falha com o PowerShell

Windows Server 2016 apresenta os seguintes cmdlets para trabalhar com domínios de falha:

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

Este breve vídeo demonstra o uso desses cmdlets. Click this image to watch a short video on the usage of the Cluster Fault Domain cmdlets

Use Get-ClusterFaultDomain para ver a topologia de domínio de falha atual. Isso listará todos os nós no cluster, além de qualquer chassi, rack ou site que você criou. Você pode filtrar usando parâmetros como -Type ou -Name, mas isso não é obrigatório.

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

Use New-ClusterFaultDomain para criar novos chassis, racks ou sites. Os parâmetros -Type e -Name são obrigatórios. Os valores possíveis são -TypeChassis, Racke Site. Pode -Name ser qualquer cadeia de caracteres. (Para Node domínios de falha de tipo, o nome deve ser o nome real do nó, conforme definido automaticamente).

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

Importante

Windows Server não pode e não verifica se os domínios de falha criados correspondem a qualquer coisa no mundo físico real. (Isso pode parecer óbvio, mas é importante entender.) Se, no mundo físico, seus nós estiverem todos em um rack, a criação de dois -Type Rack domínios de falha no software não fornecerá magicamente tolerância a falhas de rack. Você é responsável por garantir a topologia criada por você usando esses cmdlets corresponda à organização real de seu hardware.

Use Set-ClusterFaultDomain para mover um domínio de falha para outro. Os termos "parent" (pai) e "child" (filho) são usados normalmente para descrever essa relação de aninhamento. Os parâmetros -Name e -Parent são obrigatórios. Em -Name, forneça o nome do domínio de falha que está se movendo; em -Parent, forneça o nome do destino. Para mover vários domínios de falha ao mesmo tempo, liste seus nomes.

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

Importante

Ao mover domínios de falha, seus filhos os acompanham. No exemplo acima, se um Rack A é o pai do server01.contoso.com, o último não precisa ser movido separadamente para o site Xangai – ele já existirá em virtude de seu pai, assim como no mundo físico.

Você pode ver relações pai-filho na saída de Get-ClusterFaultDomain, nas colunas e ChildrenNames nas ParentName colunas.

Você também pode usar Set-ClusterFaultDomain para modificar determinadas outras propriedades de domínios de falha. Por exemplo, você pode fornecer metadados ou -Description opcionais -Location para qualquer domínio de falha. Se forem fornecidas, essas informações serão incluídas no alerta de hardware do Serviço de Integridade. Você também pode renomear domínios de falha usando o -NewName parâmetro. Não renomeie Node domínios de falha de tipo.

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"

Use Remove-ClusterFaultDomain para remover chassis, racks ou sites que você criou. O -Name parâmetro é obrigatório. Não é possível remover um domínio de falha que contenha filhos – primeiro, remova os filhos ou mova-os para fora usando Set-ClusterFaultDomain. Para mover um domínio de falha para fora de todos os outros domínios de falha, defina-o -Parent como a cadeia de caracteres vazia (""). Não é possível remover Node domínios de falha de tipo. Para remover vários domínios de falha ao mesmo tempo, liste seus nomes.

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

Definir domínios de falha com marcação XML

Os domínios de falha podem ser especificados usando uma sintaxe inspirada em XML. Recomendamos o uso de seu editor de texto favorito, como o Visual Studio Code (disponível gratuitamente aqui) ou o Bloco de Notas, para criar um documento XML que você pode salvar e reutilizar.

Este breve vídeo demonstra o uso de Marcação XML para especificar os domínios de falha.

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

No PowerShell, execute o seguinte cmdlet: Get-ClusterFaultDomainXML. Isso retorna a especificação de domínio de falha atual para o cluster, como XML. Isso reflete todas as marcas descobertas, encapsuladas <Node>em marcas de abertura e fechamento <Topology> .

Execute o seguinte para salvar essa saída em um arquivo.

Get-ClusterFaultDomainXML | Out-File <Path>

Abra o arquivo e adicione <Site>, <Rack>e <Chassis> marcas para especificar como esses nós são distribuídos entre sites, racks e chassis. Cada marca deve ser identificada por um único Nome. Para os nós, você deve manter o nome padrão do nó.

Importante

Embora todas as marcas adicionais sejam opcionais, elas devem aderir à hierarquia temporária de Site > Rack > Chassi > Nó, e devem ser fechadas corretamente. Além do nome, a forma Location="..." livre e Description="..." os descritores podem ser adicionados a qualquer marca.

Exemplo: dois sites, um rack cada um

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

Exemplo: dois chassis, servidores blade

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

Para definir a nova especificação de domínio de falha, salve seu XML e execute o seguinte no PowerShell.

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

Este guia apresenta apenas dois exemplos, mas as <Site><Rack><Chassis>marcas podem ser misturadas e <Node> combinadas de várias maneiras adicionais para refletir a topologia física de sua implantação, o que quer que seja. Esperamos que esses exemplos ilustrem a flexibilidade dessas marcas e o valor de descritores de local de forma livre para resolver a ambiguidade entre elas.

Opcional: metadados de localização e descrição

Você pode fornecer metadados opcionais de Localização ou Descrição para qualquer domínio de falha. Se forem fornecidas, essas informações serão incluídas no alerta de hardware do Serviço de Integridade. Este vídeo curto demonstra o valor da adição desses descritores.

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