Introduction

De nombreuses plateformes d’automatisation commencent avec une architecture à nœud unique. Un seul processus sert l’interface utilisateur, exécute les tâches, gère les planifications et traite les mises à jour en temps réel. Bien que cette configuration soit simple, elle crée également un point de défaillance unique. Si ce processus s’arrête, l’automatisation s’arrête aussi.

Pour les organisations qui exécutent une automatisation d’infrastructure à grande échelle — en particulier dans les environnements DevOps ou d’ingénierie de plateforme — l’indisponibilité du système d’automatisation peut devenir un risque opérationnel sérieux.

C’est là qu’intervient la Haute Disponibilité Actif-Actif (HA). Semaphore UI prend en charge une architecture où plusieurs instances fonctionnent simultanément et partagent la charge de travail. Cela garantit que l’automatisation continue même si des nœuds individuels tombent en panne, tout en permettant une mise à l’échelle horizontale.

Le Problème de l’Automatisation à Nœud Unique

Dans un déploiement standard, un seul processus Semaphore UI remplit toutes les responsabilités principales :

Cette architecture fonctionne bien pour les petites équipes ou les environnements de test. Cependant, elle introduit une limitation critique. Si le processus unique tombe en panne, l’ensemble du système devient indisponible. Pour les environnements de production avec de nombreux utilisateurs et des flux de travail automatisés, cela crée des risques tels que :

Pour éliminer ce goulot d’étranglement, Semaphore UI prend en charge les déploiements haute disponibilité actif-actif.

Qu’est-ce que la HA Actif-Actif dans Semaphore UI ?

Dans une architecture HA actif-actif, plusieurs instances identiques de Semaphore UI fonctionnent simultanément derrière un répartiteur de charge. Contrairement aux systèmes de basculement traditionnels, il n’y a pas de nœud principal ou de secours. Chaque instance est entièrement capable de traiter les requêtes UI, les appels API, les tâches planifiées et l’exécution des tâches.

Le trafic est distribué à travers le cluster, et si une instance tombe en panne, les autres continuent de servir les requêtes sans interruption. Cette architecture améliore à la fois la fiabilité du système et l’évolutivité de l’exécution.

Architecture de Haut Niveau

Un déploiement actif-actif typique se compose de plusieurs composants clés.

  1. Répartiteur de Charge. Les utilisateurs se connectent via un répartiteur de charge tel que NGINX, HAProxy et les répartiteurs de charge cloud. Le répartiteur de charge distribue le trafic HTTP et WebSocket entre les nœuds Semaphore disponibles.

  2. Nœuds Semaphore. Chaque nœud exécute une instance identique de Semaphore UI. N’importe quel nœud peut recevoir des requêtes utilisateurs, démarrer des tâches d’automatisation, traiter des tâches planifiées et envoyer des mises à jour en temps réel. Comme tous les nœuds sont égaux, le système n’a pas de point de défaillance unique au niveau de la couche application.

  3. Base de Données Partagée. Toutes les instances se connectent à une base de données partagée comme PostgreSQL ou MySQL. La base de données sert de source unique de vérité pour les données persistantes, incluant : projets, modèles, inventaires, planifications, historique des tâches, comptes utilisateurs et configuration RBAC.

  4. Couche de Coordination Redis. Redis fournit la couche de coordination qui permet à plusieurs nœuds de se comporter comme un système unique. Il remplit trois fonctions importantes.

Comment Fonctionne l’Exécution des Tâches dans un Cluster HA

Dans un déploiement Semaphore multi-nœuds, l’exécution des tâches suit un flux coordonné.

  1. Un Utilisateur Déclenche une Tâche. Un utilisateur lance un travail via l’UI ou l’API. La requête peut arriver sur n’importe quelle instance Semaphore.
  2. Les Métadonnées de la Tâche Sont Stockées. Le nœud récepteur écrit les métadonnées de la tâche dans la base de données et signale le travail via Redis.
  3. Un Nœud Prend la Tâche. L’un des nœuds disponibles récupère la tâche depuis Redis, acquiert un verrou distribué et marque la tâche comme en cours d’exécution dans la base de données.
  4. La Tâche s’Exécute. Le nœud exécute la tâche localement ou via des runners/agents distribués. La progression et les journaux sont continuellement écrits dans la base de données.
  5. Les Résultats Sont Diffusés. Les mises à jour de tâches se propagent via Redis Pub/Sub pour que tous les nœuds et clients UI restent synchronisés.

Mise à l’Échelle Horizontale avec Plusieurs Runners

La haute disponibilité permet également la mise à l’échelle horizontale de l’exécution des tâches. Au lieu d’exécuter les travaux uniquement sur les nœuds Semaphore eux-mêmes, l’exécution peut être déléguée à plusieurs runners ou agents. Pour les grandes équipes DevOps, cette architecture prend en charge les charges de travail d’automatisation à l’échelle de l’entreprise :

Avantages d’un Déploiement Actif-Actif Semaphore

Fiabilité Améliorée. Si une instance tombe en panne, les autres continuent de servir le trafic et d’exécuter les travaux.

Maintenance Sans Temps d’Arrêt. Les nœuds peuvent être mis à jour ou redémarrés sans arrêter le système.

Évolutivité Horizontale. Des nœuds Semaphore supplémentaires peuvent être ajoutés derrière le répartiteur de charge pour augmenter la capacité.

Aucune Dépendance au Nœud Principal. Tous les nœuds sont égaux, supprimant les mécanismes de basculement complexes. État Cohérent à Travers le Cluster. Le stockage en base de données partagée et la coordination Redis maintiennent toutes les instances synchronisées.

Cas d’Utilisation Typiques

Les déploiements actif-actif Semaphore sont courants dans les environnements qui nécessitent une disponibilité continue de l’automatisation, tels que :

Conclusion

La haute disponibilité actif-actif permet à Semaphore UI d’évoluer d’un serveur d’automatisation unique vers un système distribué résilient. Au lieu de s’appuyer sur un seul processus pour gérer l’UI, la planification et l’exécution des tâches, plusieurs instances Semaphore travaillent ensemble derrière un répartiteur de charge tout en partageant l’état via une base de données et Redis. Le résultat est une plateforme d’automatisation qui reste disponible même lorsque des nœuds individuels tombent en panne et peut s’adapter horizontalement à mesure que la charge de travail augmente.

La prise en charge de la HA actif-actif est disponible dans l’édition Semaphore Enterprise. En plus de la haute disponibilité, la version Enterprise inclut des fonctionnalités conçues pour les grandes équipes et les environnements de production — comme le RBAC avancé (contrôle d’accès basé sur les rôles), qui permet aux organisations de définir des permissions granulaires à travers les projets, les équipes et les environnements.

Si vous évaluez une plateforme d’automatisation haute disponibilité pour votre infrastructure, vous pouvez demander un essai de l’édition Enterprise pour tester l’architecture HA et voir comment elle s’intègre dans vos flux de travail DevOps.

Request an Enterprise Trial

FAQ

Qu’est-ce que la haute disponibilité actif-actif ?

La haute disponibilité actif-actif signifie que plusieurs instances d’application fonctionnent simultanément et peuvent toutes servir des requêtes. Il n’y a pas de nœud principal — n’importe quelle instance peut gérer le trafic et exécuter des travaux.

Pourquoi Semaphore utilise-t-il Redis en mode HA ?

Redis agit comme une couche de coordination entre les instances. Il fournit des verrous distribués, un état partagé de la file de tâches et une messagerie Pub/Sub pour garantir que les nœuds n’exécutent pas le même travail simultanément.

Quelle base de données Semaphore prend-il en charge pour les déploiements HA ?

Semaphore prend en charge PostgreSQL et MySQL comme base de données partagée pour le stockage des données système persistantes.

Que se passe-t-il si un nœud Semaphore tombe en panne ?

Le répartiteur de charge redirige simplement le trafic vers les nœuds restants. Les travaux en cours continuent et les nouveaux travaux sont pris en charge par d’autres instances.

Semaphore peut-il évoluer horizontalement ?

Oui. Des nœuds et runners Semaphore supplémentaires peuvent être ajoutés pour augmenter la capacité d’exécution et gérer des charges de travail d’automatisation plus importantes.