Clustering
Als Clustering ist in diesem Fall die Lastverteilung bei der Generierung von Projekten auf weitere FirstSpirit-Server gemeint („horizontale Skalierbarkeit“).
Zum Konzept und Architekturbeschreibung siehe Clustering - Lastverteilung bei der Generierung
Ab der FirstSpirit-Version wurde das Clustering einer umfassenden Überarbeitung unterzogen. Der Fokus lag hierbei auf eine signifikante Vereinfachung der Konfiguration sowie den Verzicht auf gemeinsam genutzte Dateisysteme (siehe Konfiguration bis 2024.6)
Master- und Slave-Server müssen sich im gleichen Netzwerk befinden. |
Neue Konfiguration
Ein gemeinsames Dateisystem zwischen dem Master und den Cluster-Knoten stellt zwar keine zwingende Voraussetzung mehr dar, bleibt jedoch weiterhin optional möglich.
Um Cluster-Knoten zu unterstützen, ist auf dem Master keine Konfiguration mehr nötig. Der Master zeigt nur noch an, welche Cluster-Knoten gerade verbunden sind, einschließlich ihres aktuellen Status.
Der Button "Slave deregistrieren" dient ausschließlich dem Zweck, Informationen über Cluster-Knoten zu entfernen, die zuvor mit dem Master verbunden waren.
Auch im ServerMonitoring unter „FirstSpirit / Clustering“ sind die Informationen über die aktuellen Cluster-Knoten vorhanden.
Konfiguration eines Cluster-Knotens
Um einen Cluster-Knoten zu starten, kann der reguläre FirstSpirit-Installer verwendet werden. Es ist lediglich erforderlich, die Datei fs-wrapper.isolated.conf um die folgenden Parameter zu ergänzen:
wrapper.java.additional.1=-Dregistry.file=ClusterNode.properties
wrapper.java.additional.2=-Dfirstspirit.host=<Hostname of the master server>
wrapper.java.additional.3=-Dfirstspirit.port=<SOCKET Port of the master server>
Beim Start des Cluster-Servers wird dieser automatisch eine Verbindung zum Master-Server herstellen und anschließend die entsprechenden Aufträge ausführen.
Neben der Wrapper-Konfiguration gibt es eine Reihe weiterer Parameter, die alternativ auch über Umgebungsvariablen gesetzt werden können. Die meisten davon sind optional. Nur die drei oben erwähnten Parameter sind zwingend für einen Cluster-Knoten nötig. Es gibt auch einen neuen Server-Konfigurationsparameter, der aber ebenfalls optional ist. Der Standardwert sollte meist passend sein.
Überblick über alle möglichen Parameter:
Environment | Java | Server-Conf | Beschreibung |
FS_CLUSTER_SCHEDULER | cluster.slaveScheduler | Scheduler-Strategie, mit der der Master Aufgaben an die Slaves verteilt. Mögliche Werte:
| |
FS_NODE_UUID | fs.node.uuid | UUID des Nodes (Master oder Slave) Optional, wird sonst zufällig vergeben. | |
FS_NODE_HOST | fs.node.host | Hostname des Nodes (Slave) Optional, wird sonst automatisch ermittelt. | |
FS_HOST | firstspirit.host | Hostname des MastersVerbindungsparameter für den Slave. | |
FS_PORT | firstspirit.port | Port des Masters Verbindungsparameter für den Slave. | |
FS_ENCRYPTION | firstspirit.encryption | Verschlüsselung Standardwert: 2 = ChaCha20 Verbindungsparameter für den Slave. | |
FS_COMPRESSION | firstspirit.compression | Komprimierung Standardwert: 4 = Zstd Verbindungsparameter für den Slave. | |
FS_PASSWORD | firstspirit.password | Applikations-Passwort Standardwert ist das interne Standard-Passwort. Verbindungsparameter für den Slave. | |
FS_SSL_* | fs.ssl.* | Wenn TLS benutzt wird, werden verschiedene optionale Keystore-Parameter verwendet. Verbindungsparameter für den Slave. | |
FS_CLUSTER_SYNC | fs.cluster.sync | Schedule-Konfiguration- und -Log-Synchronisation von den Slaves zum Master Standardwert: true Wenn für Master und Slaves dasselbe geteilte Volume benutzt wird, ist ein Sync unnötig und der Parameter kann auf false gesetzt werden. | |
FS_TOMCAT_URL | Externe Tomcat-URL Wird nur beim ersten Serverstart für die Konfiguration des Webservers benutzt. | ||
FS_INTERNAL_TOMCAT_URL | Interne Tomcat-URL Wird nur beim ersten Serverstart zur Konfiguration des Webservers benutzt. | ||
FS_TOMCAT_USERNAME | Tomcat-Manager-Benutzer Wird nur beim ersten Serverstart zur Konfiguration des Webservers benutzt. | ||
FS_TOMCAT_PASSWORD | Tomcat-Manager-Passwort Wird nur beim ersten Serverstart zur Konfiguration des Webservers benutzt. | ||
FS_WRAPPER_CONF | Wrapper-Konfiguration, die zum Starten benutzt wird. Die Slaves benutzen fs-wrapper.isolated.slave.conf, der Master fs-wrapper.isolated.conf (Default). | ||
FS_REGISTRY_FILE | registry.file | FactoryRegistry-Konfiguration Z. B. ClusterNode.properties, wenn ein Slave gestartet werden soll. Muss in der Regel nicht gesetzt werden, kann alternativ zur Wrapper-Konfiguration benutzt werden. | |
FS_SERVER_LIB | Pfad zum Server-Jar Wird vom Entrypoint des Docker-Containers benutzt und muss in der Regel nicht manuell gesetzt werden. | ||
FS_JAVA_HOME | Java-Home-Pfad Wird vom Entrypoint des Docker-Containers benutzt und muss in der Regel nicht manuell gesetzt werden. | ||
Nutzen Master und Slaves ein gemeinsames Dateisystem (optional), ist der Parameter
-Dfs.cluster.sync=false
zu setzen, um die dann unnötige Synchronisation und das Kopieren von Log- und Konfigurationsdateien zu unterbinden.
Frühere Konfiguration
Im Bereich „Clustering“ kann ein FirstSpirit-Server als Master- oder Slave-Server für den Betrieb in einem Clusterverbund registriert werden.
Kein Mischbetrieb in Clusterumgebungen möglich: Ein Mischbetrieb von Isolated-Servern und Legacy-Servern (siehe dazu Modulentwicklung "Isolated" (→Leitfaden Isolated Mode)) in einem Clusterverbund ist nicht zulässig. Damit kann beispielsweise ein Isolated-Master-Server nicht in einem Verbund mit einem Legacy-Slave-Server (oder umgekehrt) betrieben werden. |