Créer un cluster Azure Stack HCI à l’aide de Windows PowerShell

S’applique à : Azure Stack HCI, version 22H2

Important

Azure Stack HCI fait désormais partie d’Azure Local. Toutefois, les versions antérieures de Azure Stack HCI, par exemple 22H2, continueront de référencer Azure Stack HCI et ne reflèteront pas la modification du nom. En savoir plus.

Warning

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 de Azure Local, consultez À propos de Azure Local déploiement.

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.

Note

Si vous effectuez une installation de serveur unique de 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 résidant dans un seul site.
  • Cluster étendu avec au moins quatre nœuds 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 pour le serveur unique.

Note

Les clusters Stretch 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 serveur nommés Server1, Server2, Server3 et Server4.

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

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

Avant de commencer

Avant de commencer, assurez-vous de :

Utilisation de Windows PowerShell

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

Lorsque vous exécutez PowerShell à partir d’un ordinateur de gestion, incluez le paramètre -Cluster ou -Name 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) lors de l’utilisation du -ComputerName paramètre pour un nœud de serveur.

Vous avez besoin des applets de commande RSAT (Remote Server Administration Tools) 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 dans lequel se trouve l’ordinateur de gestion) et 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 d’autorisations administratives locales 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 de faire la même chose :

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

Lorsque vous exécutez des commandes PowerShell à partir de votre PC de gestion, vous risquez d’obtenir une erreur telle que WinRM ne peut pas traiter la requête. Pour résoudre ce problème, utilisez PowerShell pour ajouter chaque serveur à la liste des hôtes approuvés sur votre ordinateur de gestion. Cette liste prend en charge les caractères génériques, comme Server* par exemple.

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 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 l’applet Enter-PSSession de commande pour vous connecter à chaque serveur et exécuter l’applet de commande suivante, en remplaçant le nom du serveur, le nom de domaine et les informations d’identification de 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 d’administrateur au groupe Administrateurs local sur chaque serveur , ou mieux encore, ajoutez le groupe que vous utilisez pour les administrateurs. Vous pouvez utiliser la commande suivante pour ce faire :

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

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

L’étape suivante consiste à installer les rôles et fonctionnalités requis Windows sur chaque serveur du cluster. Voici les rôles à installer :

  • BitLocker
  • Data Center Bridging
  • Clustering de basculement
  • Serveur de fichiers
  • module FS de déduplication des données
  • Hyper-V
  • Hyper-V PowerShell
  • module RSAT-Clustering-PowerShell
  • module RSAT-AD-PowerShell
  • NetworkATC
  • Limite de bande passante SMB
  • Réplication de stockage (pour les clusters étendus)

Utilisez la commande suivante pour chaque serveur (si vous êtes connecté via Bureau à distance omettez le -ComputerName paramètre 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", "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 qu’elles correspondent à 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", "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éparation de la configuration du cluster

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

En guise de vérification de l’intégrité, envisagez d’exécuter les commandes suivantes pour vous assurer que vos serveurs n’appartiennent pas déjà à un cluster :

Permet Get-ClusterNode d’afficher tous les nœuds :

Get-ClusterNode

Permet Get-ClusterResource d’afficher tous les nœuds de cluster :

Get-ClusterResource

Permet Get-ClusterNetwork d’afficher tous les réseaux de cluster :

Get-ClusterNetwork

Étape 2.1 : Préparer les lecteurs

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

Note

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 utilisez peut-être 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 configurés correctement pour créer un cluster. L’applet Test-Cluster de commande est utilisée pour exécuter des tests pour vérifier que votre configuration convient 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és pour vous 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 que "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û à l’absence de disques disponibles pour le témoin de cluster. Le témoin de cluster est créé lors d’étapes ultérieures.

Note

Si les serveurs utilisent des adresses IP statiques, modifiez la commande suivante pour 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éé, il peut prendre un certain temps pour que le nom du cluster soit répliqué via DNS dans votre domaine, en particulier si les serveurs de groupe de travail viennent d’être ajoutés à Active Directory. Même si le cluster peut être affiché dans Windows Admin Center, il n’est peut-être pas encore disponible pour se connecter.

Vérifiez que toutes les ressources de cluster sont en ligne :

Get-Cluster -Name $ClusterName | Get-ClusterResource

Si la résolution du cluster ne réussit pas après un certain temps, dans la plupart des cas, vous pouvez vous connecter à l’aide du nom de l’un des serveurs en cluster au lieu du nom du cluster.

Étape 4 : Configurer la mise en réseau de l’hôte

Microsoft recommande d'utiliser Network ATC pour déployer le réseau hôte si vous exécutez Azure Stack HCI version 21H2 ou ultérieure. Dans le cas contraire, consultez la configuration requise du réseau hôte pour obtenir des informations et des exigences spécifiques.

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

Étape 4.1 : Passer en revue les adaptateurs physiques

Sur l’un des nœuds du cluster, exécutez Get-NetAdapter pour passer en revue les adaptateurs physiques. Vérifiez que chaque nœud du cluster a les mêmes adaptateurs physiques nommés et qu’ils signalent l’état « Up ».

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

Si le nom d’un adaptateur physique varie d’un nœud à l’autre dans votre cluster, vous pouvez le renommer à l’aide de 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. Pour plus d’exemples d’intention, consultez Simplifier la mise en réseau de l’hôte avec Network ATC .

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 doit immédiatement retourner après une vérification initiale.

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

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

Get-NetIntent -ClusterName $ClusterName

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

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Notez le paramètre d’état qui affiche l’approvisionnement, la validation, la réussite, l’échec.

Le statut devrait indiquer un succès dans quelques minutes. Si l’état de réussite n’apparaît pas ou si vous voyez un échec du paramètre d’état, consultez l’Observateur d’événements pour rechercher d’éventuels problèmes.

Note

Pour le moment, Network ATC ne configure pas d’adresses IP pour aucun des adaptateurs qu’il gère. Une fois que Get-NetIntentStatus indique l’état « terminé », vous devez ajouter des adresses IP aux adaptateurs.

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

Note

Si vous avez configuré Active Directory sites et services au préalable, 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 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"

À l’aide de l’applet Get-ClusterFaultDomain de commande, vérifiez que les nœuds se trouvent dans les sites appropriés.

Get-ClusterFaultDomain -CimSession $ClusterName

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

Vous pouvez également définir un site global préféré , 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 à l’aide de la commande suivante :

(Get-Cluster).PreferredSite = "Site1"

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

  • Démarrage à froid - lors d’un démarrage à froid, les machines virtuelles sont placées sur le site privilégié

  • Vote de quorum

    • Avec un quorum dynamique, la pondération est réduite d’abord du site passif (répliqué) pour s’assurer 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 lors du regroupement après des événements tels que des échecs de connectivité réseau asymétrique.

    • En cas de scission de quorum entre deux sites, si le témoin du cluster est inaccessible, le site préféré est automatiquement élu comme site gagnant. Les nœuds serveur du site passif quittent alors le cluster, permettant ainsi au cluster de résister à une perte simultanée de 50 % des votes.

Le site préféré peut également être configuré au niveau du rôle de cluster ou du groupe. Dans ce cas, un autre site préféré 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 en tant que 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’extension peut également être combinée avec d’autres intentions lors d’un déploiement avec Network ATC.

SiteOverrides

En vous basant sur les étapes 5.1 à 5.3, vous pouvez ajouter les sites que vous avez créés au préalable à votre stratégie d’extension 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 siteOverride. Assurez-vous que la propriété name du siteOverride porte exactement le même nom que le nom de votre site dans clusterFaultDomain. Une différence entre les noms de ClusterFaultDomain et de siteOverride empêche l’application de siteOverride.

Les propriétés que vous pouvez définir pour un siteOverride spécifique sont les suivantes : 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 siteOverrides à votre intention, exécutez :

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

Étape 6 : Activer espaces de stockage direct

Après avoir créé le cluster, utilisez l’applet Enable-ClusterStorageSpacesDirect de commande, qui active espaces de stockage direct et effectuez automatiquement les opérations suivantes :

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

  • Créez 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éez 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.

  • Configurez les caches de espaces de stockage direct : S'il existe plusieurs types de supports de stockage (lecteurs) disponibles pour espaces de stockage direct, celui-ci utilise le type le plus rapide comme périphérique de cache, pour la lecture et l’écriture dans la plupart des cas.

  • Créer des niveaux : Crée deux niveaux en tant que 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 seul serveur et configure automatiquement FaultDomainAwarenessDefault en tant que PhysicalDisk pendant l’activation.

Pour les clusters étendus, la cmdlet Enable-ClusterStorageSpacesDirect effectue également :

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

La commande suivante active espaces de stockage direct sur un cluster à plusieurs nœuds. Vous pouvez également spécifier un nom convivial pour un pool de stockage, comme indiqué 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