HA Cluster (Advanced)

Die Installation von Relution in einer hochverfügbaren Konfiguration ermöglicht es, einen Cluster einzurichten. In diesem Cluster werden mehrere Relution-Instanzen (Applikationsknoten) gestartet, die sich alle mit derselben Datenbank verbinden. Ein Loadbalancer verteilt den Datenverkehr auf diese Knoten mithilfe des Round-Robin-Verfahrens.

Die Konfiguration eines hochverfügbaren Clusters sollte nur von erfahrenen Administratoren durchgeführt werden.

Voraussetzungen

Um einen Cluster einzurichten, müssen alle Relution-Instanzen im gleichen Netzwerk sein. Die Knoten müssen sich über die IP-Adresse, die sich aus ihrem Hostnamen ergibt (oder die per EXTERNAL_IP festgelegte Adresse), gegenseitig erreichen können, und zwar über TCP-Port 7800 (Clusterkommunikation) und TCP-Port 7900 (Ausfallerkennung, ggf. bis 7903). Weitere Informationen dazu sind unter Netzwerkanforderungen → zu finden.

Alle Relution-Instanzen müssen dieselben Konfigurationsdateien (z. B. application.yml) oder dieselben Umgebungsvariablen verwenden. Einzige Ausnahme ist die Umgebungsvariable EXTERNAL_IP. Ohne weitere Angabe übernimmt das Linux-Startskript (bin/relution-foreground.sh) die erste Adresse aus hostname -i als Adresse, über die andere Relution-Instanzen diese Instanz erreichen. Ist diese Adresse für die anderen Knoten nicht erreichbar (z. B. Loopback-Eintrag in /etc/hosts oder mehrere Netzwerkschnittstellen), wird die Adresse je Instanz über EXTERNAL_IP festgelegt. Das Windows-Startskript wertet EXTERNAL_IP nicht aus.

Für die Zustandsprüfung durch den Loadbalancer eignet sich der ohne Anmeldung erreichbare Endpunkt /api/management/actuator/health jeder Instanz (alternativ /actuator/health auf dem Management-Port 8099).


Funktionsweise

Der Clusterbetrieb ist in Relution standardmäßig aktiv, eine gesonderte Aktivierung ist nicht erforderlich. Beim Start verbindet sich eine Relution-Instanz mit der Datenbank und trägt ihre Clusteradresse (IP-Adresse und TCP-Port 7800) in die Tabelle JGROUPSPING ein. Anschließend werden alle Einträge aus der Tabelle geladen, und die Instanz stellt eine Verbindung zu den anderen Instanzen über den TCP-Port 7800 her. Die Instanzen überwachen sich gegenseitig über das Netzwerk. Fällt eine Instanz aus, wird die Tabelle beim nächsten Wechsel der Clusterzusammensetzung ohne ihren Eintrag neu geschrieben.

Ab Relution 26.5.5 ist die Clusterkommunikation zwischen den Knoten verschlüsselt und authentifiziert. Den dafür benötigten Schlüssel erzeugt Relution beim ersten Start automatisch und legt ihn, geschützt durch den Schlüssel der Datenbankverschlüsselung, in der gemeinsamen Datenbank ab. Eine Konfiguration ist nicht erforderlich.

Knoten mit einer Version vor Relution 26.5.5 können nicht mit Knoten ab Relution 26.5.5 kommunizieren. Ein schrittweises Update einzelner Knoten (Rolling Update) ist über diese Versionsgrenze nicht möglich: Beim Update auf Relution 26.5.5 oder neuer werden alle Knoten gestoppt, gemeinsam aktualisiert und anschließend wieder gestartet.

Überprüfung des Clusterstatus

Es gibt verschiedene Möglichkeiten, den Status des Clusters zu überprüfen:

1. System Portal

Für eine Clusterumgebung wird empfohlen, das System Portal zu aktivieren. Das System Portal bietet eine Übersicht über die registrierten Knoten im Cluster. Eine volle Funktionsweise setzt die Kommunikation zwischen den Knoten über Port 8099 voraus. Zur Aktivierung und Freischaltung der Actuator-Endpoints siehe Aktivierung des System-Portals →.

2. Metrik-Endpunkt

Über den API-Endpunkt für Prometheus http://127.0.0.1:8099/actuator/prometheus lässt sich die Metrik counter_cluster_size_total überprüfen, um herauszufinden, wie viele Knoten im Cluster erfolgreich registriert sind. Seit Relution 26.4 erfordert dieser Endpunkt den Eintrag prometheus in management.endpoints.web.exposure.include der application.yml (zusätzlich zu health), siehe Freischaltung der Actuator-Endpoints →.

Nach der Freischaltung ist derselbe Endpunkt auch über HTTPS unter /api/management/actuator/prometheus erreichbar. Dafür ist ein Benutzer mit der Berechtigung Systemzustand erforderlich. Ab Relution 26.5.5 ist die Anmeldung mit Benutzername und Passwort (Basic Authentication) standardmäßig ausgeschaltet; ein solcher Abruf funktioniert nur mit relution.security.basic-auth.enabled: true in der application.yml. Die Einrichtung eines Abrufs über HTTPS ist unter Monitoring mit Grafana → beschrieben.

Alternativ ist der Wert nach Freischaltung von metrics unter http://127.0.0.1:8099/actuator/metrics/counter.cluster.size abrufbar. Dort heißt die Metrik counter.cluster.size.

Wie hilfreich war dieser Artikel?