shapesDocker et Keepalived

📝 Introduction

Une architecture informatique est hautement disponible lorsqu'elle est conçue pour répondre à deux enjeux majeurs :

  1. Tolérance aux pannes : Assurer la continuité des services en cas de défaillance d’un ou plusieurs composants (matériels ou logiciels).

  2. Gestion des charges : Supporter un grand nombre de requêtes sans interruption.

Dans ce guide, nous explorons la mise en place d'une solution de haute disponibilité au niveau des services réseau à l'aide de Docker Swarm et Keepalived. Vous apprendrez à configurer un cluster Swarm et à gérer une adresse IP flottante avec Keepalived, garantissant une redondance efficace.


🚀 Pré-requis

Avant de commencer, assurez-vous d’avoir :

  • Trois machines virtuelles ou serveurs physiques configurés avec des adresses IP statiques.

  • Docker installé sur chaque nœud.

  • VMware comme driver pour Docker Machine.

Configuration des nœuds Docker

Exemple de commandes pour créer vos trois nœuds avec Docker Machine et VMware :

docker-machine create --driver vmware node1
docker-machine create --driver vmware node2
docker-machine create --driver vmware node3

Pour vérifier les machines créées :

Sortie attendue :


📡 Initialisation du cluster Docker Swarm

🖥️ Connexion au nœud manager

Le cluster Docker Swarm est initialisé depuis le nœud manager. Connectez-vous à node1 :

🚀 Initialisation du Swarm

Sur node1, exécutez la commande suivante pour initialiser le Swarm. L’adresse utilisée doit être celle de node1 sur le réseau (vous pouvez la vérifier avec docker-machine ip node1) :

  • Explication :

    • --advertise-addr : Spécifie l’adresse IP utilisée pour communiquer avec les autres nœuds.

Résultat attendu :


➕ Ajout des nœuds workers

🔗 Récupération du token

Le Swarm génère un token permettant aux autres nœuds de rejoindre le cluster. Pour l’obtenir, exécutez sur node1 :

Cette commande affiche une autre commande à exécuter sur les workers (node2 et node3).

🤝 Connexion des workers

Sur chaque worker, connectez-vous et exécutez la commande donnée par docker swarm join-token :

Sur node2 :

Sur node3 :


✅ Vérification du cluster

Revenez sur node1 et exécutez la commande suivante pour vérifier l'état des nœuds du cluster :

Sortie attendue :


🛠️ Déploiement et gestion des services

🌐 Déploiement d’un service Nginx

Pour déployer un service Nginx avec 2 réplicas, exécutez sur node1 :


🔄 Configuration de Keepalived

Installation et exécution de Keepalived sur chaque nœud : Lancez un conteneur Keepalived sur chacun des nœuds en utilisant les adresses IP de vos nœuds et une adresse IP virtuelle (VIP) pour la redondance.


🚦 Tester la haute disponibilité

  1. Simulation de panne d’un nœud : Arrêtez le deuxième nœud (node2) :

    Vérifiez que le service est toujours accessible via l’adresse VIP.

  2. Simulation de panne de plusieurs nœuds : Arrêtez le troisième nœud (node3) :

    Testez de nouveau l’accessibilité du service via l’adresse VIP.


🏁 Conclusion

En combinant Docker Swarm et Keepalived :

  • Vous garantissez une disponibilité réseau grâce à l’IP flottante gérée par Keepalived.

  • Vous assurez une haute disponibilité applicative avec le clustering de conteneurs Docker.

Ces deux niveaux de redondance permettent de minimiser les interruptions et d’optimiser la gestion des charges.

Last updated