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)
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 !
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.
Soient 6 ordinateurs : 'C1', 'C2', 'C3', 'DC', 'CLIENT' et 'PAREFEU'
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.
La configuration d'S2D est particulièrement intolérante aux errements.
Suivez chaque étape.
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.
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
}
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
Sur C1, C2 et C3, Installer :
Install-WindowsFeature -Name Failover-Clustering, FS-FileServer -IncludeManagementTools
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
Sur C1, Aller dans le gestionnaire de serveurs, Outils, gestionnaire de cluster de basculement :
Test-Cluster -Node C1,C2,C3
New-Cluster -Name S2DCluster -Node C1,C2,C3 -NoStorage -StaticAddress 10.10.10.210
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.
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.
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é.'
}
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.