Reconocimiento de dominio de error

Los clústeres de conmutación por error permiten que varios servidores funcionen conjuntamente para proporcionar alta disponibilidad, o dicho de otro modo, para proporcionar tolerancia de errores de nodo. Pero las empresas actuales demandan cada vez mayor disponibilidad de su infraestructura. Para lograr un tiempo de actividad similar a la nube, incluso en situaciones muy improbables como errores de chasis, interrupciones del bastidor o desastres naturales, deberá estar protegido. Por este motivo el clúster de conmutación por error en Windows Server 2016 presentó también tolerancia a errores de chasis, bastidor y sitio.

Dominios de error y tolerancia a errores

Los dominios de error y la tolerancia a errores son conceptos relacionados. Un dominio de error es un conjunto de componentes de hardware que comparten un único punto de error. Para ser tolerante a errores en un nivel determinado, se necesitan varios dominios de error en ese nivel. Por ejemplo, para ser tolerante a errores en bastidor, los servidores y los datos deben distribuirse entre varios bastidores.

En este breve vídeo se ofrece información general de los dominios de error en Windows Server 2016.

Reconocimiento de dominio de error en Windows Server 2019

El reconocimiento de dominio de error está disponible en Windows Server 2019, pero está deshabilitado de forma predeterminada y debe habilitarse a través del Registro de Windows.

Para habilitar el reconocimiento de dominio de error en Windows Server 2019, vaya al Registro de Windows y establezca la clave del Registro (Get-Cluster).AutoAssignNodeSite en 1.

    (Get-Cluster).AutoAssignNodeSite=1

Para deshabilitar el reconocimiento de dominio de error en Windows 2019, vaya al Registro de Windows y establezca la clave del Registro (Get-Cluster).AutoAssignNodeSite en 0.

    (Get-Cluster).AutoAssignNodeSite=0

Ventajas

  • Espacios de almacenamiento, incluido Espacios de almacenamiento directo, usa los dominios de error para maximizar la seguridad de los datos. La resistencia en Espacios de almacenamiento es conceptualmente similar a RAID distribuido y definido por software. Varias copias de todos los datos se mantienen sincronizadas, y si se produce un error de hardware y una copia se pierde, se vuelven a copiar las otras para restaurar la resistencia. Para lograr la mejor resistencia posible, se deben mantener las copias en dominios de error independientes.

  • El servicio de mantenimiento utiliza dominios de error para proporcionar alertas más útiles. Cada dominio de error se puede asociar con metadatos de ubicación, que se incluirán automáticamente en las alertas posteriores. Estos descriptores pueden ayudar al personal de mantenimiento o de operaciones y reducir los errores al eliminar la ambigüedad de hardware.

  • El clúster extendido usa dominios de error para la afinidad de almacenamiento. El ajuste de los clústeres permite que servidores lejanos se unan a un clúster común. Para optimizar el rendimiento, las aplicaciones o máquinas virtuales debe ejecutarse en servidores que están cercanos a los que proporcionan el almacenamiento. El reconocimiento de dominio de error habilita esta afinidad de almacenamiento.

Niveles de dominios de error

Hay cuatro niveles canónicos de dominios de error: sitio, bastidor, chasis y nodo. Los nodos se detectan automáticamente; cada nivel adicional es opcional. Por ejemplo, si su implementación no usa servidores blade, el nivel de chasis puede ser importante para usted.

Diagrama de los diferentes niveles de los dominios de error

Uso

Puede usar el marcado XML y PowerShell para especificar los dominios de error. Ambos enfoques son equivalentes y proporcionan una funcionalidad completa.

Importante

Especifique los dominios de error antes de habilitar Espacios de almacenamiento directo, si es posible. Esto permite que la configuración automática prepare el grupo, niveles y configuración como la resistencia y el número de columnas, para la tolerancia a errores del bastidor o del chasis. Una vez creados el grupo y los volúmenes, los datos no se moverán con carácter retroactivo en respuesta a los cambios en la topología del dominio de error. Para mover los nodos entre chasis o bastidores después de habilitar Espacios de almacenamiento directo, primero debe expulsar el nodo y sus unidades del grupo mediante Remove-ClusterNode -CleanUpDisks.

Definición de dominios de error con PowerShell

Windows Server 2016 presenta los siguientes cmdlets para trabajar con los dominios de error:

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

En este breve vídeo se muestra el uso de comandos de PowerShell de dominio de error de clúster.

Use Get-ClusterFaultDomain para ver la topología actual del dominio de error. Enumera todos los nodos del clúster, además de los chasis, bastidores o sitios que haya creado. Puede filtrarlos mediante parámetros como -Type o -Name, pero no son necesarios.

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

Use New-ClusterFaultDomain para crear nuevos chasis, bastidores o sitios. Los parámetros -Type y -Name son obligatorios. Los valores posibles para -Type son Chassis, Rack y Site. -Name puede ser cualquier cadena (para los dominios de error de tipo Node, el nombre debe ser el nombre de nodo real, como se establece automáticamente).

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

Importante

Windows Server no puede comprobar (ni lo hace) que los dominios de error que se crean se corresponden con algo del mundo real, físico (esto puede sonar obvio, pero es importante entenderlo). Si, en el mundo físico, los nodos están en un bastidor, la creación de dos dominios de error -Type Rack en el software no proporciona mágicamente la tolerancia a errores del bastidor. Son responsables de garantizar que la topología que se crea con estos cmdlets coincide con la disposición real del hardware.

Use Set-ClusterFaultDomain para mover un dominio de error en otro. Los términos "principal" y "secundario" se utilizan normalmente para describir esta relación de anidamiento. Los parámetros -Name y -Parent son obligatorios. En -Name, proporcione el nombre del dominio de error que está moviendo; en -Parent, indique el nombre del destino. Para mover varios dominios de error a la vez, liste sus nombres.

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

Importante

Cuando se mueve los dominios de error, sus elementos secundarios se mueven con ellos. En el ejemplo anterior, si el bastidor A es el elemento principal de server01.contoso.com, este último no necesita moverse separadamente al sitio Shanghai: aún está allí en virtud de su elemento principal, igual que en el mundo físico.

Puede ver las relaciones de elementos principales y secundarios en la salida de Get-ClusterFaultDomain, en las columnas ParentName y ChildrenNames.

También puede usar Set-ClusterFaultDomain para modificar determinadas propiedades de los dominios de error. Por ejemplo, puede proporcionar los metadatos -Locationo -Description opcionales para cualquier dominio de error. Si se proporciona, esta información se incluirá en las alertas de hardware procedentes del servicio de mantenimiento. También puede cambiar el nombre de los dominios de error mediante el parámetro -NewName. No cambie el nombre de los dominios de error de 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 quitar los chasis, bastidores o sitios que ha creado. El parámetro -Name es obligatorio. No se puede quitar un dominio de error que contiene elementos secundarios; en primer lugar, quite los elementos secundarios o muévalos fuera mediante Set-ClusterFaultDomain. Para mover un dominio de error fuera de los demás dominios de error, establezca su parámetro -Parent en la cadena vacía (""). No se pueden quitar los dominios de error de tipo Node. Para quitar varios dominios de error a la vez, liste sus nombres.

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

Definición de dominios de error con marcado XML

Los dominios de error se especifican mediante una sintaxis basada en XML. Se recomienda usar el editor de texto que prefiera, como Visual Studio Code (disponible gratuitamente aquí) o el Bloc de notas, para crear un documento XML que puede guardar y reutilizar.

Este breve vídeo demuestra el uso de XML para especificar dominios de fallo en la conmutación por error en clúster.

En PowerShell, ejecute el cmdlet siguiente: Get-ClusterFaultDomainXML. Se devuelve la especificación del dominio de error actual para el clúster, como XML. Esto refleja cada <Node> detectado, rodeado de las etiquetas <Topology> de apertura y cierre.

Ejecute lo siguiente para guardar esta salida en un archivo.

Get-ClusterFaultDomainXML | Out-File <Path>

Abra el archivo y agregue las etiquetas <Site>, <Rack> y <Chassis> para especificar cómo se distribuyen estos nodos por los sitios, bastidores y chasis. Cada etiqueta debe identificarse mediante un nombre único. Para los nodos, debe mantener el nombre del nodo tal como se muestra de forma predeterminada.

Importante

Mientras que todas las etiquetas adicionales son opcionales, deben adherirse a la jerarquía transitiva de Sitio > Bastidor > Chasis > Nodo y debe cerrarse correctamente. Además del nombre, se pueden agregar a cualquier etiqueta los descriptores de forma libre Location="..." y Description="...".

Ejemplo: Dos sitios, una estantería cada uno

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

Ejemplo: servidores de hoja con dos chasis

<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 establecer la nueva especificación del dominio de error, guarde el código XML y ejecute lo siguiente en PowerShell.

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

Esta guía presenta solo dos ejemplos, pero las etiquetas <Site>, <Rack>, <Chassis> y <Node> se pueden mezclar y combinar de muchas otras formas para reflejar la topología física de la implementación, cualquiera que sea. Esperamos que estos ejemplos muestren la flexibilidad de estas etiquetas y el valor de descriptores de ubicación de forma libre para eliminar la ambigüedad entre ellos.

Opcional: metadatos de ubicación y descripción

Puede proporcionar los metadatos Location o Description opcionales para cualquier dominio de error. Si se proporciona, esta información se incluirá en las alertas de hardware procedentes del servicio de mantenimiento.

En este breve vídeo se muestra el valor de agregar los descriptores de ubicación a los dominios de error.