GSB 7.0 Standardlösung

Runtime-Konfiguration

Die Runtime-Konfiguration der einzelnen GSB Service-Instanzen muss individuell für jede einzelne Instanz bereitgestellt werden. Der GSB Kern liefert eine exemplarische Runtime-Konfiguration die als Grundlage für die individuelle Erstellung der Runtime-Konfiguration genutzt werden kann.

Runtime-Konfigurationen der Service-Instanzen eines Systems werden im Ordner /opt/gsbos/runtime abgelegt. Für jede einzelne Service-Instanz existiert ein Unterordner, in dem die Service-Instanz spezifischen Konfigurationen abgelegt wird.

Der GSB Kern enthält Runtime-Konfigurationen für eine exemplarische GSB Infrastruktur, die als Grundlage für den Aufbau einer individuellen GSB Infrastruktur genutzt werden können. Diese finden sich im Infrastructure-Artefakt im Ordner infrastructure/runtime.

Der GSB stützt sich auf Httpd- und Tomcat-Server basierte Service-Instanzen, deren Konfigurationsschema im Folgenden vorgestellt wird.

Aufbau der Runtime-Konfigurationen

Bei den verschiedenen GSB Service-Instanzen und den darin betriebenen Applikationen handelt es sich entweder um Webapplikationen, die in einem Tomcat-Server betrieben werden, oder um Standalone-Applikationen. Der prinzipielle Aufbau der Tomcat-Server basierten Service-Instanzen ist identisch wohingegen die Runtime-Konfigurationen der Standalone-Applikationen applikationsspezifisch und damit individuell ist.

Die folgende Diskussion der Runtime-Konfiguration unterscheidet somit zwischen Tomcat-Server- und Standalone-Service-Instanzen, die im Folgenden vorgestellt werden.

Tomcat-Server basierte Service-Instanzen

Die folgenden Service-Typen und -Instanzen basieren auf einem Tomcat-Server.

  • service
  • repository
  • delivery
  • workflow
  • editor
  • adminportal
  • maildistributor
  • cas

Für jede Service-Instanz ist im Runtime-Basisverzeichnis (Default: /opt/gsbos/runtime) ein Unterordner mit dem Namen der Service-Instanz (bspw. delivery1-preview für den ersten Delivery-Server der Redaktionsumgebung) anzulegen. Unterhalb dieses Ordners finden sich zwei Unterordner:

  • Der Ordner tomcat enthält die Tomcat-Server spezifische Runtime-Konfiguration. Hierbei handelt es sich um globale und allgemeingültige Konfigurationen, die für den Betrieb des Tomcat-Servers benötigt werden.
  • Der Ordner webapps die applikationsspezifischen Runtime-Konfigurationen der einzelnen Webapplikationen der betreffenden Service-Instanz. Die Runtime-Konfiguration einer Webapplikation findet sich in einem gleichnamigen Unterordner.

Im Folgenden Unterkapitel wird zunächst nur der Aufbau der Runtime-Konfiguration des Tomcat-Servers vorgestellt. Die webapplikationsspezifischen Runtime-Konfigurationen werden später vorgestellt.

Tomcat-Server Runtime-Konfiguration

Im tomcat-Verzeichnis befinden sich die Dateien tomcat.env und tomcat.properties.

Runtime-Konfiguration tomcat.env

In der tomcat.env Datei werden die Parameter zum Starten des Tomcats benötigt und enthält globale und instanzspezifische Parameter. Im Wesentlichen handelt es sich hier um Konfigurationen für den JVM-Speicher und die Garbage-Collection. Der Aufbau der Konfiguration ist wie folgt:name: value

CATALINA_OPTS= \ (1)
  -Xms512m \ (2)
  -Xmx2048m \ (3)
  -XX:LargePageSizeInBytes=256m \ (4)
  -XX:ReservedCodeCacheSize=128m \ (5)
  -XX:+UseConcMarkSweepGC (6)

JPDA_ADDRESS=6000 (7)

1Java Runtime-Konfiguration für den Tomcat-Server
2Initialer Speicherpool
3Maximaler Speicherpool
4Minimale Speichergröße des Java-Heap, der permanenten Generierung und des Code-Cache
5Angabe der Reservierten Code Cache Size (Default bei Java 8 wäre 256M)
6Verwendung des Garbage Collection-Algorithmus Concurrent Collector um Garbage Collection-Vorgänge im Hintergrund auszuführen
7Port zum Debuggen des Tomcat. Um das Debugging zu aktivieren, muss noch die Umgebungsvariable JPDA_TRANSPORT=dt_socket gesetzt werden
Runtime-Konfiguration tomcat.properties

In der Datei tomcat.properties wird die Konfiguration des Tomcat-Servers vorgenommen. Hier werden die instanzspezfischen Konfigurationen der server.xml und web.xml definiert.

Die exemplarische Runtime-Konfiguration des Content-Repositories der Redaktionsumgebung sieht wie folgt aus:

Runtime-Konfiguration repository-preview

#######################################################################
#
# Plattformspezifische Tomcat Konfiguration
#
#######################################################################

# Konfiguration Tomcat
tomcat.server.hostname=repository.preview.example.com
tomcat.server.port=6005
tomcat.server.shutdown=__TomcatShutdownPassword__
tomcat.server.jvmRoute=repository-preview

# Konfiguration Tomcat HTTP
tomcat.server.http.port=6001

# Konfiguration Tomcat AJP
tomcat.server.ajp.port=6009

# Konfiguration Tomcat JMX Remote Lifecycle Listener. Definiert die Ports fuer
# JMX/RMI Server Verbindung von Clients hinter einer Firewall
tomcat.server.jmxRemoteLifecycleListener.rmiRegistryPortPlatform=6003
tomcat.server.jmxRemoteLifecycleListener.rmiServerPortPlatform=6004

# Konfiguration des Mail SMTP Hosts
tomcat.context.mail.smtp.host=mail.extern.example.com

tomcat.server.deployIgnore=replication

#######################################################################
#
# Optionale Properties
#
#######################################################################

# Konfiguration Tomcat HTTP
tomcat.server.http.maxKeepAliveRequests=100
tomcat.server.http.maxThreads=125
tomcat.server.http.compression=on
tomcat.server.http.compressionMinSize=2048
tomcat.server.http.compressibleMimeType=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json

# Konfiguration Tomcat AJP
tomcat.server.ajp.maxThreads=200
tomcat.server.ajp.connectionTimeout=300000

#######################################################################
#
# Default Properties
#
#######################################################################
tomcat.web.development=false
tomcat.web.checkInterval=0
tomcat.web.genStringAsCharArray=true

Tabelle 1. Beschreibung der Tomcat Properties

Property-NameBeschreibung
tomcat.server.hostnameHostname des Servers
tomcat.server.jvmRouteName der JVM-Route
tomcat.server.http.portTomcat HTTP-Port
tomcat.server.ajp.portTomcat AJP-Port
tomcat.context.mail.smtp.hostHostname des SMTP-Host zum versenden von Mails
tomcat.server.deployIgnoreZu ignorierende Webapps die nicht deployed werden sollen
tomcat.server.portPort zum herunterfahren des Tomcats
tomcat.server.shutdownPasswort zum herunterfahren des Tomcats
tomcat.server.jmxRemoteLifecycleListener.rmiRegistryPortPlatformPort des RMI Registry
tomcat.server.jmxRemoteLifecycleListener.rmiServerPortPlatformPort des RMI für die Remote Verbindung
tomcat.server.http.maxKeepAliveRequestsMaximale Anzahl der HTTP Verbindungen
tomcat.server.http.maxThreadsMaximale Anzahl der Threads des HTTP-Connectors
tomcat.server.http.compressionAktivieren/Deaktivieren der HTTP/1.1 GZIP-Komprimierung
tomcat.server.http.compressionMinSizeAngabe der Mindestmenge bevor diese komprimiert wird
tomcat.server.http.compressibleMimeTypekommaseparierte Liste der zu komprimierenden Mime-Typen
tomcat.server.ajp.maxThreadsMaximale Anzahl der Threads des AJP-Connectors
tomcat.server.ajp.connectionTimeoutTimeout des AJP-Connectors in Millisekunden
tomcat.web.developmentAktiviere/Deaktiviere Jasper im Entwicklungsmodus
tomcat.web.checkIntervalInterval (in sekunden) in der die JPS-Seiten auf Änderungen geprüft werden
tomcat.web.genStringAsCharArrayAktiviere/Deaktiviere Umwandung von Strings in Chars (true verbessert in einigen Fällen die Leistung)

Weitere Informationen zu den Properties sind auf folgenden Seiten zu finden:

Hinweis:

Alle Tomcat-Server bezogenen Properties beginnen entweder mit dem Prefix tomcat.server und beziehen sich auf die Konfiguration der server.xml oder mit dem Prefix tomcat.web und beziehen sich auf die web.xml.

Die konkreten Propertynamen orientieren sich an den entsprechenden Definitionen in den beiden angesprochenen Dateien. Die Property tomcat.server.port definiert somit den Port unter dem der Tomcat-Server betrieben wird.

Weiterführende Informationen zu den Properties finden sich damit auch in den entsprechenden Dateien eines Standard Tomcat-Server und können somit dort bei Bedarf nachgelesen werden.

Webapplikationen

Die Laufzeitkonfiguration der einzelnen Webapplikationen wird im Runtime-Verzeichnis einer Service-Instanz wie oben skizziert im Ordner webapps definiert. Für jede Webapplikation ist ein Unterordner mit dem Namen der betreffenden Webapplikation enthalten, der die Runtime-Konfiguration der Webapplikation beinhaltet.

Der GSB stellt die folgenden Webapplikationen zur Verfügung, deren Konfiguration jeweils auf eigenen Unterseiten beschrieben ist:

Standalone-Applikation basierte Service-Instanzen

Der GSB nutzt folgenden Standalone-Applikationen, deren Runtime-Konfiguration in diesem Kapitel vorgestellt wird:

  • httpd: Die Auslieferung der Webseiten und -inhalte erfoglt durch einen Apache-Webserver.
  • solr: Die eigentliche Suchfunktionalität wird durch einen Solr

httpd Runtime-Konfiguration

Für jede Service-Instanz ist im Runtime-Basisverzeichnis (Default: /opt/gsbos/runtime) ein Unterordner mit dem Namen der Service-Instanz (bspw. httpd für den ersten httpd Webserver) anzulegen.

Hinweis:
Auf einem Server wird üblicherweise nur eine httpd-Instanz betrieben, da es ansonsten zu Portkonflikten kommt. Wenn auf einem Server bspw. sowohl eine Preview- als auch Live-Auslieferung erfolgen soll, dann müssen beide Konfigurationen in einem Webserver definiert werden.

Die Runtime-Konfiguration des httpd-Servers besteht aus den folgenden Definitionen:

  • balancer enthält die Tomcat Balancer Definitionen
  • conf.d enthält die GSB spezifischen globalen httpd-Konfigurationen
  • variables enthält plattformspezifische Konfigurationen
balancer-Definitionen

Das Verzeichnis balancer enthält, unterteilt nach Zonen, die Balancer Konfiguration des Apache-Webservers.

Balancer-Definition balancer-preview

# Setzen der Balancer Mitglieder,
# zum deaktivieren bitte auskommentieren,
# zum erweitern bitte eine BalancerMember Zeile kopieren und anpassen
<Proxy balancer://balancerpreview>
  BalancerMember ajp://delivery.preview.example.com:6109 route=delivery1-preview
  BalancerMember ajp://delivery.preview.example.com:6119 route=delivery2-preview
  ProxySet nofailover=off
  ProxySet stickysession=JSESSIONID
</Proxy>

Die Konfiguration umfasst die Standardkonfiguration eines Tomcat-Balancers des Apache Moduls Balancer. Details zur Balancer-Definition können der Dokumentation des Apache Moduls Mod Balancer entnommen werden. Plattformspezifische Anpassungen umfassen in jedem Fall die individuelle Definition der im jeweiligen Balancer enthaltenen Tomcat-Server (BalancerMember).

Verzeichnis conf.d

Das Verzeichnis conf.d enthält den Einstiegspunkt der Apache Konfiguration des GSB. Hier befindet sich die Datei gsbos.conf, welche die benötigten globalen Konfigurationen includiert. Diese Konfigurationsdatei muss in dem vom System- bzw. Applikations-Betrieb bereitgestellen Apache berücksichtigt und geladen werden werden.

Konfigurationsdatei gsbos.conf

# Pfadangabe des installieren Service-Type httpd
Define GsbosHttpdBaseDir /opt/gsbos/software/httpd
# Pfadangabe des Runtime Verzeichnis
Define GsbosRuntimeBaseDir /opt/gsbos/runtime

#################################################################
# Laden der HTTP Variablen des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadVariables.conf

# Laden der HTTP Module des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadModules.conf

# Laden der HTTP Macros des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/macro/*.conf

# Laden der HTTP vHosts des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadVhosts.conf

Beschreibung der gsbos.conf-Properties:

Property-NameBeschreibung
GsbosHttpdBaseDirBasisordner für die GSB spezifischen Webserver (Konfigurations-)Dateien (Makros, VHosts, etc.). Diese Property muss nur angepasst werden, wenn die GSB Service-Typen nicht im Standardverzeichnis installiert werden.
GsbosRuntimeBaseDirBasisordner der GSB Runtime-Konfiguration. Diese Property muss nur angepasst werden, wenn die Runtime-Konfiguration nicht im Standardverzeichnis abgelegt wird.
Include loadVariables.confDie loadVariables Datei enthält einige globale und allgemeingültige httpd-Definitionen und muss daher als erstes geladen werden.
Include loadModules.confDie Datei loadMacros lädt die für den Betrieb des GSB httpd benötigten Module.
Include MacrosDie Virtual-Host-Definitionen der einzelnen GSB-Mandanten werden mit Hilfe von Macros definiert. Die Konfigurations-Dateien im macro-Ordner enthalten die GSB spezifischen Macro-Definitionen.
Include loadVhosts.confDie Virtual-Host-Definitionen der GSB-Mandanten werden über die Datei loadVhosts geladen.

 

Hinweis:
Der Aufbau und Inhalt der Datei gsbos.conf muss in der Regel nicht angepasst werden. Durch Auslagerung der Datei in die Runtime-Konfiguration besteht allerdings die Möglichkeit der einfachen Anpass- und Erweiterbarkeit durch den Plattformbetreiber.
Verzeichnis variables

Das Verzeichnis variables enthält die Konfigurationsdatei platform_variables.conf. Über diese Datei können einzelne Zonen (Live, Preview, Service) abgeschaltet und die CAS-Authentifikation deaktiviert werden. Zusätzlich kann diese Datei genutzt werden um vorhandene Variablen (z.B. mandantenspezifische Server- und Alias-Namen) Plattformspezifisch zu überschreiben.

Konfigurationsdatei platform_variables.conf

# Pfadangabe des installieren Service-Type httpd
Define GsbosHttpdBaseDir /opt/gsbos/software/httpd
# Pfadangabe des Runtime Verzeichnis
Define GsbosRuntimeBaseDir /opt/gsbos/runtime

#####################################################################
# Laden der HTTP Variablen des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadVariables.conf

# Laden der HTTP Module des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadModules.conf

# Laden der HTTP Macros des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/macro/*.conf

# Laden der HTTP vHosts des GSB/OS
Include ${GsbosHttpdBaseDir}/conf/include/loadVhosts.conf

Beschreibung der platform_variables.conf-Properties:

Property-NameBeschreibung
editor_use_cas_authDie Variable definiert ob der Webserver eine CAS-Authentisierung unterstützen soll (bspw. für eine Anmeldung am Adminportal oder Editor). Wenn keine CAS-Authentisierung benötigt wird, dann muss die Variablendefinition auskommentiert werden.
EnableHttpsVhostsWenn diese Variable definiert ist, dann lädt der Webserver über die Datei loadVhosts.conf (s.o.) die https-Unterstützung.
EnableLiveVhostsBei Definition dieser Variable werden die Live-Vhost-Definitionen der GSB-Mandanten geladen.
EnablePreviewVhostsBei Definition dieser Variable werden die Preview-Vhost-Definitionen der GSB-Mandanten geladen.
EnableServiceVhostsWenn diese Variable definiert ist, dann lädt der Webserver die Vhost-Definitionen für das Adminportal.

 

Hinweis:
Die Vhost-Definitionen sind innerhalb der GSB-Mandanten im httpd-Subprojekt in Unterordner für Live, Preview, Service (s.a. Mandant standardlsg)

solr Runtime-Konfiguration

Für jede Service-Instanz ist im Runtime-Basisverzeichnis (Default: /opt/gsbos/runtime) ein Unterordner mit dem Namen der Service-Instanz (bspw. solr-preview für den ersten Solr-Server der Redaktionsumgebung) anzulegen.

Die Runtime-Konfiguration einer solr-Service-Instanzg besteht ausschließlich aus der Datei solr.env, die wie folgt aufgebaut ist:

Runtime-Konfiguration solr-preview

# Pfad zu den configsets
SOLR_CONFIGSETS_DIR=/opt/gsbos/software/solr/configsets
# Pfad zum Solr Home Verzeichnis
SOLR_HOME=/opt/gsbos/software/solr/preview
# Pfad zu den Solr Libs
SOLR_SHARED_LIB_DIR=/opt/software/solr/default/lib

# Remote Connection Port
SOLR_RMI_PORT=6403
# Solr Port
SOLR_PORT=6401
# Port zum stoppen des Solr
SOLR_STOP_PORT=6405

Beschreibung der Solr-Properties:

Property-NameBeschreibung
SOLR_CONFIGSETS_DIRBasisordner für die Solr Configsets (s.a. https://lucene.apache.org/solr/guide/7_0/config-sets.html)
SOLR_HOMEBasisordner der Solr-Instanz. Der GSB unterscheidet verschiedene Instanzen, preview für die Redaktiongsumgebung, master für den Solr-Master der Liveumgebung und replication für die Solr-Replication Server der Liveumgebung.
SOLR_SHARED_LIB_DIRVerzeichnis in dem Shared-Libraries des Solr-Server gesucht werden (s.a. Installationsanleitung)
SOLR_RMI_PORTPort für RMI-Verbindungen zum Solr-Server
SOLR_PORTPort unter dem der Solr-Server betrieben wird. Dieser Port wird durch die Indizierung und für die Suche durch die Delivery- oder Editor-Instanzen genutzt.
SOLR_STOP_PORTPort zum Stoppen des Solr-Servers