Créer un cluster Azure Stack HCI en utilisant Windows PowerShell

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

Avertissement

Les instructions de déploiement fournies dans cet article s’appliquent à une version antérieure, Azure Stack HCI, version 22H2. Pour les nouveaux déploiements, nous vous recommandons d’utiliser la dernière version en disponibilité générale, Azure Stack HCI, version 23H2. Pour obtenir des instructions de déploiement, consultez À propos du déploiement d’Azure Stack HCI, version 23H2.

Dans cet article, vous allez apprendre à utiliser Windows PowerShell pour créer un cluster hyperconvergé Azure Stack HCI qui utilise espaces de stockage direct. Si vous utilisez plutôt l’Assistant Création de cluster dans Windows Admin Center pour créer le cluster, consultez Créer le cluster avec Windows Admin Center.

Notes

Si vous effectuez une installation de serveur unique Azure Stack HCI 21H2, utilisez PowerShell pour créer le cluster.

Vous avez le choix entre deux types de cluster :

  • Cluster standard avec un ou deux nœuds de serveur, tous se trouvant dans un même site.
  • Cluster étendu avec au moins quatre nœuds de serveur qui s’étendent sur deux sites, avec deux nœuds par site.

Pour le scénario à serveur unique, suivez les mêmes instructions pour le serveur unique.

Notes

Les clusters étendus ne sont pas pris en charge dans une configuration de serveur unique.

Dans cet article, nous créons un exemple de cluster nommé Cluster1 composé de quatre nœuds de serveur nommés Server1, Server2, Server3 et Server4.

Pour le scénario de cluster étendu, nous utilisons ClusterS1 comme nom et utilisons les mêmes quatre nœuds de serveur étendus sur les sites Site1 et Site2.

Pour plus d’informations sur les clusters étendus, consultez Vue d’ensemble des clusters étendus.

Pour tester Azure Stack HCI avec un minimum ou pas de matériel supplémentaire, vous pouvez case activée le Guide d’évaluation d’Azure Stack HCI. Dans ce guide, nous vous guiderons tout au long de l’expérience d’Azure Stack HCI à l’aide de la virtualisation imbriquée à l’intérieur d’une machine virtuelle Azure. Ou essayez le didacticiel Créer un laboratoire basé sur une machine virtuelle pour Azure Stack HCI pour créer votre propre environnement de laboratoire privé à l’aide de la virtualisation imbriquée sur un serveur de votre choix pour déployer des machines virtuelles exécutant Azure Stack HCI pour le clustering.

Avant de commencer

Avant de commencer, vérifiez que :

Utilisation de Windows PowerShell

Vous pouvez exécuter PowerShell localement dans une session RDP sur un serveur hôte ou vous pouvez l’exécuter à distance à partir d’un ordinateur de gestion. Cet article traite de l’option à distance.

Lorsque vous exécutez PowerShell à partir d’un ordinateur de gestion, incluez le -Name paramètre ou -Cluster avec le nom du serveur ou du cluster que vous gérez. En outre, vous devrez peut-être spécifier le nom de domaine complet (FQDN) lorsque vous utilisez le -ComputerName paramètre pour un nœud de serveur.

Vous avez besoin des applets de commande des Outils d’administration de serveur distant (RSAT) et des modules PowerShell pour Hyper-V et le clustering de basculement. Si les applets de commande et les modules ne sont pas déjà disponibles dans votre session PowerShell sur votre ordinateur de gestion, vous pouvez les ajouter à l’aide de la commande suivante : Add-WindowsFeature RSAT-Clustering-PowerShell.

Étape 1 : Configurer les serveurs

Tout d’abord, connectez-vous à chacun des serveurs, joignez-les à un domaine (le même domaine que celui dans lequel se trouve l’ordinateur de gestion), puis installez les rôles et fonctionnalités requis.

Étape 1.1 : Se connecter aux serveurs

Pour vous connecter aux serveurs, vous devez d’abord disposer d’une connectivité réseau, être joint au même domaine ou à un domaine entièrement approuvé, et disposer des autorisations d’administration locale sur les serveurs.

Ouvrez PowerShell et utilisez le nom de domaine complet ou l’adresse IP du serveur auquel vous souhaitez vous connecter. Vous serez invité à entrer un mot de passe après avoir exécuté la commande suivante sur chaque serveur.

Pour cet exemple, nous partons du principe que les serveurs sont nommés Server1, Server2, Server3 et Server4 :

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

Voici un autre exemple qui fait la même chose :

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Conseil

Lorsque vous exécutez des commandes PowerShell à partir de votre PC de gestion, vous pouvez rencontrer une erreur de type Impossible pour WinRM de traiter la requête. Pour résoudre ce problème, utilisez PowerShell afin d'ajouter chaque serveur à la liste Hôtes approuvés sur votre ordinateur de gestion. Cette liste prend en charge les caractères génériques, comme par exemple Server*.

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

Pour voir votre liste Hôtes approuvés, tapez Get-Item WSMAN:\Localhost\Client\TrustedHosts.

Pour vider la liste, tapez Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Étape 1.2 : Joindre le domaine et ajouter des comptes de domaine

À l’étape précédente, vous vous êtes connecté à chaque nœud de serveur avec, le compte <ServerName>\Administratord’administrateur local .

Pour continuer, vous devez joindre les serveurs à un domaine et utiliser le compte de domaine qui se trouve dans le groupe Administrateurs local sur chaque serveur.

Utilisez la cmdlet Enter-PSSession pour vous connecter à chaque serveur, puis exécutez la cmdlet suivante, en remplaçant le nom du serveur, le nom du domaine et les informations d’identification du domaine :

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

Si votre compte d’administrateur n’est pas membre du groupe Administrateurs de domaine, ajoutez votre compte administrateur au groupe Administrateurs local sur chaque serveur ; ou encore mieux, ajoutez le groupe que vous utilisez pour les administrateurs. Pour cela, vous pouvez utiliser la commande suivante :

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

Étape 1.3 : Installer les rôles et les fonctionnalités

L’étape suivante consiste à installer les rôles et fonctionnalités Windows nécessaires sur chaque serveur pour le cluster. Voici les rôles à installer :

  • BitLocker
  • Data Center Bridging
  • Clustering de basculement
  • Serveur de fichiers
  • Module FS-Data-Deduplication
  • Hyper-V
  • PowerShell Hyper-V
  • Module RSAT-Clustering-PowerShell
  • Module RSAT-AD-PowerShell
  • NetworkATC
  • NetworkHUD
  • Limite de bande passante SMB
  • Réplica de stockage (pour les clusters étendus)

Utilisez la commande suivante pour chaque serveur (si vous êtes connecté via le Bureau à distance, omettez le paramètre -ComputerName ici et dans les commandes suivantes) :

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "NetworkHUD", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

Pour exécuter la commande sur tous les serveurs du cluster en même temps, utilisez le script suivant, en modifiant la liste des variables au début pour les adapter à votre environnement :

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "NetworkHUD", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

Ensuite, redémarrez tous les serveurs :

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

Étape 2 : Préparer la configuration du cluster

Ensuite, vérifiez que vos serveurs sont prêts pour le clustering.

En tant que case activée sain d’esprit, envisagez d’exécuter les commandes suivantes pour vous assurer que vos serveurs n’appartiennent pas déjà à un cluster :

Utilisez Get-ClusterNode pour afficher tous les nœuds :

Get-ClusterNode

Utilisez Get-ClusterResource pour afficher tous les nœuds du cluster :

Get-ClusterResource

Utilisez Get-ClusterNetwork pour afficher tous les réseaux du cluster :

Get-ClusterNetwork

Étape 2.1 : Préparer les lecteurs

Avant d’activer les espaces de stockage direct, vérifiez que vos lecteurs permanents sont vides. Exécutez le script suivant pour supprimer les anciennes partitions et les autres données.

Remarque

Exclut du script tous les lecteurs amovibles attachés à un nœud de serveur. Si vous exécutez ce script localement à partir d’un nœud de serveur, par exemple, vous ne souhaitez pas réinitialiser le lecteur amovible que vous pourriez utiliser pour déployer le cluster.

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

Étape 2.2 : Tester la configuration du cluster

Dans cette étape, vérifiez que les nœuds de serveur sont correctement configurés pour créer un cluster. L’applet de commande Test-Cluster est utilisée pour exécuter des tests afin de vérifier que votre configuration est appropriée pour fonctionner en tant que cluster hyperconvergé. L’exemple suivant utilise le -Include paramètre , avec les catégories spécifiques de tests spécifiées pour s’assurer que les tests corrects sont inclus dans la validation.

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

Étape 3 : Créer le cluster

Vous êtes maintenant prêt à créer un cluster avec les nœuds de serveur que vous avez validés dans les étapes précédentes.

Lors de la création du cluster, vous pouvez recevoir un avertissement indiquant : "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." vous pouvez ignorer cet avertissement en toute sécurité. Cet avertissement est dû au fait qu’aucun disque n’est disponible pour le témoin de cluster. Le témoin de cluster est créé dans les étapes ultérieures.

Remarque

Si les serveurs utilisent des adresses IP statiques, modifiez la commande suivante de façon refléter l’adresse IP statique en ajoutant le paramètre suivant et en spécifiant l’adresse IP : -StaticAddress <X.X.X.X>;.

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

Une fois le cluster créé, la réplication du nom du cluster via DNS dans votre domaine peut prendre du temps, en particulier si les serveurs de groupe de travail viennent d’être ajoutés à Active Directory. Bien que le cluster puisse être affiché dans Windows Admin Center, il est possible qu’il ne soit pas encore disponible pour s’y connecter.

Un bon moyen de s’assurer que toutes les ressources du cluster sont en ligne :

Get-Cluster -Name $ClusterName | Get-ClusterResource

Si la résolution du cluster échoue au bout d’un certain temps, dans la plupart des cas, vous pouvez vous connecter en utilisant le nom d’un des serveurs en cluster plutôt que le nom du cluster.

Étape 4 : Configurer le réseau hôte

Microsoft vous recommande d’utiliser Network ATC pour déployer le réseau hôte si vous exécutez Azure Stack HCI version 21H2 ou supérieure. Sinon, consultez Spécifications réseau des hôtes pour obtenir des spécifications et des informations spécifiques.

Network ATC peut automatiser le déploiement de la configuration réseau prévue si vous spécifiez un ou plusieurs types d’intention pour vos cartes. Pour plus d’informations sur des types d’intention spécifiques, consultez : Types de trafic réseau.

Étape 4.1 : Vérifier les cartes physiques

Sur l’un des nœuds de cluster, exécutez Get-NetAdapter pour passer en revue les cartes physiques. Vérifiez que chaque nœud du cluster a les mêmes cartes physiques nommées et qu’elles sont dans l’état « Opérationnel ».

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

Si un nom de carte physique diffère selon les nœuds de votre cluster, vous pouvez le renommer en utilisant Rename-NetAdapter.

Rename-NetAdapter -Name oldName -NewName newName

Étape 4.2 : Configurer une intention

Dans cet exemple, une intention est créée qui spécifie l’intention de calcul et de stockage. Consultez Simplifier le réseau hôte avec Network ATC pour d’autres exemples d’intention.

Exécutez la commande suivante pour ajouter les types d’intention de stockage et de calcul à pNIC01 et à pNIC02. Notez que nous spécifions le -ClusterName paramètre.

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

La commande devrait immédiatement retourner un résultat après une vérification initiale.

Étape 4.3 : Valider le déploiement de l’intention

Exécutez l’applet de commande Get-NetIntent pour afficher l’intention du cluster. Si vous avez plusieurs intentions, vous pouvez spécifier le paramètre Name pour afficher uniquement les détails d’une intention spécifique.

Get-NetIntent -ClusterName $ClusterName

Pour afficher l’état d’approvisionnement de l’intention, exécutez la commande Get-NetIntentStatus :

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Notez le paramètre d’état qui indique Provisioning (Approvisionnement), Validating (Validation), Success (Réussite), Failure (Échec).

Le status doit afficher la réussite dans quelques minutes. Si le status de réussite ne se produit pas ou si vous voyez un échec de paramètre status, case activée l’observateur d’événements pour les problèmes.

Remarque

À ce stade, Network ATC ne configure pas les adresses IP pour les cartes gérées. Lorsque Get-NetIntentStatus affiche l’état Completed (Terminé), vous devez ajouter des adresses IP aux cartes.

Étape 5 : Configurer des sites (cluster étendu)

Cette tâche s’applique uniquement si vous créez un cluster étendu entre deux sites avec au moins deux serveurs dans chaque site.

Notes

Si vous avez configuré au préalable sites et services Active Directory, vous n’avez pas besoin de créer les sites manuellement, comme décrit dans la section suivante.

Étape 5.1 : Créer des sites

Dans l’applet de commande suivante, FaultDomain est simplement un autre nom pour un site. Cet exemple utilise « ClusterS1 » comme nom du cluster étendu.

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Utilisez l’applet Get-ClusterFaultDomain de commande pour vérifier que les deux sites sont créés pour le cluster.

Get-ClusterFaultDomain -CimSession $ClusterName

Étape 5.2 : Affecter des nœuds de serveur

Ensuite, nous affectons les quatre nœuds de serveur à leurs sites respectifs. Dans l’exemple suivant, Server1 et Server2 sont affectés à Site1, tandis que Server3 et Server4 sont affectés à Site2.

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

Avec l’applet de commande Get-ClusterFaultDomain, vérifiez que les nœuds se trouvent dans les sites corrects.

Get-ClusterFaultDomain -CimSession $ClusterName

Étape 5.3 : Définir un site préféré

Vous pouvez aussi définir un site préféré global, ce qui signifie que les ressources et les groupes spécifiés doivent s’exécuter sur le site préféré. Ce paramètre peut être défini au niveau du site avec la commande suivante :

(Get-Cluster).PreferredSite = "Site1"

La spécification d’un site préféré pour les clusters étendus a les avantages suivants :

  • Démarrage à froid : lors d’un démarrage à froid, les machines virtuelles sont placées dans le site préféré

  • Vote du quorum

    • Avec un quorum dynamique, la pondération est d’abord réduite à partir du site passif (répliqué) pour garantir que le site préféré survive si toutes les autres choses sont égales. En outre, les nœuds de serveur sont supprimés du site passif en premier pendant le regroupement après des événements tels que des échecs de connectivité réseau asymétrique.

    • Lors d’un fractionnement de quorum de deux sites, si le témoin de cluster ne peut pas être contacté, le site préféré est automatiquement sélectionné pour gagner. Les nœuds de serveur dans le site passif abandonnent ensuite l’appartenance au cluster, ce qui permet au cluster de survivre à une perte simultanée de 50 % de votes.

Le site préféré peut également être configuré au niveau du rôle ou du groupe de clusters. Dans ce cas, un site préféré différent peut être configuré pour chaque groupe de machines virtuelles, ce qui permet à un site d’être actif et préféré pour des machines virtuelles spécifiques.

Étape 5.4 : Configurer stretch clustering avec Network ATC

Après la version 22H2, vous pouvez utiliser Network ATC pour configurer Stretch clustering. Network ATC ajoute Stretch comme type d’intention à partir de la version 22H2. Pour déployer une intention avec Stretch clustering avec Network ATC, exécutez la commande suivante :

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

Une intention d’étirement peut également être combinée à d’autres intentions lors du déploiement avec Network ATC.

SiteOverrides

En fonction des étapes 5.1 à 5.3, vous pouvez ajouter vos sites précréés à votre intention étendue déployée avec Network ATC. Network ATC gère cela à l’aide de SiteOverrides. Pour créer un SiteOverride, exécutez :

 $siteOverride = New-NetIntentSiteOverrides

Une fois votre siteOverride créé, vous pouvez définir n’importe quelle propriété pour le siteOverride. Assurez-vous que la propriété name du siteOverride porte exactement le même nom que celui de votre site dans clusterFaultDomain. Une incompatibilité de noms entre clusterFaultDomain et siteOverride entraîne l’échec de l’application de siteOverride.

Les propriétés que vous pouvez définir pour un siteOverride particulier sont : Name, StorageVlan et StretchVlan. Par exemple, vous créez 2 sitesOverrides pour vos deux sites : site1 et site2 à l’aide de :

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

Vous pouvez exécuter $siteOverride1, $siteOverride2 dans votre fenêtre PowerShell pour vous assurer que toutes vos propriétés sont définies de la manière souhaitée.

Enfin, pour ajouter un ou plusieurs sitesOverrides à votre intention, exécutez :

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

Étape 6 : Activer les espaces de stockage direct

Après avoir créé le cluster, utilisez l’applet de commande Enable-ClusterStorageSpacesDirect, qui activera les espaces de stockage direct et effectuera automatiquement les actions suivantes :

  • Créer un pool de stockage : Crée un pool de stockage pour le cluster avec un nom tel que « Pool de stockage Cluster1 ».

  • Créer un disque d’historique des performances du cluster : Crée un disque virtuel d’historique des performances du cluster dans le pool de stockage.

  • Créer des volumes de données et de journaux : Crée un volume de données et un volume de journaux dans le pool de stockage.

  • Configurer espaces de stockage direct caches : s’il existe plusieurs types de supports (lecteur) disponibles pour espaces de stockage direct, il permet d’activer le plus rapide en tant que cache (lecture et écriture dans la plupart des cas).

  • Créer des niveaux : Crée deux niveaux comme niveaux par défaut. Un est appelé « Capacité » et l’autre « Performances ». L’applet de commande analyse les périphériques et configure chaque niveau avec la combinaison des types de périphériques et de la résilience.

Pour le scénario de serveur unique, le seul FaultDomainAwarenessDefault est PhysicalDisk. Enable-ClusterStorageSpacesDirect l’applet de commande détecte un serveur unique et configure automatiquement FaultDomainAwarenessDefault en tant que PhysicalDisk pendant l’activation.

Pour les clusters étendus, l’applet de Enable-ClusterStorageSpacesDirect commande :

  • Vérifiez si les sites sont configurés
  • Déterminer quels nœuds sont dans quels sites
  • Détermine le stockage disponible pour chaque nœud
  • Vérifie si la fonctionnalité de réplica de stockage est installée sur chaque nœud
  • Crée un pool de stockage pour chaque site et l’identifie à l’aide du nom du site
  • Crée des volumes de données et de journaux dans chaque pool de stockage, un par site

La commande suivante active les espaces de stockage direct sur un cluster à plusieurs nœuds. Vous pouvez aussi spécifier un nom convivial pour un pool de stockage, comme illustré ici :

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

Voici un exemple de désactivation du cache de stockage sur un cluster à nœud unique :

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Pour afficher les pools de stockage, utilisez la commande suivante :

Get-StoragePool -CimSession $ClusterName

Après avoir créé le cluster

Maintenant que votre cluster est créé, vous devez effectuer d’autres tâches importantes :

Étapes suivantes