Netzwerk

Es wird die zentrale Port-Konfiguration über bpc.env und die Konfiguration von Sichere Verbindung (TLS/HTTPS) empfohlen.

TL;DR

<OPENSEARCH-CONFIG-DIR>/opensearch.yml
http.port: 9200
transport.tcp.port: 9300
os-bpc-plugin.websocket.port: 9203
karaf/etc/de.virtimo.bpc.core.cfg
de.virtimo.bpc.core.opensearch.port = 9200
karaf/etc/org.apache.karaf.shell.cfg
sshPort = 8101
karaf/etc/org.apache.karaf.management.cfg
rmiRegistryPort = 1099
rmiServerPort = 44444
karaf/etc/org.ops4j.pax.web.cfg
org.osgi.service.http.port = 8181
org.osgi.service.http.port.secure = 8282
org.osgi.service.http.enabled = false
org.osgi.service.http.secure.enabled = true
  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

export ORG_APACHE_KARAF_SHELL_SSHPORT=8101
export ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYPORT=1099
export ORG_APACHE_KARAF_MANAGEMENT_RMISERVERPORT=44444
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT=8181
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT_SECURE=8282
export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=9200
export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_TRANSPORT_PORT=9300
export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_WEBSOCKET_PORT=9203

export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_ENABLED=false
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_SECURE_ENABLED=true
SET ORG_APACHE_KARAF_SHELL_SSHPORT=8101
SET ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYPORT=1099
SET ORG_APACHE_KARAF_MANAGEMENT_RMISERVERPORT=44444
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT=8181
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT_SECURE=8282
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_TRANSPORT_PORT=9300
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_WEBSOCKET_PORT=9203
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_PORT=9200
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_OPENSEARCH_HOSTS=https://localhost:9200

SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_ENABLED=false
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_SECURE_ENABLED=true

Um mehrere getrennte Instanzen auf einem Server zu betreiben, müssen diverse Parameter umgesetzt werden. Auch aus anderen Gründen (bereits belegte Ports, …​), können diese Anpassungen nötig sein und sollen hier näher beschrieben werden.

Es wird empfohlen, ausschließlich verschlüsselte Verbindungen zu verwenden. Siehe dazu: Sichere Verbindung (TLS/HTTPS).

Relevante Anpassungsparameter

Grundsätzlich sind folgende Parameter zu berücksichtigen:

  • OpenSearch-Ports (Default 9200-9300 und 9300-9400 Erläuterung siehe unten)

  • OpenSearch-ClusterID (Default opensearch_virtimo)

  • Karaf BPC-Instanz-Name (Default BPC)

  • Karaf-Ports für:

    • HTTP (Default 8181)

    • HTTPS (Default 8282)

    • SSH (Default 8101)

    • JMX/RMI-Port (Default 1099, 44444)

Anpassungsdetails

Unten stehende Karaf-Parameter können auch über die Karaf-Console gesetzt werden (Syntax: config:property-set -p de.virtimo.bpc.core CONFIGKEY CONFIGVALUE). Empfohlen wird das Setzen der Parameter als Umgebungsvariablen in der bpc.env. Alternativ wird an dieser Stelle auch die Konfiguration via Karaf-Konfigurationsdatei im Verzeichnis etc beschrieben.

Es wird dringend empfohlen, Konfigurationsanpassungen nicht direkt in den Karaf-Konfigurationsdateien unter <BPC-INSTALL-DIR>/karaf/etc/ vorzunehmen, sondern die zentrale bpc.env-Datei zu nutzen. Bei Updates der BPC- bzw. Karaf-Installation werden Dateien im etc-Verzeichnis möglicherweise überschrieben oder durch neue Standardversionen ersetzt. Über die bpc.env definierte Umgebungsvariablen bleiben bei Versionswechseln erhalten und erleichtern die automatisierte Bereitstellung und Wartung. Weitere Details zur Syntax und Funktionsweise finden Sie unter Werte von etc-Dateien überschreiben.

OpenSearch-Ports

Die OpenSearch-Ports müssen sowohl im OpenSearch als auch im Karaf angepasst werden, damit beide Produkte wieder miteinander kommunizieren können.

OpenSearch hat im Auslieferungszustand 2 Port Ranges definiert (9200-9300 und 9300-9400) und nimmt sich jeweils den niedrigsten nicht belegten Port. Dies sollte unbedingt geändert und auf einen festen Port definiert werden, da Karaf ohnehin nur genau einen Port abfragt und ansonsten möglicherweise unbewusst mehrere Instanzen des gleichen OpenSearch ausgeführt werden (und auch funktionieren, da sich jede neue Instanz einfach den nächsten Port schnappt und dann sagt "Hey Cluster, ich bin einer von Euch, sprecht mit mir").

OpenSearch selbst liest seine Port-Konfiguration aus der Datei <OPENSEARCH-CONFIG-DIR>/opensearch.yml. Es genügt daher, am Ende der Datei diese drei Werte mit den neuen Ports zu definieren:

http.port: 9200
transport.tcp.port: 9300
# Default: 9203
os-bpc-plugin.websocket.port: 9204

Damit Karaf OpenSearch dann auch unter dem neuen Port erreicht, muss dieser noch im BPC-Konfig-File <Karaf_Root>/etc/de.virtimo.bpc.core.cfg hinterlegt werden (Wert des Parameters http.port aus der OpenSearch-Konfiguration):

de.virtimo.bpc.core.opensearch.port = 9200

Das BPC/Karaf stellt eine Websocket Verbindung zum OpenSearch her (Wert des Parameters os-bpc-plugin.websocket.port aus der OpenSearch-Konfiguration). Der Port muss im BPC nicht konfiguriert werden, da dieser zur Laufzeit vom OpenSearch abgefragt wird.

Anschließend müssen beide Dienste neu gestartet werden.

BPC-Instanz-Name

Das Session Cookie wird ohne Port-Information, also für einen Host unabhängig des verwendeten Ports, abgelegt (Dank RFC6265 "cookies for a given host are shared across all the ports on that host"). Das hat zur Folge, dass man eine Session über mehrere Instanzen hinweg versuchen würde zu verwenden. BPC erkennt korrekterweise, dass es diese Session (einer anderen BPC-Instanz) nicht kennt und entsorgt sie. Das hat zur Folge, dass man sich nicht auf mehreren Instanzen eines Hosts gleichzeitig anmelden könnte. Inzwischen gibt es einen Instanznamen als Prefix für die Session-Informationen, damit können mehrere Sessions innerhalb eines Browsers für den gleichen Zielhost verwaltet werden.

Empfohlen wird, den Instanznamen in bpc.env zu setzen:

bpc.env
  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

export DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_NAME="BPC"
SET DE_VIRTIMO_BPC_CORE_DE_VIRTIMO_BPC_CORE_NAME=BPC

Alternativ kann der Key innerhalb der Datei <Karaf_Root>/etc/de.virtimo.bpc.core.cfg gesetzt werden:

de.virtimo.bpc.core.cfg
de.virtimo.bpc.core.name = BPC

Anschließend bitte den Karaf neu starten.

Karaf-Ports

Karaf benutzt zur Kommunikation unterschiedliche Protokolle und Ports. So stellt es unter anderem eine SSH-, eine HTTP- und eine HTTPS-Schnittstelle bereit. Auch eine JMX/RMI-Schnittstelle wird angeboten und sollte bei bereits belegten Ports angepasst werden.

Der Hinweis auf Neustart des Karaf nach jeglichen Portänderungen sollte an dieser Stelle obsolet sein.

SSH-Port

Karaf stellt unter Linux wie auch unter Windows eine SSH-Schnittstelle für Konfigurations- und Analyse-Zwecke zur Verfügung. Diese ist per Default unter dem Port 8101 erreichbar.

Empfohlen wird, den Port und Host über die bpc.env zu setzen:

bpc.env
  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

export ORG_APACHE_KARAF_SHELL_SSHPORT="8101"
export ORG_APACHE_KARAF_SHELL_SSHHOST="0.0.0.0"
SET ORG_APACHE_KARAF_SHELL_SSHPORT=8101
SET ORG_APACHE_KARAF_SHELL_SSHHOST=0.0.0.0

Alternativ kann dies in der Datei <Karaf_Root>/etc/org.apache.karaf.shell.cfg über folgende Settings geändert werden:

org.apache.karaf.shell.cfg
sshPort = 8101
sshHost = 0.0.0.0

Um zu verhindern, dass der Port auch nach außen erreichbar ist, kann man sshHost an Localhost (127.0.0.1) oder ein anderes lokales Interface binden (0.0.0.0 = Global/alle IPv4-Adressen des Hosts).

HTTP(S)-Port

Die Ports für HTTP und HTTPS können über bpc.env festgelegt werden:

bpc.env
  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT="8181"
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT_SECURE="8282"
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_ENABLED="false"
export ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_SECURE_ENABLED="true"
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT=8181
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_PORT_SECURE=8282
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_ENABLED=false
SET ORG_OPS4J_PAX_WEB_ORG_OSGI_SERVICE_HTTP_SECURE_ENABLED=true

Alternativ werden diese in der Datei <Karaf_Root>/etc/org.ops4j.pax.web.cfg festgelegt:

org.ops4j.pax.web.cfg
org.osgi.service.http.port = 8181
org.osgi.service.http.port.secure = 8282
org.osgi.service.http.enabled = false
org.osgi.service.http.secure.enabled = true

Hier kann das jeweilige Protokoll auch separat aktiviert/deaktiviert werden (bspw. um nur HTTPS zu erlauben).

JMX/RMI-Ports

Die Ports für die JMX/RMI-Schnittstelle können in der bpc.env konfiguriert werden:

bpc.env
  • Unix-Systeme (bpc.env.sh)

  • Windows-Systeme (bpc.env.cmd)

export ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYPORT="1099"
export ORG_APACHE_KARAF_MANAGEMENT_RMISERVERPORT="44444"
export ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYHOST="0.0.0.0"
export ORG_APACHE_KARAF_MANAGEMENT_RMISERVERHOST="0.0.0.0"
SET ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYPORT=1099
SET ORG_APACHE_KARAF_MANAGEMENT_RMISERVERPORT=44444
SET ORG_APACHE_KARAF_MANAGEMENT_RMIREGISTRYHOST=0.0.0.0
SET ORG_APACHE_KARAF_MANAGEMENT_RMISERVERHOST=0.0.0.0

Alternativ werden sie in der Datei <Karaf_Root>/etc/org.apache.karaf.management.cfg über folgende Parameter konfiguriert:

org.apache.karaf.management.cfg
rmiRegistryPort = 1099
rmiServerPort = 44444
rmiRegistryHost = 0.0.0.0
rmiServerHost = 0.0.0.0

Um JMX/RMI nur lokal verfügbar zu machen, kann man (analog zu SSH) auch hier den Listener vom globalen 0.0.0.0 an irgendein lokales Interface (bspw. 127.0.0.1) binden.


Keywords: