Rechercher sur SafeKit

Haute disponibilité K3S avec SafeKit : Installez le module k3s.safe pour le basculement

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

Ce guide explique comment configurer un cluster mirror pour Kubernetes à 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 k3s.safe préconfiguré.

3. Configuration

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

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/Kubernetes

La solution est décrite ici : 💡 Haute disponibilité Kubernetes K3s : réplication synchrone et basculement à 2 nœuds

Installation et configuration de la solution SafeKit/Kubernetes sous Linux (k3s.safe)

1. Télécharger les paquets

  • Téléchargez la version gratuite de SafeKit 8.2 sur Linux (safekitlinux_xx.bin)
  • Téléchargez le module Linux k3s.safe
  • Téléchargez le script k3sconfig.sh
  • Documentation (pptx)

Remarque : le script k3sconfig.sh installe K3S, MariaDB, NFS et SafeKit sur 2 nœuds Linux Ubuntu 24.04.

Télécharger SafeKit (Linux) >

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

Télécharger k3sconfig.sh >

Documentation (pdf) >

2. D’abord sur les deux nœuds

Sur 2 nœuds Linux Ubuntu 24.04, en tant que root :

  • Assurez-vous que le nœud a accès à Internet (éventuellement via un proxy)
  • Copiez k3sconfig.sh, k3s.safe et le package safekit_xx.bin dans un répertoire et accédez-y avec cd
  • Renommez le fichier .bin en « safekit.bin »
  • Assurez-vous k3sconfig.sh et safekit.bin sont exécutables.
  • Modifiez le script k3sconfig.sh et personnalisez les variables d’environnement en fonction de votre environnement (y compris une adresse IP virtuelle)
  • Exécutez sur les deux nœuds : ./k3sconfig.sh prereq

Le script va :

  • Installez les paquets Debian requis : alien, nfs-kernel-server, nfs-common, mariadb-server
  • Installation sécurisée de MariaDB
  • Créer des répertoires pour la réplication de fichiers
  • Préparer le serveur NFS pour le partage des répertoires répliqués
  • Installer SafeKit

3. Sur le premier nœud

Exécutez sur le premier nœud : ./k3sconfig.sh first

Le script va :

  • Créer la base de données de configuration K3S et l’utilisateur k3s
  • Créez le fichier de volume de stockage répliqué (fichier éparse) et formatez-le en tant que système de fichiers xfs
  • Créez la configuration du cluster safekit et appliquez-la
  • Installez et configurez le module k3s.safe sur le cluster
  • Démarrez le module k3s en tant que « prim » sur le premier nœud
  • Télécharger, installer et démarrer k3s
  • Téléchargez et installez le graphique Helm nfs-subdir-external-provisioner
  • Afficher le jeton K3S (à utiliser pendant la deuxième phase d’installation du nœud)

4. Sur le deuxième nœud

Exécutez sur le deuxième nœud : ./k3sconfig.sh second <token>

  • est la chaîne affichée à la fin de l’exécution de « k3sconfig.sh first » sur le premier nœud

Le script va :

  • Assurez-vous que le module k3s est démarré en tant que prim sur le premier nœud
  • Installez k3s sur le deuxième nœud
  • Démarrer le module k3s

5. Vérifiez que le module k3s SafeKit est en cours d’exécution sur les deux nœuds

Vérifiez avec cette commande sur les deux nœuds : /opt/safekit/safekit –H "*" state

La réponse devrait être similaire à l’image.

/opt/safekit/safekit –H "*" state
---------------- Serveur = http://10.0.0.20:9010 ----------------
action admin = exécution
--------------------- État de k3s ---------------------

  Local (127.0.0.1) : PRIM (Service : Disponible) (Couleur : Vert)
Succès
---------------- Serveur = http://10.0.0.21:9010 ----------------
action admin = exécution
--------------------- État de k3s ---------------------

  Local (127.0.0.1) : SECOND (Service : Disponible) (Couleur : Vert)
Succès

6. Démarrez la console web SafeKit pour administrer le cluster

  • Connectez un navigateur à l’URL de la console web SafeKit http://server0-IP:9010.
  • Vous devriez voir une page similaire à l’image.
  • Vérifiez avec les lignes de commande Linux que K3S est démarré sur les deux nœuds (démarré dans start_prim et start_second) et que MariaDB est démarré sur le nœud principal (démarré dans start_prim).

Le cluster Kubernetes a démarré dans la console web SafeKit

7. 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).
  • Et avec les lignes de commande sur Linux, vérifiez le basculement des services (arrêtés sur le nœud 1 dans le script stop_prim et démarrés sur le nœud 2 dans le script start_prim). MariaDB et K3S devraient s’exécuter sur node2.

Avertissement

Si ALONE (vert) n’est pas atteint sur node2, analysez la raison à l’aide du journal du module du nœud 2.

  • Cliquez sur node2 pour afficher le journal du module.
  • Exemple de journal de module SQL Server où le nom du service dans start_prim n’est pas valide. Le processus sqlserver.exe est surveillé, mais comme il n’est pas démarré, le module s’arrête à la fin.

Avertissement

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 démarrage du node1 en tant que primaire, qui redémarrera avec ses données localement saines au moment de l’arrêt.

Remarque

🛠️ Plus d’informations sur les tests dans le guide de l’utilisateur.

Arrêtez le module sur le serveur PRIM

8. Essayez le cluster avec une application Kubernetes comme WordPress

Vous avez l’exemple d’une installation WordPress dans l’image : un portail web avec une base de données back-end implémentée par des pods.

Vous pouvez déployer votre propre application de la même manière.

WordPress est automatiquement hautement disponible :

  • avec ses données (php + base de données) dans des volumes persistants répliqués en temps réel par SafeKit
  • avec une adresse IP virtuelle pour accéder au site WordPress pour les utilisateurs
  • avec basculement automatique et failback automatique

Remarques :

  • Le graphique WordPress définit un service à charge équilibrée qui écoute sur les ports <service.port> et <service.httpsport>.

  • WordPress est accessible via l’URL suivante : http://<virtual-ip>:<service.port>.

  • L’IP virtuelle est gérée par SafeKit et bascule automatiquement en cas de reprise après sinistre.

  • Par défaut, K3S implémente des équilibreurs de charge avec Klipper.

  • Klipper écoute sur : <service.port> et achemine les paquets TCP/IP vers l’adresse IP et le port du pod WordPress qu’il a sélectionné.

    $ export KUBECONFIG= /etc/rancher/k3s/k3s.yaml $ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm install my-release bitnami/wordpress –set global.storageClass=nfs-client –set service.ports.http=8099,service.ports.https=4439

La commande helm précédente doit télécharger l’image WordPress à partir de registry-1.docker.io. Vous pouvez rencontrer des problèmes d’authentification sur registry-1.docker.io. Dans ce cas, vous devez :

  • Créez /etc/rancher/k3s/registries.yaml sur les deux nœuds avec le contenu suivant :

    configs:
      "registry-1.docker.io":
        auth:
          username: your_user_name
          password: your_password
        tls:
          insecure_skip_verify: true
    
  • Arrêtez et démarrez k3s pour en tenir compte, avec systemctl stop k3s et systemctl start k3s.

  • Exécutez la commande helm registry login -u your_user_name docker.io, puis saisissez votre mot de passe

9. Assistance

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

Remarque

🛠️ Dépannage dans le guide de l’utilisateur.

Prenez les instantanés pour obtenir de l’aide

10. Si nécessaire, configurez un checker split-brain

  • Consultez la section ci-dessous « Quels sont les différents scénarios en cas d’isolement du réseau dans un cluster ? » pour savoir si vous devez configurer un checker split-brain.

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

  • Déclarez le checker split-brain en l’ajoutant dans la section <check> de userconfig.xml :

    <service>
     ...
     <check>
      ...
      <splitbrain ident="witness" exec="ping" arg="witness IP"/>
     </check>
    
  • 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).

Paramètres :

  • ident="witness" identifie le témoin avec un nom de ressource : splitbrain.witness. Vous pouvez modifier cette valeur pour identifier le témoin.
  • exec="ping" fait référence au code de ping à exécuter. Ne modifiez pas cette valeur.
  • arg="witness IP" est un argument pour le ping. Modifiez cette valeur avec l’IP du témoin (un élément robuste, généralement un routeur).

Saisissez les paramètres

Quels sont les différents scénarios en cas d’isolement du réseau dans un cluster ?

Un réseau unique

En cas d’isolement du réseau, le comportement par défaut est le suivant :

  • à mesure que les heartbeats sont perdus pour chaque nœud, chaque nœud passe à 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 forcé de s’arrêter et de resynchroniser ses données à partir de l’autre nœud,
  • à la fin, le cluster est PRIM-SECOND (ou SECOND-PRIM selon la détection d’adresse IP virtuelle dupliquée effectuée par Windows).

Deux réseaux avec un réseau de réplication dédié

En cas d’isolement du réseau, le comportement avec un réseau de réplication dédié est le suivant :

  • un réseau de réplication dédié est mis en œuvre 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 dans l’état PRIM/SECOND.

Un réseau unique et un checker split-brain

En cas d’isolement du réseau, le comportement avec un checker split-brain est le suivant :

  • un checker split-brain a été configuré avec l’adresse IP d’un témoin (généralement un routeur),
  • le checker split-brain s’exécute lorsqu’un serveur passe de PRIM à ALONE ou de SECOND à ALONE,
  • En cas d’isolement du réseau, avant de passer à 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.

Démonstration de la solution mirror SafeKit

Vidéo SafeKit : Clustering au niveau de l’application (8:47)

Dans cette vidéo, découvrez comment SafeKit implémente un cluster HA mirror sans la complexité d’un SAN. Bien que cette démonstration utilise Microsoft SQL Server, la solution fonctionne de manière identique pour d’autres bases de données et applications.

Chapitres

  1. 🎬 2 nœuds avec SQL Server (0:32)
  2. 🎬 Configurer le cluster et le module mirror.safe (3:58)
  3. 🎬 Démarrer et tester la réplication, la migration et le basculement SQL en cas de panne (4:17)

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