Virtimo 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.

cluster-manager-architektur-light
cluster-manager-architektur-dark

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. Die Abmeldung im Load-Balancer ist keine Aufgabe des Cluster-Managers und muss separat gelöst werden.

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>
  1. Process Engine stoppen

  2. Property ActivateClusterManager auf true setzen

  3. 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/virtimo_cluster_config.xml gesteuert. Hier werden alle für die Konfiguration der Clusterknoten erforderlichen Einstellungen vorgenommen.

Cluster Manager Konfiguration
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Cluster Manager configuration file

    Virtimo AG
-->
<properties>
  <!--
    Defines the name of the JGroups cluster that the node connects to.
    All nodes using the same JGroups cluster name will be part of the
    same cluster. By using different names, it is possible to operate
    multiple clusters simultaneously.
  -->
  <clusterName>service-cluster</clusterName>
  <!--
      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 monitored application connection status, whether it is up and running.
      type: URL
      range: NA
  -->
  <applicationHeartbeatUrl>http://localhost:8000/ibis/rest/ready</applicationHeartbeatUrl>
  <!--
      Monitored application port currently running
      type: Integer
      range: 0 to 65535
  -->
  <applicationPort>8000</applicationPort>
  <!--
      Proxy port for monitored 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>/tmp</statusFilePath>
</properties>

Die Standardkonfiguration von JGroups befindet sich in <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/jgroups.xml. Alle erforderlichen Einstellungen für die Kommunikation zwischen Knoten werden hier vorgenommen.

Die Datei enthält alle möglichen Konfigurationsoptionen, die über diesen Link aufgerufen werden können JGroups.

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:

  1. Melden Sie sich mit einer Workbench an

  2. Gehen Sie zur Registerkarte Administrator und wählen Sie Allgemeine Einstellungen

  3. Navigieren Sie in der Baumstruktur zu Logging > Trace

  4. Wählen Sie im rechten Seitenbereich Individuelles Server-Trace aus und klicken Sie auf die Schaltfläche "…​".

  5. Der Logger-Dialog wird geöffnet

  6. Klicken Sie mit der rechten Maustaste, um das Kontextmenü zu öffnen und wählen Sie Hinzufügen

  7. Geben Sie den Namen de.virtimo.clustermanager ein, wählen Sie "Rotierende Datei-Ausgabe" und klicken Sie auf OK

  8. 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 "…​".

  9. Wählen Sie "Ausgabedatei" und passen Sie den Wert auf etwa $ibis.root.directory$/log/clustermanager.log an

  10. Schließen Sie den Dialog "Rotierende Dateiausgabe" mit OK

  11. Schließen Sie den Dialog "Logger" mit OK

  12. Speichern Sie die allgemeinen Einstellungen, indem Sie auf das Speichern-Symbol in der globalen Symbolleiste klicken

Meldungen zum Start des Cluster-Managers, etwa zu Aktivierung, Lizenz und Konfigurationsdateien, schreibt die Process Engine über den Logger com.inubit.ibis.server.clustermanager. Um auch diese Meldungen in dieselbe Datei zu schreiben, wiederholen Sie die obigen Schritte mit diesem Logger-Namen.