Mettre en place un stockage distribué avec S2D et Cluster de basculement en Core
Introduction
L'idée ici, c'est de mettre en place un espace de stockage distribué avec S2D.
(un volume D: par exemple, qui hébergera des partages pour des utilisateurs, ou des VM ou autre...).
Les données sont ainsi recopiées sur plusieurs serveurs simultanément.
En plus de cela, nous allons mettre en place la tolérance aux pannes avec un cluster de basculement.
Si l'un des serveurs du cluster tombe, un autre noeud doit prendre le relai et les données doivent ainsi être automatiquement disponibles à nouveau. (En gros, le volume D: doit remonter sur un autre serveur).
Les usagers ne voient généralement rien (peut-être une coupure de quelques secondes... et encore).
Pour utiliser S2D, il faut 2 serveurs minimum, 16 au maximum.
Chaque serveur doit disposer d'au moins 3 supports de stockage :
- un pour le système
- au moins 2 autres pour S2D (ça ne fonctionnera pas si vous ne disposez que d'un seul support de stockage pour S2D)
Considérations importantes
S2D est relativement facile à mettre en place sur des VM sous Hyper-V (dans des conditions 'basiques' car on est vite bloqués côté perfs), mais est beaucoup plus complexe à mettre en place sur du matériel physique.
La liste des serveurs officiellement compatibles avec S2D peut être consultée sur le catalogue microsoft officiel, et il faut bien s'assurer que le matériel a en plus (des certifications microsoft) la certification SDDC (standard ou premium).
On peut toujours tricher si le matériel n'est pas compatible (faire passer des disques de montage RAID ou autre pour des SAS etc..), mais souvent au prix de nombreuses heures de recherche et de trituration du registre, et ce n'est pas garanti par microsoft en cas de pépin.
Techniquement, S2D n'est pas vraiment conçu pour du 'virtuel', mais bien pour du matériel physique... et c'est un petit problème.
Bien qu'il s'agisse d'une solution fiable et évolutive, elle soulève (tout du moins chez moi) des inquiétudes :
- 1) Le niveau d'abstraction et de complexité pour la restauration des données est un vrai soucis.. De plus, l'utilisation du flash a ses limites dans le temps... Gare à vous donc, si ne prenez pas immédiatement soin de remplacer l'unité de stockage défaillante, les pertes seraient catastrophiques à une vitesse folle.
- 2) La configuration sur du matériel physique est infiniment plus complexe que ce que nous allons voir ici.. Sur du physique, il faut gérer les disques dits de capacité (stockage) et les disques de cache... Il y a des contraintes à respecter dans tous les sens ! Sans parler de la configuration du cluster de basculement, qui lui aussi exigera des disques pour le quorum etc...
Restons simple donc pour cette première approche : au diable le quorum et le cache pour commencer !
Configuration matérielle requise
POUR CHACUN DE NOS 3 SERVEURS (futurs nœuds de notre cluster) :
- 1 support de stockage pour le système (stockage dynamique de 127Go par défaut sur Hyper-V, ça convient très bien)
- 2 (au moins) supports de stockage pour le stockage S2D (stockage dynamique de 200Go (ou 150Go) sur Hyper-V. Nous avons besoin d'une taille différente de celle du disque système pour plus de commodité)
Notez que sur du matériel physique, les supports de stockages dévolus à S2D doivent être les mêmes modèles, même marque ! ça évite quelques ennuis.
Architecture du laboratoire
Soient 6 ordinateurs : 'C1', 'C2', 'C3', 'DC', 'CLIENT' et 'PAREFEU'
- C1 est un serveur Windows 2022 Datacenter Desktop/Core
- C2 est un serveur Windows 2022 Datacenter Desktop/Core
- C3 est un serveur Windows 2022 Datacenter Desktop/Core
- DC est un serveur Windows 2022 Datacenter Desktop/Core
- CLIENT est un client Windows 11 Pro
- PAREFEU est un pare-feu IpFire/Pfsense/OPNsense... ce que vous voulez, on s'en fiche.
Les conditions et pré-requis :
- C1 n'a qu'une seule interface réseau et a pour IP : 10.10.10.110
- C2 n'a qu'une seule interface réseau et a pour IP : 10.10.10.120
- C3 n'a qu'une seule interface réseau et a pour IP : 10.10.10.130
- DC n'a qu'une seule interface réseau et a pour IP : 10.10.10.200
- CLIENT n'a qu'une seule interface réseau et a pour IP : 10.10.10.10
- PAREFEU n'a qu'une seule interface réseau et a pour IP : 10.10.10.1
- Dans les paramètres des ordinateurs nœuds (C1, C2 et C3) vous devez désactiver la mémoire dynamique et attribuer au moins 2 cœurs CPU virtuels.
(Suivant la puissance de votre hôte, il faudra sûrement raquer un peu côté RAM sur les serveurs Windows... (Ou bien, faîtes des nœuds en Core !)) - Tous ces ordinateurs sont sur le réseau ('LAN') 10.10.10.0/24 et peuvent communiquer entre eux (ping)
- Leurs mises-à-jour sont faîtes.
- La passerelle du réseau 'LAN' vers internet est l'ordinateur PAREFEU, grâce à l'interface ayant pour IP 10.10.10.1
- DC est un contrôleur de domaine sur la forêt 'MONDOMAINE.LAN', on peut éventuellement s'en servir pour gérer le cluster.. mais ce n'est pas indispensable.
- Tous les ordinateurs, à l'exception de PAREFEU, sont membres du domaine MONDOMAINE.LAN géré par DC
C'est un pré-requis, comme l'adressage IP et les Hostname... oui, la préparation est longue dès qu'il s'agît de faire un truc sur Windows.
Un utilisateur Active Directory 'marcel.dublog' a été créé sur DC
'marcel.dublog' peut donc se connecter depuis l'ordinateur CLIENT.
A l'issue du tuto, je vous laisserai créer un partage SMB pour cet utilisateur, stocké sur le volume S2D créé, afin qu'il puisse stocker ses données, et vous pourrez alors bousiller un nœud pour voir ce qui se passe.
Avertissement
La configuration d'S2D est particulièrement intolérante aux errements.
Suivez chaque étape.
ETAPE 0 : Préparation des VM
1) Activer l'usurpation d'adresses MAC
On active l'usurpation d'adresses MAC dans les paramètres des VM pour C1, C2 et C3.
Dans les paramètres des VM, déroulez les spécificités de la carte réseau, vous trouverez l'option à cocher.
2) Activer la virtualisation imbriquée
On active la virtualisation imbriquée pour C1, C2 et C3
Pour rappel, sur l'hôte Hyper-V, on éteint toutes les VM, on ouvre PowerShell en tant qu'Administrateur puis on recherche les VM et on applique :
Get-VM
# Activer la virtualisation imbriquée sur toutes les VM :
$vmNames = @('C1', 'C2', 'C3')
# Parcourir chaque VM et activer l'extension de virtualisation
foreach ($vmName in $vmNames) {
Set-VMProcessor -VMName $vmName -ExposeVirtualizationExtensions $true
}
3) Authentification
Tout au long de la configuration, on se logue en tant qu'Administrateur du domaine sur toutes les machines pour plus de commodité : MONDOMAINE\Administrateur
Pour ceux qui feront la configuration via PowerShell, on le lance également en tant qu'Administrateur sur toutes les machines.
Je considère que C1, C2, C3 et CLIENT sont déjà dans le domaine, que leurs noms d'hôtes sont bons, leur configuration IP aussi et que les disques supplémentaires pour S2D ont bien été créé et ajouté sur les nœuds Cx
ETAPE 1 : Installation des rôles et fonctionnalités
Sur C1, C2 et C3, Installer :
- le rôle Hyper-V
- le rôle de serveur de fichier (logiquement, c'est déjà coché sur DC puisque vous avez l'AD)
- la fonctionnalité de cluster de basculement
En PowerShell, ça donne :
Install-WindowsFeature -Name Failover-Clustering, FS-FileServer -IncludeManagementTools
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
ETAPE 2 : Création du cluster et activation de S2D
Créer le cluster
Sur C1, Aller dans le gestionnaire de serveurs, Outils, gestionnaire de cluster de basculement :
- Créer le cluster en passant toutes les étapes de validation ET DECOCHER LA CASE AJOUTANT TOUT LE STOCKAGE DISPONIBLE AU CLUSTER !!
- Donner au cluster le nom de 'S2DCluster' et l'IP : 10.10.10.210
En PowerShell, ça donne :
Test-Cluster -Node C1,C2,C3
New-Cluster -Name S2DCluster -Node C1,C2,C3 -NoStorage -StaticAddress 10.10.10.210
Activer S2D
Sur C1, Activer S2D :
Là par contre, pas le choix, c'est en PowerShell :
Enable-ClusterS2D
(répondre 'O' - Oui)
(Un message vous annonce qu'aucun disque pour le cache n'est trouvé sur aucun nœud, c'est normal, et on ne peut rien y faire avec des VM Hyper-V (à ma connaissance.. mais je serais ravi qu'on m'expliquer comment faire... ni le marquage comme disque Journal ou le forçage n'ont fonctionné chez moi))
Un pool S2D, regroupant tous nos supports de stockages dévolus à S2D a été créé.
Il faut maintenant créer un disque virtuel sur ce pool, puis un volume.
Créer le disque virtuel
Sur C1, créer le disque virtuel sur le Pool créé.
Aller dans le gestionnaire de serveurs, cliquer sur Services de fichiers et de stockage, Pools de Stockage, Clic-droit sur notre pool S2D, Nouveau disque virtuel.
- Le nommer 'S2D_VDISK'
- Choisissez le miroir et une recopie triple (puisqu'il y a 3 serveurs).
Parfois l'assistant de création d'un volume se lance, parfois pas, si ce n'est pas le cas, aller dans Disques, clic-droit sur le disque, Nouveau Volume, le nommer 'DATA_S2D' ou 'PARTAGES_S2D' ...
Le volume se monte.
En PowerShell, ça donne :
Créer le disque virtuel S2D_VDISK
New-VirtualDisk -StoragePoolFriendlyName 'S2D on S2DCluster' -FriendlyName 'S2D_VDISK' -ResiliencySettingName Mirror -NumberOfDataCopies 3 -UseMaximumSize -ProvisioningType Fixed
Créer le volume et le formater...
(oui là, c'est un peu plus compliqué lol..)
(il faut mettre le disque en mode maintenance etc..)
$labelLecteur = 'DATA_S2D'
$VirtualDisk = Get-VirtualDisk -FriendlyName 'S2D_VDISK' -ErrorAction Stop
$disk = $VirtualDisk | Get-Disk
$ClusterDisk = Get-ClusterResource | Where-Object { $_.ResourceType -eq 'Physical Disk' -and $_.Name -like '*S2D_VDISK*' }
# Vérifier le disque de cluster trouvé
if ($ClusterDisk) {
# Mettre le disque en mode de maintenance
Suspend-ClusterResource -Name $ClusterDisk.Name
# Formater le disque
$partition = $disk | New-Partition -AssignDriveLetter -UseMaximumSize
$partition | Format-Volume -FileSystem ReFS -NewFileSystemLabel '$labelLecteur' -Confirm:$false
# Sortir le disque du mode de maintenance
Resume-ClusterResource -Name $ClusterDisk.Name
} else {
Write-Error 'Le disque de cluster n''a pas été trouvé.'
}
Conclusion
Vous disposez maintenant d'un cluster de basculement avec stockage distribué S2D fonctionnel.
Le volume créé est accessible sur tous les nœuds et les données sont répliquées automatiquement entre les serveurs pour assurer la haute disponibilité.
Vous pouvez maintenant créer un partage SMB pour l'utilisateur marcel.dublog et tester la tolérance aux pannes en arrêtant un des nœuds.
↑ Haut de page