Cluster-Manager
|
Die Nutzung des Cluster-Managers ist lizenzpflichtig. Für jede INUBIT-Instanz innerhalb eines Clusters muss eine separate Lizenz erworben werden. |
Verwendung
Mit dem Virtimo Cluster-Manager besteht die Möglichkeit, mehrere INUBIT-Instanzen zu einem Cluster zusammenzuführen, zur Laufzeit neue Instanzen hinzuzufügen bzw. herauszunehmen.
Damit kann eine hohe Verfügbarkeit eines INUBIT-Systems erreicht oder gezielt auf hohe Lastaufkommen reagiert werden.
Funktionen des Virtimo Cluster Managers
-
Die einzelnen Knoten, auf denen der Cluster Manager läuft, bilden eine Gruppe
-
Alle Knoten der Gruppe sind einander bekannt
-
Sicherheitseinstellungen erlauben nur bestimmten Knoten den Beitritt zum Cluster
-
Die Knotengruppe stellt sicher, dass immer genau einen Knoten als Leader fungiert
-
Der Leader-Knoten wird mittels einer Datei als solcher gekennzeichnet
Einschränkungen des Virtimo Cluster Managers
-
Innerhalb des Clusters werden keine INUBIT-Daten verteilt oder gemeinsam genutzt
-
Änderungen an einem Cluster-Knoten werden nicht auf die anderen Cluster-Knoten übertragen
Workflow-Design in einem Cluster
Das Workflow-Design in einem Cluster unterscheidet sich von dem auf einer einzelnen INUBIT-Instanz (ohne Cluster-Betrieb).
Beim Workflow-Design innerhalb eines Clusters müssen zwei Aspekte berücksichtigt werden, die bei einer Einzelinstanz vernachlässigt werden können:
-
Prozesse, die uneingeschränkt parallel ausgeführt werden können
-
Prozesse, die innerhalb des Clusters genau einmal ausgeführt werden müssen
Die parallele Ausführung von Prozessen gewährleistet eine hohe Skalierbarkeit. Im Idealfall arbeiten Prozesse unabhängig von Daten, die für alle Knoten zugänglich sein müssen. Unvermeidliche Datenabhängigkeiten werden in einer zentralen Geschäftsdatenbank verwaltet, auf die alle Cluster-Knoten zugreifen können.
Innerhalb von INUBIT-Workflows kann der Leader-Status als Steuerelement dienen, um sicherzustellen, dass bestimmte Prozesse auf genau einem Knoten innerhalb des gesamten Clusters ausgeführt werden.
Voraussetzungen
Zur vollständigen Umsetzung eines geclusterten Systems sind folgende Bestandteile notwendig:
-
INUBIT-Instanzen: mindestens 2 INUBIT-Installationen inklusive Lizenz für die Nutzung des Cluster-Managers
-
Netzwerkinfrastruktur: INUBIT-Instanzen müssen via Multicast untereinander kommunizieren können
-
Load-Balancer: zur Verteilung der eingehenden Anfragen an die INUBIT-Instanzen des Clusters
Der Cluster-Manager steuert, welche Knoten dem Cluster angehören und wer der aktuelle Leader ist. Der Load-Balancer kümmert sich um die Verteilung der eingehenden Anfragen an die einzelnen INUBIT-Instanzen des Clusters.
Diese Trennung der Verantwortlichkeiten muss bei der Konfiguration mit berücksichtigt werden.
Multicast
Die Clusterbildung basiert auf Multicast, einem speziellen Netzwerk-Adressbereich und -Port. Alle Knoten, für die dieselbe Multicast-Adresse und -Port konfiguriert sind, fügen sich zu einem Cluster zusammen.
Architektur
Ein Cluster besteht immer aus einem Leader-Knoten und beliebig vielen Backup-Knoten. Sollen INUBIT-Instanzen in einem Cluster zusammenarbeiten, muss dies bei Implementierung der Technical Workflows berücksichtigt werden.
Leader-Knoten
Der Leader-Knoten übernimmt dabei alle Aufgaben, die innerhalb des Systems fachlich auf nur einem einzelnen Knoten ausgeführt werden sollen, z. B. geschedulte Workflows.
Backup-Knoten
Alle Knoten (Leader und Backup) übernehmen die Aufgaben, die fachlich parallel ausgeführt werden können.
Die Prüfung, ob die aktuelle INUBIT-Instanz ein Leader- oder Backup-Knoten ist, erfolgt mithilfe eines zusätzlichen Workflows.
Applikationsstatus
Der Cluster-Manager läuft zusätzlich auf jeder INUBIT-Instanz und prüft selbstständig in regelmäßigen Abständen, ob die Instanz noch verfügbar ist. Sollte der INUBIT nicht mehr erreichbar sein, wird die Instanz im Cluster abgemeldet. Eine Abmeldung im Load-Balancer ist keine Aufgabe des Cluster-Managers.
Folgende INUBIT REST-API Endpunkte bieten sich zur Prüfung des Status an:
Konfiguration
Aktivierung des Cluster-Managers
Über die Datei <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/ibis.xml kann der Cluster-Manager aktiviert werden:
<Properties>
...
<!-- Cluster Manager configuration -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
-
Process Engine stoppen
-
Property
ActivateClusterManagerauftruesetzen -
Process Engine starten
Konfiguration des Cluster-Managers
Die eigentlichen Konfigurationsdetails für den Cluster-Manager werden über die Datei <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml gesteuert.
Hier werden alle für Netzwerkkommunikation notwendigen Einstellungen gemacht.
<?xml version="1.0" encoding="UTF-8"?>
<!--
INUBIT Cluster Manager configuration file
Virtimo AG
-->
<properties>
<!--
A multicast address is a specific IP address used for multicast communication.
type: IPV4 Address
range: 224.0.0.0 to 239.255.255.255
-->
<multicastAddress>239.255.187.1</multicastAddress>
<!--
In multicast communication, a multicast port is used to identify the specific application or service.
type: Integer
range: 0 to 65535
-->
<multicastPort>49155</multicastPort>
<!--
Set the time-to-live for multicast packets sent out on this multicast socket in order to control the scope of the multicasts.
type: Integer
range: 0 to 255
-->
<multicastTtl>1</multicastTtl>
<!--
Network Interface Name for multicast socket communication
type: String
range: NA
-->
<interface>enp0s3</interface>
<!--
Prioritize to select Master node in same cluster. The higher the number the higher the priority.
The node with the highest priority will be elected as leader node.
type: Integer
range: 0 to 2147483647
-->
<priority>10</priority>
<!--
Heartbeat URL to check the INUBIT connection status, whether INUBIT is up and running.
type: URL
range: NA
-->
<applicationHeartbeatUrl>http://localhost:8000/ibis/rest/ready</applicationHeartbeatUrl>
<!--
INUBIT application port currently running
type: Integer
range: 0 to 65535
-->
<applicationPort>8000</applicationPort>
<!--
Proxy port for INUBIT application directly communicate to master in cluster manager.
type: Integer
range: 0 to 65535
-->
<masterProxyPort>9000</masterProxyPort>
<!--
File path to place master / backup status file
type: File path
range: any exisiting folder
-->
<statusFilePath>PLACEHOLDER_STATUSFILEPATH</statusFilePath>
<!--
Read timeout value, after specified time consider as timeout for any read.
type: Time in milliseconds
range: 0 to 2147483647
-->
<readTimeout>3000</readTimeout>
<!--
Interval to wait between checks of the heartbeat url.
type: Time in milliseconds
range: 0 to 2147483647
-->
<checkInterval>1000</checkInterval>
<!--
Connection timeout value, after specified time consider as timeout for connecting to cluster
type: Time in milliseconds
range: 0 to 2147483647
-->
<connectTimeout>1000</connectTimeout>
<!--
After N number of consecutive successful communication, consider connection is up
type: Integer
range: 0 to 2147483647
-->
<rise>2</rise>
<!--
After N number of consecutive communication failure, consider connection is down
type: Integer
range: 0 to 2147483647
-->
<fall>3</fall>
<!--
Master node heartbeat interval in Milli seconds
type: Time in milliseconds
range: 0 to 2147483647
-->
<masterHeartbeatIntervalMillis>1000</masterHeartbeatIntervalMillis>
<!--
After N number of consecutive communication failure, consider Master node connection is down
type: Integer
range: 0 to 2147483647
-->
<masterMissedHeartbeatsToFail>3</masterMissedHeartbeatsToFail>
<!--
Backup node heartbeat interval in Milli seconds
type: Time in Milliseconds
range: 0 to 2147483647
-->
<backupHeartbeatIntervalMillis>3000</backupHeartbeatIntervalMillis>
<!--
After N number of consecutive communication failure, consider backup node connection is down
type: Integer
range: 0 to 2147483647
-->
<backupMissedHeartbeatsToFail>3</backupMissedHeartbeatsToFail>
</properties>
Migration einer bestehenden Konfiguration des nicht-integrierten Cluster-Managers
Wenn Sie bereits den Virtimo Cluster-Manager in der nicht-integrierten Variante nutzen, können Sie ihre bisherige Konfigurationsdatei weiterverwenden. Gehen Sie wie folgt vor:
-
Process Engine stoppen
-
Legen Sie die bisherige Konfiguration unter
<SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/inubitClusterManager.confab -
Entfernen Sie die Datei
<SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml -
Starten Sie die Process Engine
Ihre bisherige Konfiguration wird eingelesen und als <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml ins Dateisystem zurückgeschrieben.
Von nun an nutzen Sie nur noch die Datei clusterManagerConfig.xml.
Ihre bisherige Konfigurationsdatei können Sie aus dem Dateisystem entfernen.
Festlegung des Leader-Knotens
Über die Einstellung priority wird festgelegt, welcher Knoten als Leader im Cluster aktiv sein soll.
Legen Sie für genau einer Instanz in der Konfiguration den höchsten Integerwert fest.
Sobald diese Instanz dem Cluster beitritt, wird sie als Leader gesetzt.
Sollte der Leader ausfallen, wird anhand der Priorität der übrigen Instanzen ein neuer Leader gewählt. Dies ist die Instanz mit der dann aktuell höchsten Priorität.
|
Konfigurieren Sie für jede INUBIT-Instanz im Cluster eine andere Priorität. Damit lässt sich die Wahl des Leader-Knotens am sichersten steuern. |
Prüfung auf den Leader-Knoten
Auf der Instanz, die als Leader aktiv ist, wird eine Datei im Dateisystem abgelegt. Der Pfad zur Ablage kann über die Konfiguration angepasst werden. Ein zusätzlicher Workflow prüft das Vorhandensein dieser Datei. Darüber kann zur Laufzeit ermittelt werden, ob die jeweilige INUBIT-Instanz der Leader-Knoten ist oder nicht.
Den Workflow finden Sie unter: <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/inubit-cluster-manager-workflow.zip.
Benutzerdefiniertes Logging aktivieren
Um die Logausgaben des Cluster-Managers in eine separate Datei umzuleiten, gehen Sie wie folgt vor:
-
Melden Sie sich mit einer Workbench an
-
Gehen Sie zur Registerkarte Administrator und wählen Sie Allgemeine Einstellungen
-
Navigieren Sie in der Baumstruktur zu Logging > Trace
-
Wählen Sie im rechten Seitenbereich Individuelles Server-Trace aus und klicken Sie auf die Schaltfläche "…".
-
Der Logger-Dialog wird geöffnet
-
Klicken Sie mit der rechten Maustaste, um das Kontextmenü zu öffnen und wählen Sie Hinzufügen
-
Geben Sie den Namen
de.virtimo.inubit.clustermanagerein, wählen Sie "Rotierende Datei-Ausgabe" und klicken Sie auf OK -
Wenn Sie den Namen der Protokolldatei aktualisieren möchten, wählen Sie den neu hinzugefügten Eintrag in der Tabelle aus und klicken Sie auf die Schaltfläche "…".
-
Wählen Sie "Ausgabedatei" und passen Sie den Wert auf etwa
$ibis.root.directory$/log/clustermanager.logan -
Schließen Sie den Dialog "Rotierende Dateiausgabe" mit OK
-
Schließen Sie den Dialog "Logger" mit OK
-
Speichern Sie die allgemeinen Einstellungen, indem Sie auf das Speichern-Symbol in der globalen Symbolleiste klicken