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 :

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) :

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'

Les conditions et pré-requis :

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 :

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 :

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.

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.


⬆️ Retour en haut de la page