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
- SFTP-Server installieren/bereitstellen (Beispiel: Rebex Tiny SFTP Server)
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-composeVERSION
Version der Microservices
dynamic-starter-service
PERIOD_FROM
Abstand in Tagen zwischen dem heutigen Datum und dem Anfang der zu archivierenden ZeitspannePERIOD_TO
Abstand in Tagen zwischen dem heutigen Datum und dem Ende der zu archivierenden ZeitspanneSPLIT_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 DatenbankDATABASE_USER
User für den DatenbankzugangDATABASE_PASSWORD
Passwort für den Datenbankzugang
sftp archive
SFTP_HOST
IP-Adresse des SFTP ServersSFTP_PORT
SFTP Server PortSFTP_USER
Server UserSFTP_PASSWORD
Server PasswortSFTP_PRIVATE_KEY
SSH Key für den SFTP ServerSFTP_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 (sieheconfig/rabbitmq/definitions.json
)RABBITMQ_PASSWORD
Passwort für die MessageQueue (sieheconfig/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 ClusterNODE_NAME
Node NameINDEX_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 Dateimax-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
undconfig/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-service
zu 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 derdocker-compose.yml
und werden nummeriert z.B.data-loader_1
.
Wichtige Befehle
docker-compose up
Baut und startet alle Container, Netzwerke der Archivlösung und startet diese.docker-compose down
Stoppt und löscht bestehende Container und Netzwerke.docker-compose start/stop
Startet bzw. stoppt diedocker-compose
ohne die Container zu löschen bzw. neu zu erschaffen.docker exec -it container-name sh
Öffnet ein Terminal im entsprechenden Container.