Einer der attraktivsten Vorteile der SnapLogic-Plattform ist die Möglichkeit, unsere Plattform vor Ort in einem Rechenzentrum oder einer Cloud-Plattform innerhalb eines privaten virtuellen Netzwerks zu betreiben. Da wir jedoch ein Cloud-Anbieter sind, muss die eigentliche Entwurfsarbeit in unserer Design Studio-Umgebung stattfinden, was eine Konnektivitätsanforderung zwischen dem Knoten und der Steuerungsebene, auf der die Pipelines laufen, mit sich bringt. Ziel dieses Blog-Beitrags ist es, einen Einblick in das Leben eines Groundplex JCC-Knotens zu geben, wie er erstellt wird, welche Anforderungen er erfüllen muss, um zu funktionieren, und vor allem die Anforderungen an die Netzwerkkonfiguration und Best Practices zu erläutern, nicht nur das Wie, sondern auch das Warum.
Was verbirgt sich hinter dem Namen: Snaplex JCC-Knoten?
Einfach ausgedrückt, ist ein Snaplex eine Laufzeitumgebung. JCC steht für Java Component Container. Er enthält, wie der Name schon sagt, den Code, der alle Pipelines ausführt und den Zustand des Knotens, die Auslastung und alle Aspekte überwacht, um einen reibungslosen Betrieb zu gewährleisten. Im Wesentlichen gibt es zwei Kernprozesse, die innerhalb des JCC laufen: Monitor und Process.
Erwerb des Groundplex-Knotens
Der SnapLogic Manager ermöglicht die Einrichtung eines Snaplex-Knotens, der als Laufzeitumgebung für die Verarbeitung von Pipelines vor Ort dient. Die Optionen für einen Snaplex-Knoten sind wie folgt:
Was genau befindet sich in dem Knoten?
Der Knoten ist einfach eine WAR-Datei oder ein kompiliertes Java-Paket. Die grundlegendste Voraussetzung für die Ausführung des Pakets ist ein JDK. Die Abbildung oben zeigt, wie SnapLogic vier Optionen bietet, die darin ausgeführt werden können:
- Windows-Server
- Linux-Distro
- RPM-Paket
- Docker Image
Die verfügbaren Formate sind auf Portabilität und minimale Infrastrukturanforderungen für den Betrieb des Knotens ausgelegt. Das Image/Paket ist leichtgewichtig und kann eine Reihe von Paketverwaltungssoftwares nutzen, um die Vorteile der automatischen Skalierung und des Lastausgleichs in einer Kubernetes-Umgebung zu nutzen. Die "Konfiguration" ist die Anweisung, die die Konnektivität zwischen dem Groundplex (Laufzeit) und der Control Plane (Entwurfsoberfläche) herstellt und wird im Folgenden erläutert.
Die SnapLogic-Plattform ist eine iPaaS, die in der Cloud läuft und eine ständige Konnektivität erfordert, da sie die neuesten Befehlsmetadaten abruft, die für die Ausführung erforderlich sind.
Die Netzanforderungen
Der Knoten ist eine Laufzeitumgebung. Er führt die Integrationspipelines, geplanten Aufgaben und API-ausgelösten Aufgaben aus, die als Metadaten in der Control Plane in der Cloud gespeichert sind. Die oben gezeigten Verbindungsdaten sind die Anweisung für den Knoten, beim Starten "nach Hause zu telefonieren". An dieser Stelle wird es ein wenig technischer.
Der erste Anruf nach Hause
Beim Starten lädt der Knoten die Verbindungsparameter und stellt eine Verbindung mit der Control Plane her. Derzeit ist der CP in der Region West in den USA angesiedelt, wobei eine Ausweitung auf die Regionen EMEA und EU geplant ist.
Der erste Schritt für den JCC ist die Registrierung bei der Control Plane mit Hilfe der "slproz"-Datei, die über den oben gezeigten Konfigurationsstring auf den JCC heruntergeladen wird. Der Registrierungsprozess umfasst den Austausch von Schlüsseln, Maschinenkonfigurationsparametern, einschließlich des Snaplex-Knotentyps, sowie TLS-Zertifikate. Sobald der JCC als konform oder nicht konform befunden wird, wird der Status an das Dashboard zurückgemeldet, damit der Benutzer benachrichtigt werden kann.
Durchsatz, Verbindungskosten und Proxys
Die Verbindung wird über eine HTTP-Bibliothek hergestellt, und die Standardeinstellung sieht vor, dass der Knoten alle 15 Minuten auf Aktualisierungen durch den Knoten prüft. Dies geschieht direkt nach der Registrierung, bei der die Systemsteuerung das TLS-Zertifikat mit dem organisationsspezifischen Schlüssel signiert, der zum Zeitpunkt der Erstellung der Organisation erstellt wurde. TCP-Verbindungen sind mit Kosten verbunden, da TCP sehr "geschwätzig" sein kann und Ressourcen auf dem Endpunkt in der Control Plane blockiert. Daher werden Timeout-Werte konfiguriert, um die Verbindung zu schließen, sobald die Unterhaltung beendet ist.
In den meisten Konfigurationen, und sofern die SnapLogic APIM-Funktion nicht aktiviert ist, befindet sich der JCC Groundplex hinter einem Proxy. Die Proxy-Server haben viele Funktionen, darunter das "Verstecken" des Endpunkts vor dem öffentlichen Internet, die Anwendung von Richtlinien und die Drosselung von Verbindungen. SnapLogic überprüft in regelmäßigen Abständen den Zustand der Verbindungen, um sicherzustellen, dass die Verbindung ordnungsgemäß geöffnet und geschlossen wird.
Websockets und bi-direktionale Kommunikation
Da der JCC keine eingehenden Anrufe zulässt, wird, sobald die Verbindung zwischen dem Knoten und der Control Plane hergestellt ist, von der Control Plane aus eine WebSocket-Verbindung mit der Python Async-Bibliothek hergestellt, um Daten bidirektional auszutauschen. Die Verwendung des WebSocket-Protokolls ist notwendig, weil der Knoten und die Control Plane in ständiger Kommunikation bleiben müssen, da der Knoten keine Zustandsinformationen aufbewahrt, d. h. es gibt keinen Mechanismus auf dem Knoten, um Ausführungsdaten zu speichern, daher kennt der Knoten den allgemeinen Zustand von Pipelines oder parallelen Ausführungen usw. nicht. Da Benutzer die Pipelines, Snaps oder andere Assets in der SnapLogic-Plattform aktualisieren können und diese Daten im Knoten zwischengespeichert werden, muss eine offene Socket-Verbindung bestehen bleiben, um sicherzustellen, dass die Pipeline-Metadaten nicht veraltet sind und alle aktuellen Änderungen widerspiegeln.
Am Leben bleiben und nach den Nachbarn sehen
Neben dem "Einchecken" bei der Control Plane ist ein Teil des JCC-Netzwerklebens die Kenntnis seiner Nachbarn. Es gibt verschiedene "Heartbeat"-Sequenzen, die der Control Plane verschiedene Statistiken wie CPU, Speicher und Festplatte zurückmelden. Neustartanforderungen, neue WAR-Versionen und Verschlüsselungsschlüssel für die Speicherung sind Teil des ständigen Datenaustauschs während der Lebensdauer des Knotens. All dies ist Teil eines Überwachungsdienstes, der den Zustand des Knotens überwacht und ihn neu startet, um ein Festfahren oder Einfrieren zu verhindern. Außerdem wird eine Nachbarschaftsliste geführt, in der überprüft wird, ob andere Knoten an der Verteilung der Pipeline-Ausführungen unter den Knoten beteiligt sind.
Statusaktualisierungen werden alle 20 Sekunden von jedem Knoten an die Steuerungsebene gesendet. Die Daten übermitteln den Zustand des Knotens, Telemetriesignale wie CPU-Auslastung, Speichernutzung und andere Leistungs- und Systemzustandsdaten sowie die Verteilung der Pipeline-Ausführung auf der Grundlage der gesamten Systemauslastung.
Lastausgleich
Die Control Plane steuert die Lastausgleichsfunktion für die Pipeline-Ausführung. Um jedoch einen Lastausgleich zwischen den Knoten zu erreichen, ist ein Load Balancer erforderlich, der den Datenverkehr zwischen den Knoten leitet, um eine hohe Verfügbarkeit und Ausfallsicherheit zu erreichen.
Der Überwachungsprozess innerhalb des JCC prüft ständig die CPU- und Speicherauslastung auf einen bestimmten Schwellenwert (85 % für CPU, 95 % für Speicher mit einer Feature-Flag-Einstellung). Dadurch wird sichergestellt, dass die Last gleichmäßig auf die Knoten verteilt ist.
Zusammenfassend lässt sich sagen, dass der SnapLogic Groundplex JCC Node eine Laufzeitumgebung ist, die die Ausführung von Integrationspipelines und Aufgaben innerhalb der SnapLogic-Plattform ermöglicht, die vor Ort in einem Rechenzentrum oder innerhalb eines privaten virtuellen Netzwerks in der Cloud ausgeführt werden kann. Der Knoten ist ein leichtgewichtiges Paket, das auf verschiedenen Betriebssystemen ausgeführt werden kann und mit einer Paketverwaltungssoftware für automatische Skalierung und Lastausgleich verwaltet werden kann. Der Knoten stellt über einen Konfigurationsprozess, der den Austausch von Schlüsseln und TLS-Zertifikaten umfasst, eine Verbindung mit der SnapLogic Control Plane her, auf der die Pipeline-Anweisungen gespeichert sind. Die Verbindung wird durch regelmäßige Check-Ins aufrechterhalten, wobei die Häufigkeit und Dauer durch Timeout-Werte bestimmt werden. Der Knoten kann sich in den meisten Konfigurationen hinter einem Proxy-Server befinden. Durch die Verwendung der SnapLogic APIM-Funktion kann der Knoten direkt mit der Control Plane kommunizieren.