Partager via


Créer des règles d’affinité de serveur et de site pour les machines virtuelles

S’applique à : Azure Stack HCI, versions 23H2 et 22H2

Avec Windows Admin Center ou Windows PowerShell, vous pouvez facilement créer des règles d’affinité et d’anti-affinité pour vos machines virtuelles dans un cluster.

Notes

La méthode recommandée pour créer et gérer des machines virtuelles sur Azure Stack HCI 23H2 consiste à utiliser le plan de contrôle Azure Arc. Utilisez le mécanisme décrit ci-dessous pour gérer vos machines virtuelles uniquement si vous avez besoin de fonctionnalités qui ne sont pas disponibles dans les machines virtuelles Azure Arc.

L’affinité est une règle qui établit une relation entre au moins deux groupes de ressources ou rôles, tels que des machines virtuelles, pour les conserver ensemble dans le même serveur, cluster ou site. L’anti-affinité est l’inverse dans la mesure où elle est utilisée pour maintenir les machines virtuelles ou groupes de ressources spécifiés en dehors les uns des autres, par exemple deux contrôleurs de domaine placés sur des serveurs distincts ou dans des sites distincts pour la récupération d’urgence.

Les règles d’affinité et d’anti-affinité sont utilisées de la même façon qu’Azure utilise les zones de disponibilité. Dans Azure, vous pouvez configurer des zones de disponibilité pour conserver les machines virtuelles dans des zones distinctes et les séparer les unes des autres ou pour les conserver dans la même zone les unes avec les autres.

À l’aide des règles d’affinité et d’anti-affinité, les machines virtuelles de cluster restent dans le même nœud de cluster ou ne peuvent pas résider ensemble dans le même nœud de cluster. De cette façon, le seul moyen de faire sortir une machine virtuelle d’un nœud de cluster est de le faire manuellement. Vous pouvez également conserver des machines virtuelles ensemble avec leur propre stockage, tel que le volume partagé de cluster (CSV) sur lequel réside le VHDX.

En associant les règles d’affinité et d’anti-affinité, vous pouvez également configurer un cluster étendu sur deux sites et conserver vos machines virtuelles dans le site où elles doivent figurer.

Utilisation de Windows Admin Center

Vous pouvez créer des règles d’affinité et d’anti-affinité de base à l’aide de Windows Admin Center.

Écran Machines virtuelles

  1. Dans la page d’accueil de Windows Admin Center, sous Toutes les connexions, sélectionnez le serveur ou le cluster pour lequel vous voulez créer la règle de machine virtuelle.
  2. Sous Outils, sélectionnez Paramètres.
  3. Sous Paramètres, sélectionnez Règles d’affinité, puis sélectionnez Créer une règle sous Règles d’affinité.
  4. Sous Nom de la règle, entrez un nom pour votre règle.
  5. Sous Type de règle, sélectionnez Ensemble (même serveur) ou Séparées (serveurs différents) pour placer vos machines virtuelles sur le même serveur ou sur des serveurs différents.
  6. Sous S’applique à, sélectionnez les machines virtuelles auxquelles cette règle s’applique. Utilisez le bouton Ajouter pour ajouter d’autres machines virtuelles à la règle.
  7. Lorsque vous avez terminé, sélectionnez Créer une règle.
  8. Pour supprimer une règle, sélectionnez-la, puis sélectionnez Supprimer la règle.

Utilisation de Windows PowerShell

Windows PowerShell vous permet de créer des règles plus complexes qu’avec Windows Admin Center. En règle générale, vous configurez vos règles à partir d’un ordinateur distant plutôt que sur un serveur hôte dans un cluster. Cet ordinateur distant est appelé ordinateur de gestion.

Lorsque vous exécutez Windows PowerShell commandes à partir d’un ordinateur de gestion, incluez le -Name paramètre ou -Cluster avec le nom du cluster que vous gérez. Le cas échéant, vous devez également spécifier le nom de domaine complet (FQDN) lors de l’utilisation du -ComputerName paramètre pour un nœud de serveur

Nouvelles applets de commande PowerShell

Pour créer des règles d’affinité pour des clusters, utilisez les nouvelles applets de commande PowerShell suivantes :

New-ClusterAffinityRule

L’applet de commande New-ClusterAffinityRule permet de créer des règles. Avec cette commande, vous devez spécifier le nom de la règle et le type de règle qu’elle est, où :

-Name est le nom de la règle.

-RuleType Les valeurs sont SameFaultDomain | SameNode | DifferentFaultDomain | DifferentNode

Exemple :

New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain

Set-ClusterAffinityRule

L’applet de commande Set-ClusterAffinityRule permet d’activer ou de désactiver une règle, où :

-Name est le nom de la règle à activer ou désactiver.

-Enabled | Disabled active ou désactive la règle.

Exemple :

Set-ClusterAffinityRule -Name Rule1 -Enabled

Get-ClusterAffinityRule

L’applet de commande Get-ClusterAffinityRule permet d’afficher la règle spécifiée et son type. Si -Name n’est pas spécifié, il répertorie toutes les règles.

Exemple :

Get-ClusterAffinityRule -Name Rule1

Add-ClusterGroupToAffinityRule

L’applet de commande Add-ClusterGroupToAffinityRule permet d’ajouter un nom de groupe ou de rôle de machine virtuelle à une règle d’affinité spécifique, où :

-Groups est le nom du groupe ou du rôle à ajouter à la règle.

-Name est le nom de la règle pour l’ajout.

Exemple :

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

Add-ClusterSharedVolumeToAffinityRule permet à vos machines virtuelles de rester ensemble avec le Volume partagé de cluster sur lequel réside le VHDX, où :

-ClusterSharedVolumes correspond aux disques CSV que vous souhaitez ajouter à la règle.

-Name est le nom de la règle pour l’ajout.

Exemple :

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Remove-ClusterAffinityRule

Remove-ClusterAffinityRule supprime la règle spécifiée, où -Name est le nom de la règle.

Exemple :

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

supprime Remove-ClusterGroupFromAffinityRule un groupe de machines virtuelles ou un rôle d’une règle spécifique, mais ne désactive pas ou ne supprime pas la règle, où :

-Name est le nom de la règle.

-Groups correspond aux groupes ou rôles que vous souhaitez supprimer de la règle.

Exemple :

Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1

Remove-ClusterSharedVolumeFromAffinityRule

L’applet Remove-ClusterSharedVolumeFromAffinityRule de commande est utilisée pour supprimer les volumes partagés de cluster d’une règle spécifique, mais ne désactive pas ou ne supprime pas la règle, où :

-ClusterSharedVolumes correspond aux disques CSV que vous souhaitez supprimer de la règle.

-Name est le nom de la règle pour l’ajout.

Exemple :

Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

applets de commande PowerShell existantes

Avec l’avènement des nouvelles applets de commande, nous avons également ajouté de nouveaux commutateurs supplémentaires à quelques applets de commande existantes.

Move-ClusterGroup

Le nouveau commutateur -IgnoreAffinityRule ignore la règle et déplace le groupe de ressources de cluster vers un autre nœud de cluster. Pour plus d’informations sur cette applet de commande, consultez Move-ClusterGroup.

Exemple :

Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Remarque

Si une règle de déplacement est valide (prise en charge), tous les groupes et rôles concernés sont également déplacés. Si un déplacement de machine virtuelle viole sciemment une règle mais qu’il est provisoirement nécessaire, utilisez le commutateur -IgnoreAffinityRule pour autoriser le déplacement. Dans ce cas, un avertissement de violation s’affiche pour la machine virtuelle. Vous pouvez ensuite réactiver la règle en fonction des besoins.

Start-ClusterGroup

Le nouveau commutateur -IgnoreAffinityRule ignore la règle et met en ligne le groupe de ressources de cluster à son emplacement actuel. Pour plus d’informations sur cette applet de commande, consultez Start-ClusterGroup.

Exemple :

Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Exemples de règles d’affinité

Les règles d’affinité sont des règles « d’union » qui conservent les ressources dans le même serveur, cluster ou site. Voici quelques scénarios courants pour la configuration de règles d’affinité.

Scénario 1

Supposons que vous disposez d’une machine virtuelle SQL Server et d’une machine virtuelle de serveur web. Ces deux machines virtuelles doivent toujours rester dans le même site, mais elles n’ont pas nécessairement besoin d’être sur le même nœud de cluster dans le site. À l’aide de SameFaultDomain, cela est possible, comme indiqué ci-dessous :

New-ClusterAffinityRule -Name WebData -Ruletype SameFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData -Cluster Cluster1

Set-ClusterAffinityRule -Name WebData -Enabled 1 -Cluster Cluster1

Pour voir cette règle et la façon dont elle est configurée, utilisez l’applet Get-ClusterAffinityRule de commande pour afficher la sortie :

Get-ClusterAffinityRule -Name WebData -Cluster Cluster1

Name        RuleType          Groups        Enabled
----        ---------         ------        -------
WebData     SameFaultDomain   {SQL1, WEB1}     1

Scénario 2

Nous allons utiliser le même scénario ci-dessus, sauf à spécifier que les machines virtuelles doivent résider sur le même nœud de cluster. À l’aide de SameNode, vous pouvez définir ce qui suit :

New-ClusterAffinityRule -Name WebData1 -Ruletype SameNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData1 -Cluster Cluster1

Set-ClusterAffinityRule -Name WebData1 -Enabled 1 -Cluster Cluster1

Pour voir la règle et la façon dont elle est configurée, utilisez l’applet Get-ClusterAffinityRule de commande pour afficher la sortie :

Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1

Name    RuleType    Groups        Enabled
----    --------    ------        -------
DC      SameNode    {SQL1, WEB1}     1

Exemples de règles d’anti-affinité

Les règles d’anti-affinité sont des règles de « séparation » qui séparent les ressources et les placent dans des serveurs, des clusters ou des sites différents.

Scénario 1

Deux machines virtuelles exécutent SQL Server sur le même cluster multi-sites Azure Stack HCI. Chaque machine virtuelle utilise beaucoup de ressources de mémoire, de processeur et de stockage. Si les deux résident sur le même nœud, cela peut entraîner des problèmes de performances avec l’une d’elles ou les deux, car elles sont en concurrence pour les cycles de mémoire, de processeur et de stockage. En utilisant une règle d’anti-affinité avec DifferentNode comme type de règle, ces machines virtuelles restent toujours sur des nœuds de cluster différents.

Dans ce cas de figure, voici des exemples de commandes :

New-ClusterAffinityRule -Name SQL -Ruletype DifferentNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,SQL2 –Name SQL -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL -Enabled 1 -Cluster Cluster1

Pour voir la règle et la façon dont elle est configurée, utilisez l’applet Get-ClusterAffinityRule de commande pour afficher la sortie :

Get-ClusterAffinityRule -Name SQL -Cluster Cluster1

Name    RuleType        Groups        Enabled
----    -----------     -------       -------
SQL     DifferentNode   {SQL1, SQL2}     1

Scénario 2

Supposons que vous disposez d’un cluster étendu Azure Stack HCI avec deux sites (domaines d’erreur). Vous avez deux contrôleurs de domaine que vous souhaitez conserver dans des sites distincts. À l’aide d’une règle d’anti-affinité utilisant DifferentFaultDomain comme type de règle, ces contrôleurs de domaine restent toujours dans des sites différents. Dans ce cas de figure, voici des exemples de commandes :

New-ClusterAffinityRule -Name DC -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name DC -Cluster Cluster1

Set-ClusterAffinityRule -Name DC -Enabled 1 -Cluster Cluster1

Pour voir cette règle et la façon dont elle est configurée, utilisez l’applet Get-ClusterAffinityRule de commande pour afficher la sortie :

Get-ClusterAffinityRule -Name DC -Cluster Cluster1

Name    RuleType                Groups        Enabled
----    --------                -------       -------
DC      DifferentFaultDomain    {DC1, DC2}       1

Exemples de règles combinées

En associant les règles d’affinité et d’anti-affinité, vous pouvez facilement configurer différentes combinaisons de machines virtuelles sur un cluster à plusieurs sites. Dans ce scénario, chaque site comporte trois machines virtuelles : SQL Server (SQL), serveur web (WEB) et contrôleur de domaine (DC). Pour chacune des combinaisons, vous pouvez utiliser des règles d’affinité avec SameFaultDomain pour les conserver toutes dans le même site. Vous pouvez également définir les contrôleurs de domaine de chaque site avec des règles d’anti-affinité et DifferentFaultDomain pour conserver les machines virtuelles du contrôleur de domaine dans des sites distincts, comme indiqué ci-dessous :

New-ClusterAffinityRule -Name Site1Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name Site2Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name TrioApart -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1,DC1 –Name Site1Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL2,WEB2,DC2 –Name Site2Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name TrioApart -Cluster Cluster1

Set-ClusterAffinityRule -Name Site1Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name Site2Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name TrioApart -Enabled 1 -Cluster Cluster1

Pour voir les règles et la façon dont elles sont configurées, utilisez l’applet Get-ClusterAffinityRule de commande sans le -Name commutateur et vous pouvez voir toutes les règles créées et leur sortie.

Get-ClusterAffinityRule -Cluster Cluster1

Name        RuleType               Groups            Enabled
----        --------               ------            -------
Site1Trio   SameFaultDomain        {SQL1, WEB1, DC1}    1
Site2Trio   SameFaultDomain        {SQL2, WEB2, DC2}    1
TrioApart   DifferentFaultDomain   {DC1, DC2}           1

Règles d’affinité de stockage

Vous pouvez également conserver une machine virtuelle et son VHDX sur un volume partagé de cluster (CSV) sur le même nœud de cluster. Cela empêcherait ainsi la redirection CSV de se produire, ce qui peut ralentir le démarrage ou l’arrêt d’une machine virtuelle. En tenant compte du scénario combiné d’affinité et d’anti-affinité précédent, vous pouvez conserver la machine virtuelle SQL et le volume partagé de cluster sur le même nœud de cluster. Pour ce faire, utilisez les commandes suivantes :

New-ClusterAffinityRule -Name SQL1CSV1 -Ruletype SameNode -Cluster Cluster1

New-ClusterAffinityRule -Name SQL2CSV2 -Ruletype SameNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1 –Name SQL1CSV1 -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL2 –Name SQL2CSV2 -Cluster Cluster1

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name SQL1CSV1 -Cluster Cluster1

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV2 -Name SQL2CSV2 -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL1CSV1 -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL2CSV2 -Enabled 1 -Cluster Cluster1

Pour voir ces règles et la façon dont elles sont configurées, utilisez l’applet Get-ClusterAffinityRule de commande sans le commutateur -Name et affichez la sortie.

Get-ClusterAffinityRule -Cluster Cluster1

Name        RuleType               Groups            Enabled
----        --------               ------            -------
Site1Trio   SameFaultDomain        {SQL1, WEB1, DC1}    1
Site2Trio   SameFaultDomain        {SQL2, WEB2, DC2}    1
TrioApart   DifferentFaultDomain   {DC1, DC2}           1
SQL1CSV1    SameNode               {SQL1, <CSV1-GUID>}  1
SQL2CSV2    SameNode               {SQL2, <CSV2-GUID>}  1

Étapes suivantes

Découvrez comment gérer vos machines virtuelles. Consultez Gérer des machines virtuelles sur Azure Stack HCI avec Windows Admin Center.