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

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

Dans cet article, vous allez découvrir comment utiliser Windows PowerShell pour créer un cluster hyperconvergé Azure Stack HCI qui utilise les 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 de serveur unique, suivez les mêmes instructions ci-dessous pour le serveur.

Notes

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

Dans cet article, nous allons créer 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 allons utiliser ClusterS1 comme nom et utiliser les quatre mêmes 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.

Si tester Azure Stack HCI vous intéresse, mais que vous disposez d’un matériel de rechange limité ou inexistant, consultez le Guide d’évaluation Azure Stack HCI, dans lequel nous vous guidons tout au long de la découverte d’Azure Stack HCI à l’aide de la virtualisation imbriquée dans 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 porte sur l’option à distance.

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

Vous aurez également 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 ceux-ci derniers ne sont pas déjà disponibles dans votre session PowerShell sur votre ordinateur de gestion, vous pouvez les ajouter en utilisant la commande suivante : Add-WindowsFeature RSAT-Clustering-PowerShell.

Étape 1 : Provisionner les serveurs

Nous allons d’abord nous connecter à chacun des serveurs, les joindre à un domaine (le même domaine que celui où se trouve l’ordinateur de gestion), et installer les rôles et fonctionnalités nécessaires.

É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 voulez 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 ont été 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

Jusqu’à présent, vous vous êtes connecté à chaque nœud de serveur avec le compte d’administrateur local <ServerName>\Administrator.

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-AD-Clustering-PowerShell
  • Module RSAT-AD-PowerShell
  • NetworkATC
  • 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", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "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", "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
}

Remarque

Network ATC ne nécessite pas de redémarrage du système si les autres fonctionnalités Azure Stack HCI ont déjà été installées.

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 premier lieu, au titre de contrôle de l’intégrité, envisagez d’exécuter les commandes suivantes pour vérifier 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, vous allez vérifier que les nœuds de serveur sont configurés correctement 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 ci-dessous utilise le paramètre -Include, avec les catégories spécifiques de tests spécifiées. Ceci garantit 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 obtenez 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 sans problème. Il est dû au fait qu’aucun disque n’est disponible pour le témoin de cluster que vous allez créer ultérieurement.

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 sur votre domaine peut prendre du temps, en particulier si des serveurs de groupe de travail ont été 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 une ou plusieurs des intentions suivantes pour une carte :

  • Calcul : les cartes seront utilisées pour connecter le trafic des machines virtuelles au réseau physique
  • Stockage : les cartes seront utilisées pour le trafic SMB, notamment les espaces de stockage Direct
  • Gestion : les cartes sont utilisées pour gérer l’accès aux nœuds

É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 (Get-ClusterNode).Name | 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 paramètre -ClusterName.

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. L’applet de commande vérifie que pour chaque nœud du cluster :

  • les cartes sont spécifiées
  • les cartes affichent l’état « Up » (actif)
  • les cartes sont prêtes à être combinées pour créer le vSwitch spécifié

É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).

L’état devrait afficher Success (Réussite) après quelques minutes. Dans le cas contraire, ou si vous constatez l’échec du paramètre d’état, vérifiez si l’observateur d’événements contient des problèmes.

Vérifiez que la configuration a été appliquée à tous les nœuds du cluster. Pour cet exemple, vérifiez que le VMSwitch a été déployé sur chaque nœud du cluster et que les cartes réseau virtuelles hôtes ont été créées pour le stockage.

Get-VMSwitch -CimSession (Get-ClusterNode).Name | Select Name, ComputerName

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.

Remarque

Si vous avez préalablement configuré des sites et des services Active Directory, vous ne devez pas créer les sites manuellement comme décrit ci-dessous.

Étape 5.1 : Créer des sites

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

New-ClusterFaultDomain -CimSession "ClusterS1" -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession "ClusterS1" -FaultDomainType Site -Name "Site2"

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

Get-ClusterFaultDomain -CimSession "ClusterS1"

Étape 5.2 : Affecter des nœuds de serveur

Nous allons ensuite affecter les quatre nœuds de serveur à leurs sites respectifs. Dans l’exemple ci-dessous, Server1 et Server2 sont affectés à Site1, tandis que Server3 et Server4 sont affectés à Site2.

Set-ClusterFaultDomain -CimSession "ClusterS1" -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession "ClusterS1" -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 "ClusterS1"

É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 sur le site passif (répliqué) pour garantir que le site préféré survit si toutes les autres choses sont égales. En outre, les nœuds de serveur sont d’abord nettoyés du site passif lors du regroupement après des événements comme des défaillances de connectivité réseau asymétrique.

    • Lors d’une division de quorum de deux sites, si le témoin de cluster ne peut pas être contacté, le site préféré est automatiquement choisi pour l’emporter. Les nœuds de serveur du site passif abandonnent alors l’appartenance au cluster. Ceci permet au cluster de survivre à une perte simultanée de 50 % des votes.

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

É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 des caches pour les espaces de stockage direct : Si plusieurs types de supports (lecteurs) sont disponibles pour les espaces de stockage direct, ceci active les plus rapides comme périphériques de cache (en lecture et en é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. La cmdlet Enable-ClusterStorageSpacesDirect détecte un serveur unique et configure automatiquement FaultDomainAwarenessDefault en tant que PhysicalDisk pendant l’activation.

Pour les clusters étendus, l’applet de commande Enable-ClusterStorageSpacesDirect effectue également les actions suivantes :

  • Vérifier si des sites ont été 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 sur un cluster à nœud unique, désactivant le cache de stockage :

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Pour voir les pools de stockage, utilisez ceci :

Get-StoragePool -CimSession $session

Après avoir créé le cluster

Une fois cela fait, il reste encore des tâches importantes à exécuter :

Étapes suivantes