Reconnaissance des domaines d'erreur

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI versions 21H2 et 20H2

Le clustering de basculement permet à plusieurs serveurs de travailler ensemble pour fournir une haute disponibilité, autrement dit, pour fournir une tolérance de panne aux nœuds. Cependant, les entreprises exigent aujourd’hui une disponibilité toujours plus grande de leur infrastructure. Pour obtenir un temps d’activité de type cloud, une protection contre des circonstances même très improbables comme une rupture de châssis, un dysfonctionnement de rack ou une catastrophe naturelle doit être mise en place. C’est pourquoi le clustering de basculement dans Windows Server 2016 a introduit une tolérance de panne pour les châssis, les racks et les sites également.

Domaines d’erreur et tolérance de panne

Les domaines d’erreur et la tolérance de panne sont des concepts étroitement liés. Un domaine d’erreur est un ensemble de composants matériels qui partagent un point de défaillance unique. Pour obtenir une tolérance de panne à un certain niveau, vous avez besoin de plusieurs domaines d’erreur à ce niveau. Par exemple, pour obtenir une tolérance de panne au niveau des racks, vos serveurs et vos données doivent être distribués sur plusieurs racks.

Cette courte vidéo présente une vue d’ensemble des domaines d’erreur dans Windows Server 2016.

Reconnaissance des domaines d’erreur dans Windows Server 2019

La reconnaissance des domaines d’erreur est disponible dans Windows Server 2019. Toutefois, cette fonctionnalité est désactivée par défaut et doit être activée via le Registre Windows.

Pour activer la reconnaissance des domaines d’erreur dans Windows Server 2019, accédez au Registre Windows et définissez la clé de Registre (Get-Cluster).AutoAssignNodeSite sur 1.

    (Get-Cluster).AutoAssignNodeSite=1

Pour désactiver la reconnaissance des domaines d’erreur dans Windows 2019, accédez au Registre Windows et définissez la clé de Registre (Get-Cluster).AutoAssignNodeSite sur 0.

    (Get-Cluster).AutoAssignNodeSite=0

Avantages

  • Les espaces de stockage, notamment les espaces de stockage direct, utilisent des domaines d’erreur pour maximiser la sécurité des données. Du point de vue conceptuel, la résilience dans les espaces de stockage est similaire à la technologie RAID distribuée et à définition logicielle. Plusieurs copies de toutes les données restent synchronisées, et si le matériel tombe en panne et qu’une copie est perdue, les autres sont recopiées pour restaurer la résilience. Pour obtenir la meilleure résilience possible, les copies doivent être conservées dans des domaines d’erreur distincts.

  • Le Service de contrôle d’intégrité utilise des domaines d’erreur pour fournir d’autres alertes utiles. Chaque domaine d’erreur peut être associé à des métadonnées d’emplacement, automatiquement incluses dans les alertes ultérieures. Ces descripteurs peuvent aider le personnel d’exploitation et de maintenance et réduire les erreurs en levant les ambiguïtés liées au matériel.

  • Le clustering étendu utilise les domaines d’erreur pour l’affinité de stockage. Le clustering étendu permet aux serveurs éloignés de rejoindre un cluster commun. Pour des performances optimales, les applications ou machines virtuelles doivent être exécutées sur des serveurs situés à proximité de ceux qui fournissent leur stockage. La reconnaissance des domaines d’erreur permet cette affinité de stockage.

Niveaux de domaines d’erreur

Il existe quatre niveaux canoniques de domaines d’erreur : site, rack, châssis et nœud. Les nœuds sont découverts automatiquement. Chaque niveau supplémentaire est facultatif. Par exemple, si votre déploiement n’utilise pas de serveurs lames, le niveau du châssis n’a peut-être pas de sens pour vous.

Diagram of the different levels of fault domains

Utilisation

Vous pouvez utiliser PowerShell ou le balisage XML pour spécifier des domaines d’erreur. Les deux approches sont équivalentes et fournissent des fonctionnalités complètes.

Important

Spécifiez les domaines d’erreur avant d’activer les espaces de stockage direct, si possible. Ainsi, la configuration automatique est activée pour préparer le pool, les niveaux et les paramètres tels que la résilience et le nombre de colonnes, pour une tolérance de panne au niveau du châssis ou rack. Une fois le pool et les volumes créés, les données ne se déplacement pas rétroactivement en réponse aux modifications apportées à la topologie des domaines d’erreur. Pour déplacer des nœuds entre des châssis ou racks après avoir activé des espaces de stockage direct, vous devez tout d’abord supprimer le nœud et ses lecteurs du pool à l’aide de Remove-ClusterNode -CleanUpDisks.

Définition des domaines d’erreur avec PowerShell

Windows Server 2016 introduit les cmdlets suivantes pour les domaines d’erreur :

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

Cette courte vidéo montre l’utilisation des commandes PowerShell de domaine d’erreur de cluster.

Utilisez Get-ClusterFaultDomain pour afficher la topologie actuelle des domaines d’erreur. Celle-ci répertorie tous les nœuds du cluster, ainsi que tous les châssis, racks ou sites que vous avez créés. Vous pouvez les filtrer à l’aide de paramètres tels que -Type ou -Name, mais ceux-ci ne sont pas obligatoires.

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

Utilisez New-ClusterFaultDomain pour créer des châssis, des racks ou des sites. Les paramètres -Type et -Name sont obligatoires. Les valeurs possibles pour -Type sont Chassis, Rack et Site. -Name peut être n’importe quelle chaîne. (Pour les domaines d’erreur de type Node, le nom doit correspondre au nom réel du nœud, comme il a été défini automatiquement).

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

Important

Windows Server ne peut pas vérifier et ne vérifie pas que les domaines d’erreur que vous créez correspondent à la configuration physique réelle. (Cela peut paraître évident, mais il est important de bien comprendre ce point). Si vos nœuds se trouvent tous dans un seul rack dans la configuration physique, la création de deux domaines d’erreur -Type Rack au niveau du logiciel ne fournit pas comme par magie une tolérance de panne au niveau du rack. Il vous incombe de veiller à ce que la topologie que vous créez à l’aide de ces applets de commande corresponde à la disposition réelle de votre matériel.

Utilisez Set-ClusterFaultDomain pour déplacer un domaine d’erreur vers un autre. Les termes « parent » et « enfant » sont couramment utilisés pour décrire cette relation d’imbrication. Les paramètres -Name et -Parent sont obligatoires. Dans -Name, indiquez le nom du domaine d’erreur déplacé. Dans -Parent, indiquez le nom de la destination. Pour déplacer plusieurs domaines d’erreur à la fois, dressez la liste de leurs noms.

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

Important

Quand des domaines d’erreur se déplacent, leurs enfants se déplacent avec eux. Dans l’exemple ci-dessus, si le rack A est le parent de server01.contoso.com, ce dernier n’a pas besoin de se déplacer séparément vers le site de Shanghai : il y est déjà puisque son parent y est, comme dans la configuration physique.

Les relations parent-enfant s’affichent dans la sortie de Get-ClusterFaultDomain, dans les colonnes ParentName et ChildrenNames.

Vous pouvez également utiliser Set-ClusterFaultDomain pour modifier certaines autres propriétés des domaines d’erreur. Par exemple, vous pouvez fournir des métadonnées -Location ou -Description facultatives pour tout domaine d’erreur. Si ces informations sont fournies, elles sont incluses dans les alertes matérielles provenant du service de contrôle d’intégrité. Vous pouvez également renommer les domaines d’erreur à l’aide du paramètre -NewName. Ne renommez pas les domaines d’erreur de type 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"

Utilisez Remove-ClusterFaultDomain pour supprimer les châssis, racks ou sites que vous avez créés. Le paramètre -Name est obligatoire. Vous ne pouvez pas supprimer un domaine d’erreur qui contient des enfants : supprimez d’abord les enfants ou déplacez-les à l’extérieur à l’aide de Set-ClusterFaultDomain. Pour déplacer un domaine d’erreur en dehors de tous les autres domaines d’erreur, définissez son -Parent sur la chaîne vide (""). Vous ne pouvez pas supprimer les domaines d’erreur de type Node. Pour supprimer plusieurs domaines d’erreur à la fois, dressez la liste de leurs noms.

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

Définition des domaines d’erreur avec le balisage XML

Vous pouvez spécifier des domaines d’erreur en utilisant une syntaxe inspirée du langage XML. Nous vous recommandons d’utiliser votre éditeur de texte favori, tel que Visual Studio Code (disponible gratuitement ici) ou le Bloc-notes, pour créer un document XML que vous pouvez enregistrer et réutiliser.

Cette courte vidéo montre l’utilisation de XML pour spécifier des domaines d’erreur dans le cluster de basculement.

Dans PowerShell, exécutez la cmdlet suivante : Get-ClusterFaultDomainXML. Celle-ci retourne la spécification de domaine d’erreur actuelle du cluster, au format XML. Cette spécification reflète tous les <Node> découverts, entre des balises <Topology> d’ouverture et de fermeture.

Exécutez la commande suivante pour enregistrer cette sortie dans un fichier.

Get-ClusterFaultDomainXML | Out-File <Path>

Ouvrez le fichier, puis ajoutez des balises <Site>, <Rack> et <Chassis> pour indiquer comment ces nœuds sont distribués entre les sites, racks et châssis. Chaque balise doit être identifiée par un nom unique. Pour les nœuds, vous devez conserver le nom du nœud tel qu’il est renseigné par défaut.

Important

Bien que toutes les balises supplémentaires soient facultatives, elles doivent respecter la hiérarchie Site > Rack > Châssis > transitive et être correctement fermées. En plus du nom, vous pouvez ajouter des descripteurs Location="..." et Description="..." en forme libre à une balise.

Exemple : deux sites, un seul rack chacun

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

Exemple : deux châssis, serveurs lames

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

Pour définir la nouvelle spécification de domaine d’erreur, enregistrez votre fichier XML et exécutez la commande suivante dans PowerShell.

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

Ce guide présente simplement deux exemples, mais les balises <Site>, <Rack>, <Chassis> et <Node> peuvent être mélangées et combinées de plusieurs manières afin de refléter la topologie physique de votre déploiement, quelle qu’elle soit. Nous espérons que ces exemples illustrent la flexibilité de ces balises et la valeur des descripteurs d’emplacement libre pour les distinguer.

Facultatif : métadonnées d’emplacement et de description

Vous pouvez fournir des métadonnées Emplacement ou Description facultatives pour tout domaine d’erreur. Si ces informations sont fournies, elles sont incluses dans les alertes matérielles provenant du service de contrôle d’intégrité.

Cette courte vidéo montre la valeur de l’ajout de descripteurs d’emplacement aux domaines d’erreur.