Prérequis
- Vous avez besoin du rôle Hyper-V installé sur 2 nœuds Windows (intégré gratuitement dans toutes les versions de Windows incluant les versions Windows pour PC).
- Vous devez avoir vos applications critiques installées dans une ou plusieurs machines virtuelles.
- Comme le script de basculement importe la machine virtuelle sur l'Hyper-V secondaire, faites attention aux paramètres Hyper-V et à la compatibilité du processeur entre les 2 nœuds.
Installation du package sous Windows
-
Téléchargez la version gratuite de SafeKit sur 2 nœuds Windows.
Remarque : la version gratuite inclut toutes les fonctionnalités de SafeKit. À la fin de l'essai, vous pouvez activer des clés de licence permanentes sans désinstaller le package.
-
Pour ouvrir le pare-feu Windows, sur les deux nœuds démarrez un powershell en tant qu'administrateur et tapez
c:/safekit/private/bin/firewallcfg add
-
Pour initialiser le mot de passe de l'utilisateur admin par défaut de la console, sur les deux nœuds démarrez un powershell en tant qu'administrateur et tapez
c:/safekit/private/bin/webservercfg.ps1 -passwd mdp
- Utilisez des caractères alphanumériques pour le mot de passe (pas de caractères spéciaux).
- mdp doit être le même sur les deux nœuds.
-
Exclure des analyses antivirus C:\safekit\ (le répertoire d'installation par défaut) et tous les dossiers répliqués que vous allez définir.
Les antivirus peuvent rencontrer des problèmes de détection avec SafeKit en raison de son intégration étroite avec le système d'exploitation, de ses mécanismes d'IP virtuelle, de sa réplication en temps réel et du redémarrage de services critiques.
Installation du module sous Windows
-
Téléchargez le module hyperv.safe.
Le module est gratuit. Il contient les fichiers userconfig.xml et les scripts de redémarrage.
- Mettez hyperv.safe sous C:\safekit\Application_Modules\generic\.
La configuration Hyper-V est présentée avec une machine virtuelle nommée VM1
et contenant l'application à redémarrer en cas de panne.
Vous devrez répéter cette configuration pour toutes les VM que vous souhaitez répliquer et redémarrer. SafeKit prend en charge jusqu'à 32 machines virtuelles.
1. Prérequis
Les fichiers de la machine virtuelle VM1 (fichier de configuration de VM1, disque dur virtuel...) doivent être placés dans un même dossier : ce dossier sera répliqué par SafeKit.
Assurez-vous que le ou les noms des switchs virtuels référencés par la machine virtuelle existent sur les deux serveurs Hyper-V et correspondent au même réseau physique.
Si tous les fichiers de VM1 ne sont pas dans le même dossier, utilisez le gestionnaire Hyper-V :
- Exporter VM1 dans un dossier, par exemple dans D:\Repli-Hyper-V
- Cet export créera un dossier D:\Repli-Hyper-V\VM1\ contenant tous les fichiers de VM1
- Supprimer VM1 de l'inventaire du gestionnaire Hyper-V
- Importer VM1, précédemment exporté, dans le gestionnaire Hyper-V
VM1 ne doit être créé que sur un seul nœud. La seule chose à créer sur l'autre nœud est le répertoire de VM1 (D:\Repli-Hyper-V\VM1\).
2. Lancez la console SafeKit
- Lancez la console Web dans un navigateur sur un nœud du cluster en vous connectant à
http://localhost:9010
. - Entrez
admin
comme nom d'utilisateur et le mot de passe défini lors de l'installation.
Vous pouvez également exécuter la console dans un navigateur sur un poste de travail externe au cluster.
La configuration de SafeKit se fait sur les deux nœuds à partir d'un seul navigateur.
Pour sécuriser la console Web, consultez 11. Sécurisation du service web de SafeKit dans le Guide de l'utilisateur.
3. Configurer les adresses des nœuds
- Entrez les adresses IP des nœuds et appuyez sur la touche Tabulation pour vérifier la connectivité et remplir le nom des nœuds.
- Ensuite, cliquez sur
Save and apply
pour enregistrer la configuration.
Si le nœud 1 ou le nœud 2 a une couleur rouge, vérifiez la connectivité du navigateur aux deux nœuds et vérifiez le pare-feu sur les deux nœuds pour résoudre le problème.
Si vous le souhaitez, vous pouvez ajouter un nouveau LAN pour un deuxième heartbeat et pour un réseau de réplication dédié.
Cette opération placera les adresses IP dans le fichier cluster.xml
sur les deux nœuds (plus d'informations dans le training avec les lignes de commande).
5. Configurer le module
- Choisissez un démarrage
Automatic
du module au boot sans délai. - Normalement, vous disposez d'un seul réseau
Heartbeat
sur lequel la réplication est effectuée. Mais vous pouvez définir un réseau privé si nécessaire (en ajoutant un LAN à l'étape 3). - Mettez dans
VM_PATH
, le chemin racine du répertoire répliqué (D:\Repli-Hyper-V). - Entrez dans
VM_NAME
, le nom de la machine virtuelle (VM1).
Nous supposons que tous les fichiers VM1 se trouvent dans D:\Repli-Hyper-V\VM1\ (voir les prérequis). Ce répertoire sera répliqué en temps réel par SafeKit.
Les valeurs NORMAL_STOP
et FORCE_STOP
peuvent être "stop
", "save
" ou "off
":
- "
stop
" arrête la VM lorsque le module est arrêté. - "
save
" enregistre l'état actuel de la VM (suspension) lorsque le module est arrêté. - "
off
" éteint la VM (mise hors tension) lorsque le module est arrêté.
"stop
" est recommandé car il provoque l'arrêt puis le redémarrage de la VM lorsque le module est arrêté et redémarré. Ainsi, si l'application à l'intérieur de la VM échoue, elle est redémarrée.
Ce sera le cas, par exemple, lors du basculement entre les rôles principal et secondaire.
Vous n'avez pas besoin de configurer une adresse IP virtuelle. La VM1 sera redémarrée sur l'Hyper-V secondaire avec son adresse IP physique, et cette adresse IP sera reroutée.
6. Custom checker pour détecter un dysfonctionnement de la VM
Le custom checker envoie des messages de heartbeat de l'hôte à la VM à intervalles réguliers. C'est alors le travail du service Hyper-V Heartbeat installé dans la VM d'envoyer une réponse à chacun de ces messages de heartbeat.
Si le service Hyper-V Heartbeat ne répond pas au message (VM verrouillée, crashée ou a cessé de fonctionner), alors le custom checker exécute une action pour redémarrer la VM sur le même nœud Hyper-V ou sur l'autre.
- Cliquez sur
Checkers / Custom
(voir image). - Définissez simplement le nom de votre choix dans
Resource name
(exemple VM1).Resource name
identifie la machine virtuelle avec un nom de ressource dans SafeKit :custom.VM1
. - Avec
restart
dansAction
, la VM est redémarrée sur le même nœud Hyper-V. Après 3 redémarrages infructueux en 24 heures, le module hyperv SafeKit s'arrête sur le nœud primaire et il y a un basculement de la VM sur le nœud secondaire. - Si vous définissez
stopstart
dansAction
, il y a un basculement direct sur l'autre nœud Hyper-V dès que la VM ne répond plus aux heartbeats.
Pour la maintenance, si vous souhaitez arrêter la machine virtuelle, le custom checker la redémarrera automatiquement. Pour éviter cela, vous pouvez temporairement suspendre le checker. Ou vous pouvez le supprimer en cliquant sur Advanced configuration
(bouton en haut de la configuration).
7. Modifier les scripts (facultatif)
- Ne modifiez pas les scripts.
11. Démarrez le nœud avec des données à jour
- Si le nœud 1 possède le répertoires répliqué
VM1/
à jour, sélectionnez-le et démarrez-le en tant que primaireAs primary
.
Lorsque le nœud 2 sera démarré, toutes les données seront copiées du nœud 1 vers le nœud 2.
Si vous faites le mauvais choix, vous courez le risque de synchroniser des données obsolètes sur les deux nœuds.
Il est également supposé que VM1
est arrêtée sur le nœud 1 afin que SafeKit installe les mécanismes de réplication puis démarre VM1
dans le script start_prim
.
Utilisez Start
pour les démarrages suivants : SafeKit retient le serveur le plus à jour. Le démarrage As primary
est un démarrage spécial la première fois ou lors d'opérations exceptionnelles.
12. Attendez le passage à ALONE (vert)
- Le nœud 1 doit atteindre l'état ALONE (vert), ce qui signifie que le script
start_prim
a été exécuté sur le nœud 1.
Si ALONE (vert) n’est pas atteint ou si VM1 n'est pas démarrée, analysez pourquoi avec le journal du module du nœud 1.
- cliquez sur l'icône « journal » de
node1
pour ouvrir le journal du module et recherchez des messages d'erreur tels qu'un checker détectant une erreur et arrêtant le module. - cliquez sur
start_prim
dans le journal : les messages de sortie du script sont affichés à droite et des erreurs peuvent être détectées comme VM1 mal démarrée.
Si le cluster est dans l'état WAIT (rouge) not uptodate, STOP (rouge) not upodate
, arrêtez le nœud WAIT et forcer son démarrage en tant que primaire.
13. Démarrer le nœud 2
- Démarrez le nœud 2 avec son menu contextuel.
- Attendez l'état SECOND (vert).
Le nœud 2 reste dans l'état SECOND (orange) lors de la resynchronisation des répertoires répliqués (copie du nœud 1 vers le nœud 2).
Cela peut prendre un certain temps en fonction de la taille des fichiers à resynchroniser dans les répertoires répliqués et de la bande passante du réseau.
Pour voir la progression de la copie, consultez le log du module et les ressources de réplication du nœud 2.
Lorsque vous utilisez des disques de différenciation Hyper-V, seul le disque de différenciation doit être resynchronisé après la synchronisation initiale, ce qui permet de gagner du temps pour les disques durs virtuels volumineux.
15. Tests
- Arrêtez le nœud PRIM en faisant défiler son menu contextuel et en cliquant sur
Stop
. - Vérifiez qu'il y a un basculement sur le nœud 2 qui doit devenir ALONE (vert).
- Vérifiez avec le gestionnaire Hyper-V que VM1 s'exécute sur le nœud 2.
Si ALONE (vert) n’est pas atteint sur le nœud 2 ou si VM1 n'est pas démarrée, analysez pourquoi avec le journal du module du nœud 2.
- cliquez sur l'icône « journal » de
node2
pour ouvrir le journal du module et recherchez des messages d'erreur tels qu'un checker détectant une erreur et arrêtant le module. - cliquez sur
start_prim
dans le journal : les messages de sortie du script sont affichés à droite et des erreurs peuvent être détectées comme VM1 mal démarrée.
Comme le script start_prim
importe la machine virtuelle sur le nœud 2, le basculement peut échouer à cause des paramètres Hyper-V (voir cet article).
Si tout va bien, lancez un démarrage du noeud 1, qui resynchronisera les répertoires répliqués depuis le noeud 2.
Si les choses vont mal, arrêtez le noeud 2 et forcez le démarrage en tant que primaire du noeud 1, qui redémarrera avec ses données localement saines au moment de l'arrêt.
16. Redémarrage automatique en cas de panne d'un service critique dans la VM
Si vous souhaitez un redémarrage ou un basculement automatique lorsqu'un service critique à l'intérieur de la VM tombe en panne, vous pouvez configurer les propriétés de récupération du service (voir image).
Vous devez d'abord configurer le custom checker décrit précédemment.
Et puis dans Microsoft Service Manager à l'intérieur de la VM, sélectionnez votre service critique et dans la propriété de récupération du service, il vous suffit de configurer le shutdown de la VM en cas de panne du service critique.
Pour cela, dans les options de Recovery de votre service critique, choisissez "Run a program" en cas de panne et dans les options de Run program, définissez "C:\Windows\System32\shutdown.exe" et dans "Command line parameters", définissez /s /c "service fails".
Bien sûr, vous pouvez mettre en œuvre une récupération plus subtile avec vos propres scripts. Mais sachez simplement que l'arrêt de la VM activera le custom checker dans l'hôte. Le custom checker détectera que le heartbeat Hyper-V ne répond plus et redémarrera la VM sur le même serveur Hyper-V ou effectuera un basculement sur l'autre serveur Hyper-V (en fonction de sa configuration).
Pour tester la fonctionnalité, utilisez le Gestionnaire des tâches et supprimez le processus (End task) associé au service critique. Un arrêt propre du service via Service Manager ou la commande "net stop" ne déclenche pas l'action de récupération dans Windows Service Manager.
18. Support
- Pour obtenir du support, prenez deux
snapshots
SafeKit (deux fichiers .zip), un pour chaque nœud. - Si vous avez un compte sur https://support.evidian.com, téléchargez-les dans l'outil call desk.
19. Si nécessaire, configurez un checker splitbrain
- Voir ci-dessous "Quels sont les différents scénarios en cas d'isolement réseau dans un cluster ?" pour savoir si vous devez configurer un checker splitbrain.
- Allez dans la configuration du module et cliquez sur
Checkers / Splitbrain
(voir image) pour modifier les paramètres du splitbrain. Enregistrez et appliquez
la nouvelle configuration pour la redéployer sur les deux nœuds (le module doit être arrêté sur les deux nœuds pour enregistrer et appliquer).
Paramètres :
Resource name
identifie le témoin avec un nom de ressource :splitbrain.witness
. Vous pouvez modifier cette valeur pour identifier le témoin.Witness address
est l'argument du ping lorsqu'un nœud passe de PRIM à ALONE ou de SECOND à ALONE. Changez cette valeur avec l'IP du témoin (un élément robuste, typiquement un routeur).- Remarque : vous pouvez définir plusieurs adresses IP séparées par des espaces. Attention, les adresses IP doivent être accessibles depuis un nœud mais pas depuis l'autre en cas d'isolement du réseau.
Un seul réseau
Lorsqu'il y a un isolement réseau, le comportement par défaut est :
- comme les heartbeats sont perdus pour chaque nœud, chaque nœud passe en ALONE et exécute l'application avec son adresse IP virtuelle (double exécution de l'application modifiant ses données locales),
- lorsque l'isolement est réparé, un nœud ALONE est obligé de s'arrêter et de resynchroniser ses données depuis l'autre nœud,
- à la fin, le cluster est PRIM-SECOND (ou SECOND-PRIM selon la détection d'adresse IP virtuelle en double faite par Windows).
Deux réseaux avec un réseau de réplication dédié
Lorsqu'il y a un isolement réseau, le comportement avec un réseau de réplication dédié est :
- un réseau de réplication dédié est implémenté sur un réseau privé,
- les heartbeats sur le réseau de production sont perdus (réseau isolé),
- les heartbeats sur le réseau de réplication fonctionnent (réseau non isolé),
- le cluster reste à l'état PRIM/SECOND.
Un seul réseau et un checker split-brain
Lorsqu'il y a un isolement du réseau, le comportement avec un split-brain checker est :
- un split-brain checker a été configuré avec l'adresse IP d'un témoin (typiquement un routeur),
- le split-brain agit lorsqu'un serveur passe de PRIM à ALONE ou de SECOND à ALONE,
- en cas d'isolement du réseau, avant de passer en ALONE, les deux nœuds testent l'adresse IP,
- le nœud qui peut accéder à l'adresse IP passe à ALONE, l'autre passe à WAIT,
- lorsque l'isolement est réparé, le nœud WAIT resynchronise ses données et devient SECOND.
Remarque : Si le témoin est en panne ou déconnecté, les deux nœuds passent à WAIT et l'application n'est plus en cours d'exécution. C'est pourquoi vous devez choisir un témoin robuste comme un routeur.