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 z.B. eine hohe Verfügbarkeit eines INUBIT-Systems erreicht oder gezielt auf hohe Lastaufkommen reagiert 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 Master 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 Master-Knoten und beliebig vielen Backup-Knoten. Sollen INUBIT-Instanzen in einem Cluster zusammenarbeiten, muss dies bei Implementierung der Technical Workflows berücksichtigt werden.

Master-Knoten

Der Master-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 (Master und Backup) übernehmen die Aufgaben, die fachlich parallel ausgeführt werden können.

Die Prüfung, ob die aktuelle INUBIT-Instanz ein Master- 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>
  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/clusterManagerConfig.xml gesteuert. Hier werden alle für Netzwerkkommunikation notwendigen Einstellungen gemacht.

Details
Cluster Manager Konfiguration
<?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:

  1. Process Engine stoppen

  2. Legen Sie die bisherige Konfiguration unter <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/inubitClusterManager.conf ab

  3. Entfernen Sie die Datei <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml

  4. 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 Master-Knotens

Über die Einstellung priority wird festgelegt, welcher Knoten als Master 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 Master gesetzt.

Sollte der Master ausfallen, wird anhand der Priorität der übrigen Instanzen ein neuer Master gewählt. Dies ist die Instanz mit der dann aktuell höchsten Priorität.

Konfigurieren Sie für jede INUIBT-Instanz im Cluster eine andere Priorität. Damit lässt sich die Wahl des Master-Knotens am sichersten steuern.

Prüfung auf den Master-Knoten

Auf der Instanz, die als Master 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 Master-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.inubit.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