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 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 também apresentou tolerância a falhas de chassi, rack e site.

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 no Windows Server 2016.

Reconhecimento de domínio de falha no Windows Server 2019

O reconhecimento de domínio de falha está disponível no Windows Server 2019, mas está desabilitado por padrão e deve ser habilitado por meio do Registro do Windows.

Para habilitar o reconhecimento de domínio de falha no Windows Server 2019, acesse o Registro do Windows e defina a chave do registro (Get-Cluster).AutoAssignNodeSite como 1.

    (Get-Cluster).AutoAssignNodeSite=1

Para desabilitar o reconhecimento de domínio de falha no Windows 2019, acesse o Registro do Windows e defina a chave do registro (Get-Cluster).AutoAssignNodeSite como 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. O reconhecimento de domínio de falha 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 XML ou do PowerShell para especificar os 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.

Definir domínios de falha com o PowerShell

O 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 dos comandos do PowerShell de domínio de falha de cluster.

Use Get-ClusterFaultDomain para ver a topologia atual do domínio de falha. Ele lista todos os nós no cluster, além de chassis, racks ou sites criados. 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 para -Type são Chassis, Rack e Site. O -Name pode ser qualquer cadeia de caracteres. (Para domínios de falha do tipo Node, 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

O Windows não verifica se os domínios de falha que você cria correspondem a qualquer coisa do mundo real, físico. (Isso pode parecer óbvio, mas é importante entender.) Se, no mundo físico, seus nós estão todos em um rack, a criação de dois domínios de falha -Type Rack no software não fornece 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á sendo movimentado; 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 as relações pai-filho na saída de Get-ClusterFaultDomain, nas colunas ParentName e ChildrenNames.

Você também pode usar Set-ClusterFaultDomain para modificar outras propriedades de domínios de falha. Por exemplo, você pode fornecer metadados opcionais de -Location ou -Description 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 parâmetro -NewName. Não renomeie domínios de falha do tipo 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"

Use Remove-ClusterFaultDomain para remover chassis, racks ou sites que você criou. O -Name parâmetro é obrigatório. Você não pode remover um domínio de falha que contém 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 seu -Parent como uma cadeia de caracteres vazia (""). Não é possível remover domínios de falha do tipo Node. 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 do 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 XML para especificar os domínios de falha no cluster de failover.

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 todo <Node> descoberto, envolto por marcas de <Topology> de abertura e fechamento.

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

Get-ClusterFaultDomainXML | Out-File <Path>

Abra o arquivo e adicione as marcas <Site>, <Rack> e <Chassis> para especificar como esses nós serã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, os descritores de forma livre Location="..." e Description="..." 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 o 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 marcas <Site>, <Rack>, <Chassis> e <Node> podem ser misturadas e combinadas de várias maneiras de refletir a topologia física de sua implantação, seja ela qual for. 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 Local 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 breve vídeo demonstra a importância de adicionar descritores de local em domínios de falha.