Hochverfügbarkeitsserver

Hochverfügbarkeitsserver laufen etwas anders als einzelne Server.

Alle Server verwenden dieselbe Datenbank und ein gemeinsames Dateisystem. Das gemeinsame Dateisystem wird für Protokolle und einige andere Verzeichnisse verwendet, insbesondere: logs, var/email, var/plugins und var/repository. Jeder Server enthält auch bestimmte Konfigurationsdaten wie Ports und Hosts. Die Datenbank wird für Konfigurationsdaten, Laufzeitdaten usw. verwendet.

Da die Server die Datenbank gemeinsam nutzen, laufen alle Server mit demselben Intervall.

Einige Konfigurationseigenschaften bleiben auf dem Server, beispielsweise Datenbank- und JMS-Verbindungsinformationen. Die Datenbankkonfiguration wird während der Produktinstallation durchgeführt. Nach der Installation ist keine zusätzliche Konfiguration mehr erforderlich.

Importieren von Dateien (CodeStation)

Alle Server rufen Änderungen der Komponentenversion ab. Die Abfrageintervalle werden durch einen benutzerdefinierten Parameter angegeben (standardmäßig 15 Minuten). Die Datenbank wickelt die Serversynchronisation ab, ein Server fordert eine Sperre in der Datenbank an. Die Abfragezeiten werden nach dem Abschluss des Jobs zurückgesetzt.

Ereignisse

Ereignisse werden von dem Server abgewickelt, der das Ereignis ausgelöst hat.

Workflow-Engine

Workflows bestehen aus Aktivitäten. Aktivitäten können nacheinander, parallel oder in einer Kombination aus beiden Methoden ausgeführt werden. Ein typischer Workflow besteht beispielsweise aus mehreren sequenziellen Aktivitäten:

Für die JMS-basierte Kommunikation können Agenten auf mehrere Arten konfiguriert werden:

Alle Server fragen laufend wartende Workflows ab, daher kann jeder Server den Workflow einleiten. Der Server, der diesen Workflow übernimmt, führt folgende Tasks aus:

  1. Erstellen einer Laufzeitinstanz der Aktivität A und Erwerben einer Datenbanksperre
  2. Aufzeichnen des Befehls, den er an die Datenbank senden möchte
  3. Senden des Befehls an den Agenten über JMS.
  4. Freigeben der Datenbanksperre.

Nachdem er die Arbeit durchgeführt hat, sendet der Agent eine Antwortnachricht über JMS. Die Nachricht wird (von einem der Server) in die Datenbank geschrieben und die nächste Aktivität wird (von einem der Server) gestartet. Der Server, der Aktivität B begonnen hat, führt dieselben Schritte wie oben beschrieben aus.

In dem einfachen Workflow, der hier skizziert wird, können die Aktivitäten alle von demselben Server oder von verschiedenen Servern (bzw. einer Kombination) verarbeitet werden. Natürlich gilt dies auch, wenn dieser Workflow aus drei parallelen Aktivitäten bestünde.

Ein Anwendungs-Workflow wird durch einen einfachen Datensatz in der Datenbank gewartet (nur ein Thread wickelt jeweils einen Workflow gleichzeitig ab).

Behandlung von Fehlern

Während der Anwendungsverarbeitung werden Fehler von Befehlen im Workflow markiert. Die Fehlerbehandlung liegt in der Zuständigkeit des Anwendungsautors. Das Rollback der Komponente kann durch Rollback-Befehle/Schritte durchgeführt werden. Unter Rollback wird hier die Neuinstallation einer früheren Komponentenversion verstanden.

Wenn der Server ausfällt, während ein Agent einen Befehl ausführt, weist das JMS-Netz den Workflow einem anderen Server zu.

Wenn ein Agent ausfällt oder aus anderen Gründen nicht verfügbar sein während ein Befehl ausgeführt wird (wobei zu beachten ist, dass fehlgeschlagene Schritte nicht dazu führen, dass die Agenten selbst fehlschlagen), geht der Server davon aus, dass der Befehl immer noch läuft. Es gibt keine "automatische" Zeitlimitüberschreitung. Normalerweise ist es weder machbar noch durchführbar, ein Zeitlimitintervall zuzuweisen.


Feedback