Einführung
Die Konfiguration der B2B (z.B. Actions, Services, Channels, GlobalProperties, Extensions, Content Mappings) ist in der Datenbank gespeichert. Diese Daten werden in der Regel gecacht, d.h. nur einmal eingelesen wenn sie das erste Mal benötigt werden und dann vom Tomcat im RAM gespeichert. Das bedeutet der Tomcat kennt nur die gecachten Daten und die Änderungen die er selbst durchgeführt hat.
Aufgabe der Cluster Communication ist es, Änderungen die auf einem der Tomcat Knoten realisiert wurden an andere weiterzugeben.
Die alte Cluster Communication, basiert auf einer direkten Kommunikation zwischen den Tomcat-Knoten über das Netzwerk. Es muss eine Verbindung zu jedem der anderen Knoten aufgebaut und auf die Antwort gewartet werden. Unter hoher Last auf den Knoten oder im Netzwerk passiert es gelegentlich dass innerhalb des Timeouts ein Knoten nicht antwortet. Dann wird ein Fehler geworfen und die Aktion abgebrochen, die Änderung ist dann nicht im ganzen Cluster bekannt.
Die neue Cluster Communication protokolliert Änderungen nur in der Datenbank. Auf jedem Knoten läuft ein Service der die Änderungen aus der Datenbank liest und den Cache aktualisiert. Die Kommunikation ist also entkoppelt, kein Knoten muss auf den anderen warten und Änderungen werden auf den Knoten übernommen wenn sie Zeit haben. Der Prozess benötigt dadurch weniger Ressourcen auf jedem Knoten und ist zuverlässiger.
Beschreibung
Die Cluster Communication ist für die Synchronisation der Knoten zuständig. Die CC schaut per Default jede Sekunde ob es eine Änderung gegeben hat und sorgt, falls es eine Änderungen gegeben hat, dafür dass die Singletons auf allen Knoten aktualisiert werden. Folgende Singletons werden aktualisiert:
-
ActionRegistry
-
ChannelRegistry
-
ServiceRegistry
-
GlobalPropertyRegistry
-
ContentRegistry
-
ExtensionRegistry
Einrichtung
Alte Cluster Communication deaktivieren
Dazu müssen drei Global Properties entfernt werden und die B2B durchgestartet werden.
Als erstes die Global Properties entfernen.
B3P_CLUSTER_COMMUNICATION_CLASS
B3P_CLUSTER_IPS_NODES
B3P_CLUSTER_START_PORT
Nun alle Knoten der B2B durchstarten.
Datenbank Tabellen erstellen
Zuerst müssen die folgenden Datenbank Tabellen erstellt werden:
-
B2BBP_DATA_COMMUNICATION
-
B2BBP_DATA_COMMUNICATION_VALUE
Die Datenbank Skripte können bei unserem Support angefragt werden.
Global Properties anlegen
Nun die im Folgenden beschriebenen Global Properties anlegen.
Poll Interval
B3P_CLUSTER_COMMUNICATION_POLL_INTERVALL (Default 1 Sekunde)
Zeitintervall, nach wie vielen Sekunden die Cluster Communication schauen soll, ob es Änderungen gibt. Default: 1 Sekunde
Nachrichten im Monitor
B3P_CLUSTER_COMMUNICATION_SHOW_MESSAGES (Default all)
Mögliche Werte:
-
all
-
normal
-
nothing
Wie viele Informationen sollen die ClusterCommunication im Monitoring liefern? Bei nothing gibt es nur eine Meldung wenn die Knoten asynchron sind.
Art der Verarbeitung
B3P_CLUSTER_COMMUNICATION_STATE
Als letztes folgende Global Property setzten. Damit beginnt die Cluster Communication zu arbeiten.
Mögliche Werte:
- auto
- manual (nicht empfohlen)
- off
Änderungen werden bei eingeschalteter ClusterCommunication automatisch aktiv.
Ausgeschlossene Knoten
B3P_CLUSTER_COMMUNICATION_NOT_USE_NODES (Default 99)
Bei dieser Global Property können Knotennummern angegeben werden, welche von der neuen Cluster Communication nicht berücksichtigt werden. Mehrere Knoten können durch „,“ bzw „;“ getrennt angegeben werde.
Beispiel: B3P_CLUSTER_COMMUNICATION_NOT_USE_NODES
= 99.
Hier aufgeführte Knoten erzeugen außerdem keine Knoten NODE_XX ist nicht synchron
Nachrichten im Monitoring.
Wenn in der GlobalProperty alle Knoten aufgeführt werden, welche nicht synchron sind, wird keine Nachricht im Monitoring erzeugt.
Wenn nur ein Teil der asynchronen Knoten aufgeführt ist, wird die Nachricht im Monitoring auf die übrigen Knoten reduziert.
Eine Änderung dieser Property erfordert einen Neustart der B2B-Knoten.
ClusterCommunicationTestAction
Funktionsbeschreibung
Mit dieser Action kann getestet werden ob die Cluster Communication für Extensions auf einem Knoten korrekt funktioniert. Ist die Action grün dann arbeitet die Cluster Communication korrekt. Ist die Action rot so gibt es ein Problem mit der Cluster Communication. Diese Action bitte nicht in Produktiv genutzten Channels verwenden da die Action 10 Sekunden lange läuft.
Konfiguration
Zur Konfiguration ist nur das anlegen der Extension CLUSTER_COMMUNICATION_TEST_EXTENSION notwendig.Die Extension kann ohne Inhalt angelegt werden. Von derAction wird dann das aktuelle Datum in Millisekunden in die Extension geschrieben.
View Me Edit Me