- Einführung
- Das Problem mit der Einzelknoten-Automatisierung
- Was ist Aktiv-Aktiv-HA in Semaphore UI?
- Übergeordnete Architektur
- Wie die Jobausführung in einem HA-Cluster funktioniert
- Horizontale Skalierung mit mehreren Runnern
- Vorteile einer Aktiv-Aktiv-Semaphore-Bereitstellung
- Typische Anwendungsfälle
- Fazit
- FAQ
Einführung
Viele Automatisierungsplattformen beginnen mit einer Einzelknoten-Architektur. Ein Prozess bedient die Benutzeroberfläche, führt Jobs aus, verwaltet Zeitpläne und verarbeitet Echtzeit-Updates. Obwohl dieses Setup einfach ist, schafft es auch einen Single Point of Failure. Wenn dieser Prozess stoppt, stoppt auch die Automatisierung.
Für Organisationen, die umfangreiche Infrastrukturautomatisierung betreiben — insbesondere in DevOps- oder Platform-Engineering-Umgebungen — kann die Ausfallzeit des Automatisierungssystems zu einem ernsthaften betrieblichen Risiko werden.
Hier kommt die Aktiv-Aktiv-Hochverfügbarkeit (HA) ins Spiel. Semaphore UI unterstützt eine Architektur, bei der mehrere Instanzen gleichzeitig laufen und die Arbeitslast teilen. Dies stellt sicher, dass die Automatisierung auch dann fortgesetzt wird, wenn einzelne Knoten ausfallen, und ermöglicht gleichzeitig eine horizontale Skalierung.
Das Problem mit der Einzelknoten-Automatisierung
Bei einer Standardbereitstellung übernimmt ein Semaphore UI-Prozess alle Kernaufgaben:
- Bereitstellung der Web-UI
- Verarbeitung von API-Anfragen
- Ausführung geplanter Jobs
- Ausführung von Automatisierungsaufgaben
- Senden von Echtzeit-Updates an den Browser
Diese Architektur funktioniert gut für kleine Teams oder Testumgebungen. Sie führt jedoch eine kritische Einschränkung ein. Wenn der einzelne Prozess ausfällt, wird das gesamte System nicht mehr verfügbar. Für Produktionsumgebungen mit vielen Benutzern und automatisierten Workflows entstehen Risiken wie:
- Unterbrochene Bereitstellungen
- Fehlgeschlagene geplante Jobs
- Verlust der betrieblichen Transparenz
- Ausfallzeiten während der Wartung
Um diesen Engpass zu beseitigen, unterstützt Semaphore UI Aktiv-Aktiv-Hochverfügbarkeitsbereitstellungen.
Was ist Aktiv-Aktiv-HA in Semaphore UI?
In einer Aktiv-Aktiv-HA-Architektur laufen mehrere identische Semaphore UI-Instanzen gleichzeitig hinter einem Load Balancer. Im Gegensatz zu herkömmlichen Failover-Systemen gibt es keinen primären oder Standby-Knoten. Jede Instanz ist voll in der Lage, UI-Anfragen, API-Aufrufe, geplante Jobs und Aufgabenausführung zu verarbeiten.
Der Datenverkehr wird über den Cluster verteilt, und wenn eine Instanz ausfällt, bedienen die anderen weiterhin Anfragen ohne Unterbrechung. Diese Architektur verbessert sowohl die Systemzuverlässigkeit als auch die Ausführungsskalierbarkeit.
Übergeordnete Architektur
Eine typische Aktiv-Aktiv-Bereitstellung besteht aus mehreren Schlüsselkomponenten.
-
Load Balancer. Benutzer verbinden sich über einen Load Balancer wie NGINX, HAProxy und Cloud Load Balancer. Der Load Balancer verteilt HTTP- und WebSocket-Datenverkehr auf verfügbare Semaphore-Knoten.
-
Semaphore-Knoten. Jeder Knoten führt eine identische Instanz von Semaphore UI aus. Jeder Knoten kann Benutzeranfragen empfangen, Automatisierungsjobs starten, geplante Aufgaben verarbeiten und Echtzeit-Updates senden. Da alle Knoten gleichwertig sind, hat das System keinen Single Point of Failure auf der Anwendungsebene.
-
Gemeinsame Datenbank. Alle Instanzen verbinden sich mit einer gemeinsamen Datenbank wie PostgreSQL oder MySQL. Die Datenbank fungiert als einzige Wahrheitsquelle für persistente Daten, einschließlich: Projekte, Vorlagen, Inventare, Zeitpläne, Aufgabenverlauf, Benutzerkonten und RBAC-Konfiguration.
-
Redis-Koordinierungsschicht. Redis stellt die Koordinierungsschicht bereit, die es mehreren Knoten ermöglicht, als ein einziges System zu agieren. Es erfüllt drei wichtige Funktionen.
- Verteilte Sperren stellen sicher, dass nur eine Instanz einen Job oder Schritt gleichzeitig ausführt. Ohne verteilte Sperrung könnten mehrere Knoten versuchen, dieselbe Aufgabe gleichzeitig auszuführen.
- Gemeinsamer Aufgabenwarteschlangenstatus. Redis verwaltet die Aufgabenwarteschlange, sodass Jobs von genau einem Worker abgeholt werden. Alle Knoten sehen dieselbe Warteschlange und koordinieren die Aufgabenausführung.
- Pub/Sub-Messaging ermöglicht es Knoten, Ereignisse zu senden wie: Aufgaben-Updates, Cluster-Benachrichtigungen, Cache-Invalidierung, UI-Statusaktualisierungen. Dies hält alle Knoten in Echtzeit synchronisiert.
Wie die Jobausführung in einem HA-Cluster funktioniert
In einer Multi-Knoten-Semaphore-Bereitstellung folgt die Aufgabenausführung einem koordinierten Ablauf.
- Ein Benutzer löst eine Aufgabe aus. Ein Benutzer startet einen Job über die UI oder API. Die Anfrage kann auf jeder Semaphore-Instanz landen.
- Aufgaben-Metadaten werden gespeichert. Der empfangende Knoten schreibt Aufgaben-Metadaten in die Datenbank und signalisiert Arbeit über Redis.
- Ein Knoten übernimmt die Aufgabe. Einer der verfügbaren Knoten ruft die Aufgabe von Redis ab, erwirbt eine verteilte Sperre und markiert die Aufgabe als laufend in der Datenbank.
- Die Aufgabe wird ausgeführt. Der Knoten führt die Aufgabe lokal oder über verteilte Runner/Agenten aus. Fortschritt und Protokolle werden kontinuierlich in die Datenbank zurückgeschrieben.
- Ergebnisse werden verbreitet. Aufgaben-Updates werden über Redis Pub/Sub verbreitet, sodass alle Knoten und UI-Clients synchronisiert bleiben.
Horizontale Skalierung mit mehreren Runnern
Hochverfügbarkeit ermöglicht auch die horizontale Skalierung der Aufgabenausführung. Anstatt Jobs nur auf den Semaphore-Knoten selbst auszuführen, kann die Ausführung an mehrere Runner oder Agenten delegiert werden. Für große DevOps-Teams unterstützt diese Architektur Automatisierungslasten im Enterprise-Maßstab:
- Verteilung der Arbeitslast über die Infrastruktur
- Skalierung der Automatisierungskapazität
- Isolierung von Ausführungsumgebungen zur Begrenzung des Explosionsradius
- Parallele Ausführung von Tausenden von Knoten
Vorteile einer Aktiv-Aktiv-Semaphore-Bereitstellung
Verbesserte Zuverlässigkeit. Wenn eine Instanz ausfällt, bedienen andere weiterhin den Datenverkehr und führen Jobs aus.
Wartung ohne Ausfallzeit. Knoten können aktualisiert oder neu gestartet werden, ohne das System zu stoppen.
Horizontale Skalierbarkeit. Zusätzliche Semaphore-Knoten können hinter dem Load Balancer hinzugefügt werden, um die Kapazität zu erhöhen.
Keine Abhängigkeit von einem Primärknoten. Alle Knoten sind gleichwertig, wodurch komplexe Failover-Mechanismen entfallen. Konsistenter Zustand im gesamten Cluster. Gemeinsame Datenbankspeicherung und Redis-Koordinierung halten alle Instanzen synchronisiert.
Typische Anwendungsfälle
Aktiv-Aktiv-Semaphore-Bereitstellungen sind in Umgebungen üblich, die eine kontinuierliche Automatisierungsverfügbarkeit erfordern, wie z.B.:
- Große DevOps-Teams. In Organisationen, in denen viele Ingenieure den ganzen Tag über Automatisierungsaufgaben auslösen, ermöglichen mehrere Semaphore-Instanzen die parallele Verarbeitung von Jobs und Anfragen, wodurch ein einzelner Knoten nicht zum Engpass wird.
- Enterprise-Infrastruktur. Unternehmen, die große Flotten von Servern, virtuellen Maschinen oder Containern verwalten, sind stark auf Automatisierung für Konfiguration und Wartung angewiesen. Hochverfügbarkeit hilft sicherzustellen, dass kritische Automatisierungsworkflows betriebsbereit bleiben.
- CI/CD-Automatisierung. Wenn Semaphore als Teil von CI/CD-Pipelines verwendet wird, können Unterbrechungen Bereitstellungen und Releases verzögern. Aktiv-Aktiv-Bereitstellungen helfen, Pipelines auch dann zuverlässig am Laufen zu halten, wenn einzelne Knoten neu gestartet werden oder ausfallen.
- Platform Engineering. Platform-Teams verwenden Semaphore oft als Teil interner Entwicklerplattformen, die Self-Service-Automatisierung bieten. Hochverfügbarkeit stellt sicher, dass diese internen Dienste stabil und reaktionsfähig für Entwicklungsteams bleiben.
Fazit
Aktiv-Aktiv-Hochverfügbarkeit ermöglicht es Semaphore UI, sich von einem einzelnen Automatisierungsserver zu einem widerstandsfähigen verteilten System zu entwickeln. Anstatt sich auf einen Prozess zu verlassen, der die UI, Zeitplanung und Aufgabenausführung verwaltet, arbeiten mehrere Semaphore-Instanzen hinter einem Load Balancer zusammen und teilen den Zustand über eine Datenbank und Redis. Das Ergebnis ist eine Automatisierungsplattform, die auch dann verfügbar bleibt, wenn einzelne Knoten ausfallen, und die horizontal skalieren kann, wenn die Arbeitslast wächst.
Unterstützung für Aktiv-Aktiv-HA ist in der Semaphore Enterprise Edition verfügbar. Zusätzlich zur Hochverfügbarkeit umfasst die Enterprise-Version Funktionen, die für größere Teams und Produktionsumgebungen entwickelt wurden — wie erweitertes RBAC (rollenbasierte Zugriffskontrolle), das Organisationen ermöglicht, granulare Berechtigungen über Projekte, Teams und Umgebungen hinweg zu definieren.
Wenn Sie eine hochverfügbare Automatisierungsplattform für Ihre Infrastruktur evaluieren, können Sie eine Testversion der Enterprise Edition anfordern, um die HA-Architektur zu testen und zu sehen, wie sie in Ihre DevOps-Workflows passt.
FAQ
Was ist Aktiv-Aktiv-Hochverfügbarkeit?
Aktiv-Aktiv-Hochverfügbarkeit bedeutet, dass mehrere Anwendungsinstanzen gleichzeitig laufen und alle Anfragen bedienen können. Es gibt keinen Primärknoten — jede Instanz kann Datenverkehr verarbeiten und Jobs ausführen.
Warum verwendet Semaphore Redis im HA-Modus?
Redis fungiert als Koordinierungsschicht zwischen den Instanzen. Es bietet verteilte Sperren, gemeinsamen Aufgabenwarteschlangenstatus und Pub/Sub-Messaging, um sicherzustellen, dass Knoten nicht denselben Job gleichzeitig ausführen.
Welche Datenbank unterstützt Semaphore für HA-Bereitstellungen?
Semaphore unterstützt PostgreSQL und MySQL als gemeinsame Datenbank zur Speicherung persistenter Systemdaten.
Was passiert, wenn ein Semaphore-Knoten ausfällt?
Der Load Balancer leitet den Datenverkehr einfach an die verbleibenden Knoten weiter. Laufende Jobs werden fortgesetzt und neue Jobs werden von anderen Instanzen übernommen.
Kann Semaphore horizontal skalieren?
Ja. Zusätzliche Semaphore-Knoten und Runner können hinzugefügt werden, um die Ausführungskapazität zu erhöhen und größere Automatisierungslasten zu bewältigen.