Installation

Vorbereitung

  • Docker installieren
  • Das docker-service-environment Repo im GitLab liefert vorkonfigurierte Umgebung aller Services der Archivlösung aus, dessen Konfiguration nur noch entsprechend des eigenen Systems angepasst werden muss. Dieses kann gerne bei uns angefragt werden.

Für Windows-Installation:

  • Um ordnungsgemäß zu funktionieren, sollte der Docker Engine mindestens 4GB Arbeitsspeicher zugewiesen werden.
    Docker Desktop -> Settings -> Resources -> Advanced
  • Wenn Docker mit WSL2 läuft, wird der Speicher automatisch zugewiesen -> Link
  • Falls Docker dann zu viel Speicher verbraucht, kann der Speicherverbrauch limitiert werden -> Link

Für SFTP File Archiv-System

Konfiguration der Archivierung

Die einzelnen Komponenten werden über die applicaton.yml Datein im entsprechenden config Ordner konfiguriert. Welche Einstellungen im Speziellen vorgenommen werden können ist unter der entsprechenden Seite der Dokumentation beschrieben. Der Großteil der Konfiguration wird allerdings über die .env Datei festgelegt und während des Startprozesses auf die einzelnen Services übertragen.

Konfiguration der globalen Archivierungsparameter in .env

docker

  • COMPOSE_PROJECT_NAME Projektname der docker-compose
  • VERSION Version der Microservices

dynamic-starter-service

  • PERIOD_FROM Abstand in Tagen zwischen dem heutigen Datum und dem Anfang der zu archivierenden Zeitspanne
  • PERIOD_TO Abstand in Tagen zwischen dem heutigen Datum und dem Ende der zu archivierenden Zeitspanne
  • SPLIT_INTERVAL_IN_MINUTES Teilen der Zeitspanne in kleinere Zeitbereiche

data-loader

  • ATTRIBUTE_IDS komma-separierte zu archivierende Attribut Ids. Beispiele im Mail-Kontext:
Name des Attributs Verwendung
SECURITY_SERVER_PROTOCOL FSS Protokoll zur Verschlüsselung/Signierung
B3P_SECURE_MIME_MSG_MAIN Ausgehende verschlüsselte Mail
B3P_MIME_MSG_MAIN Ein/ausgehende Mail (je nicht verschlüsselt)
B3P_MIME_MSG_MAIN_ORIG Eingehende (ggf. verschlüsselte) Mail
B3P_MIME_MSG_CONTRL Ausgehende (noch) nicht verschlüsselte CONTRL Mail

b2b database

  • DATABASE_DRIVER_CLASS_NAME Klassenname des Datenbanktreibers (Bsp.: org.apache.derby.jdbc.ClientDriver für Derby Datenbanken)
  • DATABASE_URL URL der Datenbank
  • DATABASE_USER User für den Datenbankzugang
  • DATABASE_PASSWORD Passwort für den Datenbankzugang

sftp archive

  • SFTP_HOST IP-Adresse des SFTP Servers
  • SFTP_PORT SFTP Server Port
  • SFTP_USER Server User
  • SFTP_PASSWORD Server Passwort
  • SFTP_PRIVATE_KEY SSH Key für den SFTP Server
  • SFTP_DIRECTORY Archivverzeichnis auf dem Server

rabbitmq

Hier müssen in der Regel keine Einstellungen vorgenommen werden. User und Passwort wird bereits über die config/rabbitmq/definitions.json festgelegt, diese Werte müssen übereinstimmen.

  • RABBITMQ_HOST Host Adresse (default: rabbitmq)
  • RABBITMQ_PORT MessageQueue Port (default: 5672)
  • RABBITMQ_USER User für die MessageQueue (siehe config/rabbitmq/definitions.json)
  • RABBITMQ_PASSWORD Passwort für die MessageQueue (siehe config/rabbitmq/definitions.json)

elasticsearch

Wird keine externe Elasticsearchinstanz verwendet können auch hier die Standartwerte verwendet werden. Über das Feld INDEX_NAME wird der Name des Archivs innerhalt von Elasticsearch konfiguriert.

  • ELASTICSEARCH_HOST Host adresse (default: elasticsearch)
  • ELASTICSEARCH_HTTP_PORT Host http port (default: 9200)
  • ELASTICSEARCH_PORT Host port (default: 9300)
  • CLUSTER_NAME Index Cluster
  • NODE_NAME Node Name
  • INDEX_NAME Name des Indexes (default: archive)

static-starter-service

  • PERIOD_FROM_STATIC Anfang der zu archivierenden Zeitspanne (yyyy-MM-dd hh:mm:ss)
  • PERIOD_TO_STATIC Ende der zu archivierenden Zeitspanne (yyyy-MM-dd hh:mm:ss)
  • SPLIT_INTERVAL_IN_MINUTES_STATIC Teilen der Zeitspanne in kleinere Zeitbereiche

Logging

Beim Logging schreiben die Services ihre Logs in den Standard-Out, welcher von Docker in die Container Logs geschrieben werden. Das Logging wird in der docker-compose.yml zu jedem Service einzeln konfiguriert.

  • max-size Größe einer Datei
  • max-file Maximale Anzahl von Log-Dateien

Ist die maximale Anzahl erreicht wird die älteste Log-Datei überschrieben, um den verbrauchten Speicher einzugrenzen.

Konfiguration B2B zur Suche im Archivsystem

Damit die B2B die Archiv-Searcher Services zur Suche im Archiv verwendet, muss der entsprechende B2B Archivadapter an den folgenden drei drei GlobalProperties konfiguriert werden:

Eigenschaft Wert
B3P_ARCHIVE_MESSAGE_MONITOR_IMPL org.b2bbp.administration.monitoring.ArchiveMessageMonitorServiceCaller
B3P_ARCHIVE_AS2_MESSAGE_MONITOR_IMPL org.b2bbp.administration.monitoring.ArchiveMessageMonitorServiceCaller
B3P_ARCHIVE_MONITOR_IMPL org.b2bbp.administration.monitoring.ArchiveMessageMonitorServiceCaller

Die Konfigurationen zur Anbindung des Archiv-Searcher und Archiv-Index-Searcher Services werden in der B2B Extension ARCHIVE_CALLER_CONFIGURATION vorgenommen. Darin müssen die Properties analog zu den folgenden Beispielen konfiguriert werden:

ARCHIVE_INDEX_URL=http://host.docker.internal:8280
ARCHIVE_INDEX_PATH_GET_MESSAGE_BY_FILTER=/message
ARCHIVE_INDEX_PATH_GET_COUNT_BY_FILTER=/messagecount

ARCHIVE_FILE_URL=http://host.docker.internal:8180
ARCHIVE_FILE_PATH_GET_MESSAGE_BY_ARCHIVE_ID=/archive
MAIL_ATTRIBUTE_ARCHIVE_FIELD=B3P_MIME_MSG_MAIN

Um eine fehlerfreie Archivsuche in der NUI zu gewährleisten, muss die Extension SEARCH_LAYER_CONFIGURATION ggf. um folgende Werte erweitert werden:

SEARCH_TYPES=ARCHIVE,...
ARCHIVE_PATH=/usr/local/tomcat/tomcat_all/index/archive

Das im ARCHIVE_PATH angegebene Verzeichnis muss manuell erstellt werden.

Start der Archivkomponenten

Die B2B Datenbank und der SFTP Server müssen laufen und erreichbar sein, andernfalls ist die docker-compose.yml nicht ausführbar.

  • Docker hat genug RAM
  • B2B Datenbank läuft und hat alle notwendigen Tabellen
  • SFTP Server läuft und ist konfiguriert
  • Alle Zugänge und Ports sind richtig konfiguriert
  • Wichtig: Unter config/data-loader und config/finish-service müssen die .jar Datein der Datenbanktreiber liegen, diese werden später auf den Servicecontainer kopiert um die entsprechende Funktionalität bereit zu stellen.

Befehl: docker-compose up

Ausführung der Archivierung durch den Start des dynamic-starter-service oder static-starter-service

Der dynamic-starter-service und static-start-service sind in der docker-compose.yml enthalten und im .env konfiguriert, aber werden beim docker-compose up nicht mithochgefahren.

Der dynamic-starter-service erlaubt die Archivierung von Nachrichten mit Abstand zum heutigen Datum (z.b. alle Nachrichten älter als 60 Tage). Dieser wird über die Konfiguration der Cronjobs periodisch hochgefahren.

Der static-starter-service erlaubt die Archivierung einer konfigurierten Zeitspanne. Dieser kann wenn benötigt in der docker-compose.yml einkommentiert werden und manuell per Befehl separat gestartet werden. Befehl: docker-compose up -d --scale static-starter-service=1 static-starter-service

Konfiguration der Cronjobs

Cron wird verwendet um den dynamic-starter-servicezu starten und dazu genutzt, den data-loader sowie finish-service nur zur bestimmten Zeiten laufen lassen zu können um den Zugriff zur Datenbank zu begrenzen.

Hierzu müssen erst die .sh-Skripte aus dem config/host/home-Verzeichnis in das $HOME-Verzeichnis des Dockernutzers kopiert werden. Zusätzlich muss im dynamic-starter-service.sh der absoluten Pfad zum docker-compose.yml angegeben werden.

Die cron-collection.cron enthält die nötigen Befehlzeilen, welche per crontab -e mit dem Dockernutzer(!) eingetragen werden. Um das Cron-Verhalten zu deaktivieren, öffnet man crontab -e und kommentiert die Zeilen mit # aus.

Skalierung der Archivierung

Durch das Starten mehrerer gleicher Services können die Schritte dieser Archivierung einfach skaliert werden. Die Anzahl der einzelnen Services (zunächst ausgenommen RabbitMQ und Elasticsearch) der Lösung kann so nach Bedarf angepasst werden, indem die Anzahl der Serviceinstanzen im Startbefehl mitgegeben wird. Beispiel:

  • docker-compose up --scale data-loader=3 --scale archive-writer=2 -d startet drei Instanzen des data-loaders und zwei Instanzen des archive-writers. Die Namen der Services entsprechen denen der docker-compose.yml und werden nummeriert z.B. data-loader_1.

Wichtige Befehle

View Me   Edit Me