Rechercher sur SafeKit

Haute disponibilité KVM avec SafeKit : Installez le module kvm.safe pour le basculement

Guide d’installation rapide de la haute disponibilité pour KVM

Ce guide explique comment configurer un cluster mirror pour KVM à l’aide de SafeKit, assurant un basculement automatique et une réplication synchrone sans avoir besoin d’un stockage partagé.

Pour obtenir de l’aide, vous pouvez utiliser SafeKit AI 🤖.

1. Vue d’ensemble

  • Architecture : utilise un système à deux nœuds (principal/secondaire).
  • Protection des données : implémente la réplication synchrone en temps réel pour une perte de données nulle (RPO = 0).

2. Installation

  • Logiciel : Installez le moteur SafeKit sur les deux serveurs.
  • Module : Téléchargez le module d’application kvm.safe préconfiguré.

3. Configuration

  • Console Web : configurez les dossiers spécifiques contenant les fichiers KVM.
  • Surveillance : Commencez à surveiller et à protéger l’application KVM.

Limitations de la haute disponibilité SafeKit

Limite / ExigenceRaison et impactAlternative recommandée
Taille de la réplication : quelques ToTemps de resynchronisation après une défaillance (étape 3) :
• Réseau à 1 Gb/s ≈ 3 heures/To
• Réseau 10 Gb/s ≈ 1 heure/To (selon les performances d’écriture du disque)
• Utiliser un stockage partagé externe (plus coûteux, plus complexe).
Nombre de fichiers : < 1 000 000• Performance du temps de resynchronisation après une panne (étape 3).
• Temps nécessaire pour comparer chaque fichier entre les deux nœuds.
• Placez les nombreux fichiers à répliquer dans un disque dur virtuel/une machine virtuelle.
• Dans ce cas, seuls les fichiers représentant le disque dur virtuel ou la machine virtuelle seront répliqués et resynchronisés.
Capacité de basculement : ≤ 32 machines virtuelles• Chaque machine virtuelle s’exécute dans un module mirror indépendant.
• Maximum de 32 modules mirror fonctionnant sur le même cluster.
• Utiliser un stockage partagé externe et une autre solution de clustering de machines virtuelles (plus coûteuse et plus complexe).
Architecture réseau : réseau LAN/VLAN entre sites distants• Basculement automatique de l’adresse IP virtuelle avec 2 nœuds dans le même sous-réseau.
• Bonne bande passante pour la resynchronisation (étape 3).
• Faible latence pour la réplication synchrone : généralement < 5 ms RTT ; les valeurs plus élevées doivent être validées par rapport au taux d’écriture de l’application.
• Si les deux nœuds se trouvent dans des sous-réseaux différents (ce qui est courant dans le cloud), utilisez d’autres options de réacheminement : un équilibreur de charge, des CLI de fournisseur de cloud, BGP ou une redirection DNS.
• Utilisez des solutions de sauvegarde avec réplication asynchrone pour les réseaux à latence élevée.

Présentation de la solution SafeKit/KVM

La solution est décrite ici : 💡 Haute disponibilité simple Linux KVM sans stockage partagé

Installation de la solution SafeKit/KVM sous Linux (kvm.safe)

Prérequis

  • KVM installé sur 2 nœuds Linux.
  • Applications critiques installées dans une ou plusieurs machines virtuelles.
  • Maximum de 32 machines virtuelles par hôte KVM.
  • Les données répliquées sont limitées à quelques téraoctets. Au-delà, le temps de resynchronisation devient important.
  • Interconnexion d’au moins 1 Gb/s entre les nœuds (10 Gb/s recommandé pour une resynchronisation plus rapide).
  • Le basculement IP nécessite que les deux nœuds soient sur le même LAN ou LAN étendu (L2) — les réseaux L3 routés ne sont pas pris en charge (sauf avec les équilibreurs de charge 🛠️ cloud).

Installation de paquets sous Linux

  • Installez la version gratuite de SafeKit sur 2 nœuds Linux. Remarque : la version d’essai gratuite inclut toutes les fonctionnalités SafeKit. À la fin de la période d’essai, vous pouvez activer des clés de licence permanentes sans désinstaller le package.
  • Après le téléchargement du paquet safekit_xx.bin, exécutez-le pour extraire le rpm et le script safekitinstall, puis exécutez le script safekitinstall
  • Répondez oui à la configuration automatique du pare-feu
  • Définissez le mot de passe de la console Web et de l’utilisateur admin par défaut. Définissez le même mot de passe sur tous les nœuds.

Télécharger SafeKit (Linux) >

Installation du module sous Linux

  • Téléchargez le module kvm.safe.
    Le module est gratuit. Il contient les fichiers userconfig.xml et les scripts de redémarrage.
  • Placez kvm.safe dans /opt/safekit/Application_Modules/generic/.

Télécharger kvm.safe (Linux) >

Configuration pas à pas de la solution SafeKit/KVM

⚠️ La configuration KVM est présentée avec une machine virtuelle nommée VM1 et contenant l’application à redémarrer en cas de défaillance.

⚠️ Vous devrez répéter cette configuration pour toutes les machines virtuelles que vous souhaitez répliquer et redémarrer.

1. Prérequis

L’image de la machine virtuelle VM1 se trouve dans le fichier /var/lib/libvirt/images/vm1.qcow2. Avant de configurer SafeKit, vous devez effectuer la configuration suivante pour placer la machine virtuelle dans un répertoire spécifique à vm1 qui sera répliqué par SafeKit.

Sur le nœud 1 :

  • Arrêter vm1 :

    virsh shutdown vm1
    
  • Créez un répertoire vm1/ :

    mkdir -p /var/lib/libvirt/images/vm1/
    
  • Copiez l’image vm1 vers le nouvel emplacement :

    cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
    

L’image vm1 d’origine peut être supprimée dès que les tests avec le nouvel emplacement sont réussis.

  • Modifiez le fichier de configuration vm1 :

    EDITOR=vi virsh edit vm1
    

Et modifiez la ligne :

    <source file='/var/lib/libvirt/images/vm1.qcow2'>

par :

    <source file='/var/lib/libvirt/images/vm1/vm1.qcow2'>
  • Définissez l’option de cache sur « aucune » dans le même fichier, pour l’intégrité des données en cas de panne :

    <disk type='file' device='disk'> <driver name='qemu' type='qcow2' **cache='none'** />
    
  • Fermer le fichier de configuration vm1

  • Désactiver le démarrage automatique de vm1 :

    virsh autostart vm1 --disable
    
  • Créez un fichier de configuration vm1.xml pour vm1 :

    virsh dumpxml vm1 > vm1.xml
    

Sur le nœud 2 :

  • Copiez le fichier de configuration vm1.xml du nœud 1. Remarque : chaque fois que la configuration vm1 est modifiée sur le nœud 1, vous devez réappliquer la nouvelle configuration sur le nœud 2.

  • Créez vm1, mais ne la démarrez pas :

    virsh define vm1.xml
    
  • Désactiver le démarrage automatique vm1 :

    virsh autostart vm1 --disable
    
  • Créez le répertoire pour l’emplacement de l’image :

    mkdir -p /var/lib/libvirt/images/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.
  • Saisissez 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 s’effectue sur les deux nœuds à partir d’un seul navigateur.

ℹ️ Pour sécuriser la console web, consultez 🛠️ 11. Sécuriser le service web SafeKit dans le Guide de l’utilisateur.

Démarrez la console web SafeKit pour configurer le cluster KVM

3. Configurer les adresses des nœuds

  • Entrez les adresses IP des nœuds, appuyez sur la Tab key pour vérifier la connectivité et remplissez les noms des nœuds. Si node1 ou node2 est de couleur rouge, vérifiez la connectivité du navigateur aux deux nœuds et vérifiez le pare-feu sur les deux nœuds pour le dépannage 🛠️.
  • Cliquez ensuite sur Save and apply pour sauvegarder la configuration.
  • Vérifiez le message Success ✅ sur les deux nœuds.
  • Si l’ Failure de configuration ❌ se produit sur un nœud, ouvrez l’accordéon ▼ pour ce nœud et consultez les messages. Notez que vous pouvez utiliser l’IA SafeKit 🤖 pour obtenir de l’aide.

ℹ️ Si vous le souhaitez, vous pouvez ajouter un nouveau LAN and nodes (premier ➕) pour créer un deuxième heartbeat et un réseau de réplication dédié.

ℹ️ Si vous cliquez sur Advanced configuration, le fichier cluster.xml s’affiche. Ce fichier est automatiquement renseigné par la console et déployé sur les nœuds.

Saisissez les nœuds du cluster KVM

4. Sélectionnez un module

  • Dans New module, cliquez sur le module kvm.safe.

ℹ️ Dans la bannière bleue en haut, le nœud 🛜 node1 représente le nœud de connexion de la console. Ce nœud relaie les requêtes vers le node2 si nécessaire.

ℹ️ La console recherche xxx.safe dans le répertoire Application_Modules/generic/ sur le nœud de connexion (node1) si vous y avez placé un module lors de l’installation.

Choisissez le module pour KVM

5. Configurer le module

  • Choisissez le démarrage Automatic du module au démarrage sans délai.
  • Normalement, vous disposez d’un seul réseau Heartbeat sur lequel la réplication est effectuée. Cependant, vous pouvez définir un réseau privé si nécessaire (en ajoutant un LAN à l’étape 3).
  • Indiquez dans VM_PATH le chemin d’accès racine du répertoire répliqué (/var/lib/libvirt/images).
  • Saisissez VM_NAME, le nom de la machine virtuelle (vm1).

Nous supposons que les fichiers de la VM1 se trouvent dans /var/lib/libvirt/images/vm1/ (voir les prérequis). Ce répertoire sera répliqué en temps réel par SafeKit.

ℹ️ Vous n’avez pas besoin de configurer une adresse IP virtuelle. VM1 sera redémarrée sur l’ KVM secondaire avec son adresse IP physique, et cette adresse IP sera redirigée.

Saisissez les paramètres KVM

6. Vérificateur personnalisé pour détecter les dysfonctionnements de la machine virtuelle

Le vérificateur personnalisé vérifie si la MV est en cours d’exécution (avec la commande ’virsh domstate’). Si la MV n’est pas en cours d’exécution, le vérificateur personnalisé redémarre automatiquement la MV sur le même nœud KVM ou sur l’autre.

  • Cliquez sur Checkers / Custom (voir l’image).
  • Resource name identifie la machine virtuelle avec un nom de ressource dans SafeKit : custom.VM_NAME_check.
  • Avec restart en Action, la machine virtuelle est redémarrée sur le même nœud KVM. Après 3 redémarrages infructueux en 24 heures, le module SafeKit kvm s’arrête sur le nœud principal et il y a un basculement de la machine virtuelle sur le nœud secondaire.
  • Si vous définissez stopstart dans Action, un basculement direct s’effectue sur l’autre nœud KVM dès que la machine virtuelle n’est plus en cours d’exécution.

ℹ️ Pour la maintenance, si vous souhaitez arrêter la machine virtuelle, le vérificateur personnalisé la redémarrera automatiquement. Pour éviter cela, vous pouvez suspendre temporairement le vérificateur 🖼️. Ou vous pouvez le supprimer en supprimant la ligne de configuration dans la console.

Saisissez les paramètres du vérificateur personnalisé KVM

7. Modifier les scripts (facultatif)

  • Ne modifiez pas les scripts.

8. Chiffrement des communications (facultatif)

  • Conservez le chiffrement des communications entre les nœuds.

Chiffrement de la communication du module de l’ KVM

9. Enregistrer et appliquer

  • Save and apply la configuration et les scripts sur les deux nœuds.

Enregistrez et appliquez la configuration du module KVM

10. Vérifier la réussite de la configuration

  • Vérifiez le message Success ✅ sur les deux nœuds et cliquez sur Monitor modules.
  • Si l’ Failure de configuration ❌ se produit sur un nœud, ouvrez l’accordéon ▼ pour ce nœud et consultez les messages. Notez que vous pouvez utiliser l’IA SafeKit 🤖 pour obtenir de l’aide.

Vérifier la réussite de la configuration du module KVM

11. Démarrer le nœud avec des données à jour

  • Si le nœud 1 possède le répertoire répliqué à jour pour vm1/, sélectionnez-le et ⋯ Force start ▶ As 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 risquez 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 conserve le serveur le plus à jour. Démarrer As primary est un démarrage spécial la première fois ou lors d’opérations exceptionnelles.

Démarrez le nœud KVM en tant que nœud principal avec les données à jour

12. Attendez la transition vers 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é, analysez la raison avec le journal du module 🖼️ du nœud 1.

  • Cliquez sur l’icône de journal 🔍 du node1 pour ouvrir le journal du module et recherchez les messages d’erreur, tels qu’un vérificateur 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 les erreurs peuvent être détectées, comme le démarrage incorrect VM1.
  • Utilisez l’IA SafeKit 🤖 pour obtenir de l’aide concernant les messages du journal.

⚠️ Si le cluster est dans l’état WAIT (red) not uptodate, STOP (red) not uptodate, arrêtez le nœud WAIT et forcez son démarrage en tant que primaire 🖼️.

Le premier nœud KVM démarre en tant que primaire et devient ALONE

13. Démarrer le nœud 2

  • ⋯ Start le nœud 2 avec son menu contextuel.
  • Attendez le SECOND état (vert).

ℹ️

  • Le nœud 2 reste dans le SECOND état (orange) pendant la resynchronisation des répertoires répliqués (copie du nœud 1 vers le nœud 2).
  • Cette opération 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 journal du module 🖼️ et les ressources de réplication 🖼️ du nœud 2. Utilisez l’IA SafeKit 🤖 pour obtenir de l’aide concernant les messages du journal.

Démarrez le nœud 2 KVM

14. Vérifiez que le cluster est opérationnel

  • Vérifiez que le cluster est vert/vert, que VM1 s’exécute sur le nœud PRIM et qu’elle ne s’exécute pas sur le nœud SECOND.

Dans cet état, seules les modifications apportées aux fichiers sont répliquées en temps réel.

Le nœud KVM 2 est SECOND (vert)

15. Tests

  • Arrêtez le nœud PRIM en faisant défiler son menu contextuel vers le bas et en cliquant sur Stop.
  • Vérifiez qu’il y a un basculement sur le SECOND nœud qui devrait devenir ALONE (vert).
  • Vérifiez avec les outils KVM que VM1 s’exécute sur le nœud 2.

⚠️ Si ALONE (vert) n’est pas atteint sur node2 ou si VM1 n’est pas démarrée, analysez la raison avec le journal du module 🖼️ du nœud 2.

  • Cliquez sur l’icône de journal 🔍 du node2 pour ouvrir le journal du module et recherchez les messages d’erreur, tels qu’un vérificateur 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 les erreurs peuvent être détectées, comme le démarrage incorrect VM1.
  • Utilisez l’IA SafeKit 🤖 pour obtenir de l’aide concernant les messages du journal.

⚠️

  • Si tout est correct, lancez une synchronisation sur node1, ce qui resynchronisera les répertoires répliqués à partir node2.
  • Si les choses tournent mal, arrêtez node2 et forcez le nœud 1 à démarrer en tant que primaire 🖼️, qui redémarrera avec ses données localement saines au moment de l’arrêt.

ℹ️ Notez que vous disposez d’une 🕒 chronologie 🖼️ qui peut être utile pour comprendre ce qui se passe dans le cluster.

Arrêtez le module KVM sur le serveur PRIM

16. Si nécessaire, configurez un vérificateur de scission de cerveau

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 d’un ping lorsqu’un nœud passe de PRIM à ALONE ou de SECOND à ALONE. Modifiez cette valeur avec l’adresse IP du témoin (un élément robuste, généralement un routeur).
  • Remarque : vous pouvez définir plusieurs adresses IP séparées par des espaces. Notez que les adresses IP doivent être accessibles à partir d’un nœud, mais pas de l’autre en cas d’isolement du réseau.

Saisissez les paramètres de la fonction de détection de cerveau divisé KVM

17. Réplication des instantanés

Le répertoire qui contient les fichiers XML de l’instantané est :

/var/lib/libvirt/qemu/snapshot/%VM_NAME%

où VM_NAME est le nom de la machine virtuelle (vm1).

Remarque : Si aucune capture d’écran n’a été créée, créez-en une pour générer le répertoire (sinon la configuration SafeKit échouera).

Pour le reproduire :

  • Dans la configuration du module, cliquez sur Advanced Configuration (voir l’image) pour modifier le userconfig.xml.

  • Insérez les lignes ci-dessous dans la section <rfs> du fichier userconfig.xml :

    <replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only"> </replicated>
    
  • Save and apply la nouvelle configuration pour redéployer le fichier userconfig.xml modifié sur les deux nœuds (le module doit être arrêté sur les deux nœuds pour enregistrer et appliquer).

  • Créez des instantanés sur le nœud PRIM, soit via virt-manager, soit via une ligne de commande :

    virsh snapshot-create-as vm1 snapshot-name
    

Remarque : lorsque vous créez un instantané à l’aide d’une ligne de commande, vous devez actualiser l’affichage des instantanés dans virt-manager.

Les instantanés créés sur le nœud PRIM sont opérationnels sur le nœud 2 après le basculement, mais ne sont pas répertoriés sur le nœud 2.

  • Pour importer un instantané sur le nœud 2, vous devez exécuter la commande suivante :

    virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-name
    
  • La ligne de commande pour lister tous les instantanés de vm1 est :

    virsh snapshot-list vm1
    

Saisissez les paramètres KVM

18. Soutien

  • Pour obtenir de l’aide, prenez 2 Snapshots SafeKit (2 fichiers .zip), un pour chaque nœud.

ℹ️ Plus d’informations sur l’assistance ici.

Prenez des captures d’écran KVM pour obtenir de l’aide

Démonstration d’une solution de haute disponibilité au niveau des machines virtuelles

Vidéo SafeKit : Clustering au niveau des machines virtuelles avec Hyper-V (5:15)

Dans cette vidéo, découvrez comment SafeKit implémente la haute disponibilité pour Hyper-V sans la complexité d’un SAN. Apprenez à configurer la réplication de machines virtuelles sur deux nœuds pour assurer un basculement transparent pour vos charges de travail virtualisées critiques. Bien que cette démonstration utilise Hyper-V sous Windows, la solution fonctionne de manière identique avec KVM sur Linux.

Chapitres

  1. 🎬 Vue d’ensemble de l’architecture : 2 nœuds Hyper-V et 2 machines virtuelles (0:49)
  2. 🎬 Configuration du cluster et des modules hyperv.safe (1:59)
  3. 🎬 Test en direct : réplication, migration et basculement automatique de la VM en cas de panne (2:26)

Mise en œuvre étape par étape

🔍 Explorez SafeKit

Trouvez des informations sur les fonctionnalités, les architectures, les vidéos, la documentation et l’essai gratuit de SafeKit.

RessourceDescriptionLien
Caractéristiques principalesDécouvrez pourquoi SafeKit est une solution de haute disponibilité simple et économique.Découvrez les fonctionnalités clés
Cas d’utilisationDécouvrez comment SafeKit assure la disponibilité des applications et des infrastructures critiques.Explorez les cas d’utilisation
Modèle de déploiementSafeKit assure une haute disponibilité sans SAN ni stockage partagé.Explorez le modèle de déploiement
Stratégies de haute disponibilitéComparez la haute disponibilité des machines virtuelles avec la haute disponibilité des applications.Comparez les deux stratégies
Spécifications techniquesConsultez les exigences et les limitations techniques des clusters SafeKit.Lisez les spécifications techniques
VidéosRegardez des démonstrations de la configuration de SafeKit et du basculement automatique.Regardez les vidéos techniques
ArchitectureDécouvrez comment le cluster mirror réplique les fichiers en temps réel et gère le basculement.Découvrez l’architecture Mirror
ArchitectureDécouvrez comment le cluster farm équilibre le trafic réseau et gère le basculement.Découvrez l’architecture Farm
Comparaison de produitsComparez SafeKit aux clusters de haute disponibilité.Comparer les solutions
Ressources techniquesTrouvez la documentation technique, téléchargez SafeKit et accédez à la version d’essai gratuite.Accéder à la documentation et à l’essai gratuit
Modules d’applicationUtilisez les modules SafeKit préconfigurés pour configurer la haute disponibilité de vos applications.Explorez les modules de l’application
SafeKit AI Chat SafeKit AI