Zentrale Konfigurationsdatei

Es besteht die Möglichkeit, z.B. Netzwerk-Ports und Arbeitsspeicher des BPCs über eine zentrale bpc.env-Datei (bpc.env.sh für Unix-Systeme und bpc.env.cmd für Windows-Systeme) anzupassen. Diese Datei muss im gleichen Verzeichnis (INSTALLATIONSVERZEICHNIS) wie Karaf und OpenSearch liegen.

Wir empfehlen, eigene Konfigurationen durch Kommentare erkenntlich zu machen und evtl. so direkt zu dokumentieren. Dies erleichtert folgende Updates.

Ordnerstruktur mit bpc.env Datei
Illustration 1. Ordnerstruktur mit bpc.env Datei

Sie finden die jeweils für Ihre Version passende bpc.env Datei auf der Downloadseite.

Für das Update einer bestehenden bpc.env beachten Sie bitte den Update Guide.

  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

Unresolved include directive in modules/core/pages/admin/configuration/bpc_env.adoc - include::example$generated/bpc-installationfiles/bpc.env.sh[]
Unresolved include directive in modules/core/pages/admin/configuration/bpc_env.adoc - include::example$generated/bpc-installationfiles/bpc.env.cmd[]

Der Karaf Service Wrapper ignoriert diese Datei. Es wird empfohlen, Service ohne Wrapper (siehe Services) zu nutzen.

Java Laufzeitumgebung

In der Datei kann auch die Umgebungsvariable JAVA_HOME gesetzt werden. Dies sorgt dafür, dass OpenSearch und auch Karaf die dort definierte Java-Version nutzen. Im Auslieferungszustand wird in den bpc.env Dateien JAVA_HOME nicht gesetzt.

Arbeitsspeicher (RAM)

Über das Setzen der Variablen OPENSEARCH_JAVA_OPTS und EXTRA_JAVA_OPTS kann die Zuweisung von Arbeitsspeicher für OpenSearch und Karaf gesetzt werden.

Siehe dazu auch Systemanforderungen

JVM Systemproperties

Über die Variablen OPENSEARCH_JAVA_OPTS für OpenSearch und EXTRA_JAVA_OPTS für Karaf können auch Systemproperties gesetzt werden. Solche Systemproperties werden wie folgt gesetzt -D<name>=<wert>.

Soll zum Beispiel die Standard-Zeitzone der JVM (Java Virtual Machine) auf 'Europe/Berlin' gesetzt werden, dann wird -Duser.timezone=Europe/Berlin zum bestehenden Wert der Variable hinzugefügt.

Beispiel um ein Systemproperty für OpenSearch zu setzen
  • Unix-Systeme

  • Windows-Systeme

export OPENSEARCH_JAVA_OPTS="$OPENSEARCH_JAVA_OPTS -Xms1g -Xmx1g -Duser.timezone=Europe/Berlin"
SET OPENSEARCH_JAVA_OPTS=%OPENSEARCH_JAVA_OPTS% -Xms1g -Xmx1g -Duser.timezone=Europe/Berlin
Beispiel um ein Systemproperty für Karaf zu setzen
  • Unix-Systeme

  • Windows-Systeme

export EXTRA_JAVA_OPTS="$EXTRA_JAVA_OPTS -Xms128m -Xmx512m -Duser.timezone=Europe/Berlin"
SET EXTRA_JAVA_OPTS=%EXTRA_JAVA_OPTS% -Xms128m -Xmx512m -Duser.timezone=Europe/Berlin

Netzwerk Ports

Innerhalb der Datei können über das Setzen der PORT_OFFSET Variable alle Ports auf einmal geändert werden. Alternativ können auch einzelne Ports über das Setzen einzelner Variablen gesetzt werden.

Wir empfehlen, Sichere Verbindung (TLS/HTTPS) einzurichten und den HTTP-Port zu deaktivieren.

Keystore und Truststore

Es wird empfohlen, die Keystore- und Truststore-Dateien außerhalb vom Karaf und OpenSearch, an einer zentralen Stelle, abzulegen. Dies erleichtert zukünftige Updates, da so OpenSearch und Karaf aktualisiert werden können, ohne dass die Konfiguration von TLS wiederholt werden muss.

Standardort Karaf

INSTALLATIONSVERZEICHNIS/karaf/etc/virtimo/ssl

Standardort OpenSearch

OPENSEARCH_CONFIG_VERZEICHNIS/virtimo/ssl

Empfohlener neuer Ort

INSTALLATIONSVERZEICHNIS/ssl

Die bpc.env ist so anzupassen, dass der Karaf die Dateien findet und für OpenSearch ein passender Link angelegt wird. Der Link für OpenSearch ist leider nötig, da der Prozess nicht auf Dateien außerhalb seines Ordners zugreifen darf.

  • Unix-Systeme

  • Windows-Systeme

bpc.env.sh
export ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_SSL_KEYSTORE=../ssl/virtimo_keystore.jks
export ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_SSL_TRUSTSTORE=../ssl/virtimo_truststore.jks
Link anlegen
cd OPENSEARCH_CONFIG_VERZEICHNIS/virtimo
ln -s ../../ssl ssl
bpc.env.cmd
SET ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_SSL_KEYSTORE=../ssl/virtimo_keystore.jks
SET ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_SSL_TRUSTSTORE=../ssl/virtimo_truststore.jks
Link anlegen
rmdir /s OPENSEARCH_CONFIG_VERZEICHNIS\virtimo\ssl
mklink /J OPENSEARCH_CONFIG_VERZEICHNIS\virtimo\ssl ssl

Für die Erstellung des Symlinks unter Windows sind Administrator-Rechte nötig.

Beachten Sie, dass bei dieser Konfiguration OpenSearch und Karaf dieselben Keystore und Truststore Dateien nutzen. Das bedeutet, dass darin alle nötigen Zertifikate mit den passenden Aliases abgelegt sein müssen, die für beide Systemkomponenten nötig sind.

Java Security Settings

In der bpc.env wird über die Umgebungsvariable EXTRA_JAVA_OPTS eine zusätzliche Datei für java.security.properties referenziert. Diese Datei heißt custom.java.security und sollte im gleichen Verzeichnis wie die bpc.env liegen. In der Datei custom.java.security können die security.properties überschrieben werden. So ist es z.B. möglich DNS-Einstellungen oder TLS-Parameter zu ändern. Die bereitgestellte custom.java.security enthält bereits einige Einstellungen zur Härtung von TLS-Verbindungen.

Default custom.java.security
Unresolved include directive in modules/core/pages/admin/configuration/bpc_env.adoc - include::example$generated/bpc-installationfiles/custom.java.security[]

Die Properties beziehen sich auf die Standardeinstellungen der JVM. Es kann sein, dass Karaf oder OpenSearch abweichende Konfigurationsmöglichkeiten bieten und nicht die JVM-Konfiguration berücksichtigen.

Oracle-Datenbank

Falls eine Oracle-Datenbank genutzt wird, kann der Ort der tnsnames.ora-Konfigurationsdatei angegeben werden. Die Konfiguration erfolgt über die Umgebungsvariable oracle.net.tns_admin, welche in der KARAF_SYSTEM_OPTS eingefügt wird, z.B.:

  • Unix-Systeme

  • Windows-Systeme

export KARAF_SYSTEM_OPTS="$KARAF_SYSTEM_OPTS -Dlog4j2.formatMsgNoLookups=true -Doracle.net.tns_admin=/etc/"
SET KARAF_SYSTEM_OPTS=%KARAF_SYSTEM_OPTS% -Dlog4j2.formatMsgNoLookups=true -Doracle.net.tns_admin=C:\oracle\network\admin

Karaf 'pax-jdbc'-Features automatisch installieren

Stellen Sie sicher, dass das Modul PAX JDBC Feature Installer installiert ist.

Nach dem Kopieren des zu verwendenden JDBC-Treibers in das [karaf]/deploy-Verzeichnis müssen Sie normalerweise die pax-jdbc-Features über die Karaf-Shell händisch installieren (siehe auch Datenbanken). Beispiel: feature:install pax-jdbc-oracle

Bei der Ausführung des feature:install-Kommandos versuchen einige der pax-jdbc-Features, JDBC-Treiber für Sie herunterzuladen und zu installieren. Dies ist jedoch nicht immer die Treiberversion, die Sie benötigen.

Über die Umgebungsvariable KARAF_PAX_JDBC_FEATURES_TO_INSTALL kann die Installation automatisiert werden, indem Sie die zu installierenden pax-jdbc-Features in einer durch Kommata getrennten Liste angeben.

Wenn Sie über das [karaf]/deploy-Verzeichnis eigene JDBC-Treiber bereitstellen, dann markieren Sie diese Einträge mit (*). Dann werden die zugehörigen pax-jdbc-Features erst installiert, wenn Ihr mitgelieferter JDBC-Treiber bereits als sogenanntes Wrapped Bundle zur Verfügung steht.

Beispiel:

In diesem Szenario sollen vom BPC auf Oracle, SQLite, Microsoft SQL Server und MariaDB Datenbanken zugegriffen werden. Dafür sollen die notwendigen pax-jdbc Features automatisch installiert werden.

  • Unix-Systeme

  • Windows-Systeme

export KARAF_PAX_JDBC_FEATURES_TO_INSTALL='pax-jdbc-oracle (*), pax-jdbc-sqlite, pax-jdbc-mssql (*), pax-jdbc-mariadb (*)'
SET KARAF_PAX_JDBC_FEATURES_TO_INSTALL=pax-jdbc-oracle (*), pax-jdbc-sqlite, pax-jdbc-mssql (*), pax-jdbc-mariadb (*)

Hier wird pax-jdbc-sqlite sofort installiert, falls noch nicht geschehen.
pax-jdbc-oracle, pax-jdbc-mssql und pax-jdbc-mariadb werden hingegen erst installiert, wenn der zugehörige JDBC-Treiber vom Karaf als sogenanntes Wrapped Bundle zur Verfügung steht.

Wenn nur auf eine Datenbank zugegriffen werden soll, dann ist auch nur ein zu installierendes pax-jdbc Feature anzugeben. Falls auf keine Datenbank zugegriffen werden muss, dann muss die Umgebungsvariable auch nicht gesetzt werden.

jetty.xml anpassen

Wenn Sie die jetty.xml anpassen müssen, um z.B. HTTP Header zu ändern, sollten Sie wie folgt vorgehen.

  • Kopieren Sie die vorhandene Datei INSTALLATIONSVERZEICHNIS/karaf/etc/jetty.xml nach INSTALLATIONSVERZEICHNIS

  • Führen Sie die nötigen Anpassungen an INSTALLATIONSVERZEICHNIS/jetty.xml durch

  • Setzen Sie die Umgebungsvariable ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_CONFIG_FILE über die Zentrale Konfigurationsdatei damit die geänderte jetty.xml berücksichtigt wird

    • Unix-Systeme

    • Windows-Systeme

    export ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_CONFIG_FILE=\${karaf.base}/../jetty.xml
    SET ORG_OPS4J_PAX_WEB_ORG_OPS4J_PAX_WEB_CONFIG_FILE=${karaf.base}/../jetty.xml

Anschließend sollte Ihr INSTALLATIONSVERZEICHNIS wie folgt aussehen:

Ordnerstruktur mit geänderter `jetty.xml`
Illustration 2. Ordnerstruktur mit geänderter jetty.xml

Werte von etc-Dateien überschreiben

Die Konfigurationseinstellungen des Karaf sind im Verzeichnis [karaf]/etc auf diverse Dateien verteilt. Bei einem Karaf-Update geht leicht der Überblick verloren, was zuvor angepasst und in der neuen Version wieder nachgezogen werden muss.
Ein einfaches Überschreiben all dieser Konfigurationsdateien ist nicht zielführend, da somit evtl. neu hinzugekommene Optionen ggf. nicht korrekt gesetzt sind.

Über Umgebungsvariablen können spezifische Werte in den Konfigurationsdateien überschrieben werden. Dabei muss sich der Name der Umgebungsvariable an folgendem Aufbau orientieren: (NAME DER KONFIGURATIONSDATEI)_(NAME DER OPTION).
Bitte dabei die Großschreibung beachten und Leer- und Sonderzeichen durch Unterstriche ersetzen.

Siehe auch Karaf Dokumentation.

Die gesetzten Werte stehen zur Laufzeit zur Verfügung und werden nicht in die jeweiligen Konfigurationsdateien geschrieben. Über die Karaf-Shell können Sie sich per config:list die momentan gesetzten Werte anzeigen lassen.

Beispiel 1: Setzen des SSH Ports

Auszug aus der Datei [karaf]/etc/org.apache.karaf.shell.cfg:

#
# Via sshPort and sshHost you define the address you can login into Karaf.
#
sshPort = 8101

Der Wert der Option sshPort soll per Umgebungsvariable auf 18202 gesetzt werden:

export ORG_APACHE_KARAF_SHELL_SSHPORT=18102

Beispiel 2: Setzen der OpenSearch Hosts

Auszug aus der Datei [karaf]/etc/de.virtimo.bpc.core.cfg:

de.virtimo.bpc.core.opensearch.hosts = https://localhost:9200

Der Standardexport in der bpc.env ist für

  • Unix-Systeme

  • Windows-Systeme

export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=$(($PORT_OFFSET + 9200))
export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_HOSTS="https://localhost:$DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT"
SET /a DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=%PORT_OFFSET% + 9200
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_HOSTS=https://localhost:%DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT%

und überschreibt damit die Konfiguration aus der [karaf]/etc/de.virtimo.bpc.core.cfg mit dem gleichen Wert https://localhost:9200 unter Berücksichtigung der PORT_OFFSET-Variable.

Möchten Sie einen weiteren OpenSearch-Node mit Port-Offset hinzufügen, können Sie das zum Beispiel wie folgt machen:

  • Unix-Systeme

  • Windows-Systeme

export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=$(($PORT_OFFSET + 9200))
export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_HOSTS="https://localhost:$DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT, https://otherhost:$DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT"
SET /a DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=%PORT_OFFSET% + 9200
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_HOSTS=https://localhost:%DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT%, https://otherhost:%DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT%

Keywords: