Lade...
 

Dedizierte ClassiX-Instanzen

Dedizierte ClassiX-Instanzen

4.1.0
204939

Dedizierte ClassiX-Instanzen sind ein MorphIT-Feature, welches zusätzliche Flexibilität für große MorphIT-Installationen (Beispiel: ClassiX-Cloud) bietet.

Problemstellung

Das Grundkonzept einer verteilten MorphIT-Installation ist, dass es einen MorphIT-Server gibt, an dem die HTTP-Anfragen eingehen, an dem sich alle ClassiX-Instanzen und alle MorphIT-Launcher registrieren. Der MorphIT-Server startet eine einstellbare Anzahl an ClassiX-Instanzen auf Vorrat, damit der Nutzer nach dem statischen Login beim Verbinden mit einer ClassiX-Instanz möglichst keine Verzögerung wahrnimmt. Zur Lastverteilung können MorphIT-Launcher auf mehrere Maschinen verteilt eingerichtet werden und der Server wird versuchen, die ClassiX-Instanzen so zu starten, dass die MorphIT-Launcher möglichst gleichmäßig ausgelastet sind.

Daraus ergibt sich die Konsequenz, dass bereits vor der ersten Nutzer-Interaktion bekannt sein muss, wie eine ClassiX-Instanz gestaret wird. Das heißt, dass ein Nutzer normalerweise nicht mehrere verschiedene MorphIT-Anwendungen über einen MorphIT-Server laufen lassen kann, da der Client dem Server nicht mitteilen kann (und aus Sicherheitsgründen nicht darf!), was für eine ClassiX-Anwendung gestartet werden soll.

Einfache Lösung

Die einfachste Lösung für dieses Problem stellt die Duplizierung der MorphIT-Infrastruktur dar. Konkret heißt das:

  1. Es wird für jede MorphIT-Anwendung ein MorphIT-Server und (mehrere) MorphIT-Launcher eingerichtet, die auf einem anderen Port oder einer anderen Maschine laufen als die erste Anwendung
  2. Es wird ein Proxy vor die MorphIT-Server geschaltet, der die Anfragen anhand der URL auf den entsprechenden Server weiterleitet.

Diese einfache Lösung bietet sich aber nur bei einer kleinen und einer sich nicht ändernden Anzahl an MorphIT-Anwendungen an, denn die Einrichtung einer neuen Anwendung bedeutet einen erheblichen Aufwand, da die Infrastruktur eingerichtet und konfiguriert werden muss.

Dedizierte ClassiX-Instanzen

Die flexiblere Lösung für dieses Problem stellen die dedizierten ClassiX-Instanzen dar. Hierbei kann eine ClassiX-Instanz zur Laufzeit beim MorphIT-Server anmelden, dass sie eine neue ClassiX-Instanz starten will. Sobald eine ClassiX-Instanz mit einem MorphIT-Server verbunden ist (HasMorphITConnection = TRUE), kann es über RequestMorphITBinding den Start einer neuen ClassiX-Instanz beim Server anmelden und über LaunchDedicatedClassiX diese Instanz von einem beliebigen MorphIT-Launcher starten lassen. Der MorphIT-Server generiert hierfür ein Tupel aus Websocket-ID und Launcher-Nonce, über welches der Server sicherstellt, dass die gestartete ClassiX-Instanz nur mit dem dazugehörigen MorphIT-Client (in einem neuen Tab) verbunden wird.

Eine detaillierte Beschreibung, wie die Kopplung zwischen ClassiX und MorphIT-Client abläuft und was zu beachten ist, findet man hier.

Einfacher Start einer dedizierten ClassiX-Instanz
Einfacher Start einer dedizierten ClassiX-Instanz
Start einer dedizierten ClassiX-Instanz über den statischen Webservice und den MorphIT-Launcher
Start einer dedizierten ClassiX-Instanz über den statischen Webservice und den MorphIT-Launcher

Launcher-Konfiguration

Um präziser zu steuern welche ClassiX-Instanzen wo ausgeführt werden, kann der MorphIT-Launcher so konfiguriert werden, dass er ausschließlich für dedizierte ClassiX-Instanzen verwendet werden kann. Dadurch muss man nicht auf jeder Maschine, auf der ein Launcher läuft das System so konfigurieren, dass die reguläre MorphIT-Anwendung dort gestartet werden kann, sodass man auf jeder Maschine eine andere ClassiX-Anwendung einrichten kann. Wird in der Konfiguration eines MorphIT-Launchers der Schlüssel ws.launcher.launch.cmd nicht gesetzt, dann wird beim Start des Launchers eine Warnmeldung ausgegeben und der Launcher wird vom Server nicht verwendet, um reguläre ClassiX-Instanzen zu starten. Ein solcher Launcher wird in der Admin-Konsole auch entsprechend markiert.

Die Einschränkung in der Anzahl der startbaren Instanzen (ws.launcher.max_instances) gilt auch für die dedizierten ClassiX-Instanzen. Ist das Limit erreicht, dann wird LaunchDedicatedClassiX fehlschlagen und keine weitere Instanz auf diesem Launcher starten.