Konfiguration

Allgemeines

Bedingungen

IGUASU setzt eine vorhandene Java Runtime in Version 17 voraus.
Diese muss über die Umgebungsvariable JAVA_HOME verfügbar gemacht werden.

Falls JAVA_HOME nicht systemweit verfügbar gemacht werden kann, oder mehrere unterschiedliche Runtimes auf dem System installiert sind, so kann JAVA_HOME explizit für IGUASU in der Datei ./bin/iguasu-env.sh konfiguriert werden.

Wichtige Befehle

  1. Installation/Deinstallation des systemd Services

    ./bin/iguasu.sh install|uninstall
  2. Starten von IGUASU im Vordergrund (Logausgabe erfolgt in Konsole, beendet wird mit ctrl/strg + c)

    ./bin/iguasu.sh run
  3. Starten/Stoppen von IGUASU im Hintergrund

    ./bin/iguasu.sh start|stop

Konfiguration NiFi

Linux System-Konfiguration

Zur Vorbereitung des Systems lesen Sie in der NiFi Dokumentation den Abschnitt Best Practices.

Die hier in den Best Practices verlinkten Einstellungen können die Performance von IGUASU stark beeinflussen bzw. bei zu geringen Werten zu Problemen führen!

Sizing

NiFi ist grundsätzlich dafür designt alle verfügbaren Ressourcen des Knotens zu verwenden. Prozessoren, RAM, Netzwerk und Festplatte.

Das größte Bottleneck ist typischerweise Disk I/O. Tritt das auf, ist es sinnvoll jedem Repository (Content, FlowFile, Provenance) eine dedizierte Platte zuzuordnen. Ein Repository (z.B. Content) kann auch selbst noch über mehrere Platten bzw. Verzeichnisse verteilt werden. SSDs sind besser als Festplatten.

NiFi kann FlowFiles jeder Größe verarbeiten und hält diese dabei nicht komplett im Speicher. Somit reichen typischerweise 8 GB bis 16 GB Java Heap aus. Es ist aber zu bedenken, dass einzelne Prozessoren auch mehr Speicher benötigen können und z.B. auch ein komplettes XML als DOM in den Speicher laden können, wenn sie so implementiert sind (die typischen Record basierten Prozessoren tun dies aber nicht).

Empfehlungen:

  • At least 4 cores per NiFi node (more is better and 8 cores usually provides the best starting point for the most common use cases)

  • At least 6 disks per NiFi node to ensure dedicated disks for repositories

  • At least 4GB of RAM for the NiFi heap

Content Archiving

Der Content der FlowFiles wird normalerweise aus dem Content Repository gelöscht, sobald ein FlowFile NiFi verläßt - also z.b. der Flow an einem Prozessor endet. Es gibt aber das Content Archiving, welches sich konfigurieren lässt.

Die Archivierung dient dazu, dass man über die Provenance der FlowFiles (also den Verlauf, den sie durch die Flows genommen haben) auch jeweils den Content an den Prozessoren einsehen kann. Ebenso kann hierüber an der jeweiligen Stelle ein “Replay” mit den Daten erfolgen. Die Properties, um dies zu steuern sind:

nifi.content.repository.archive.max.retention.period=12 hours
nifi.content.repository.archive.max.usage.percentage=50%
nifi.content.repository.archive.enabled=true

Wird die Archivierung so eingeschaltet, werden “content claims” (der Content in NiFi-Stücken) im Content Repository jeweils in archive Unterordner verschoben und nicht gelöscht. Da hier nur ein move stattfindet, sollte das sehr schnell sein und keine Last erzeugen.

Die retention.period und die usage.percentage geben an, wann die Daten dann letztendlich gelöscht werden sollen. Beides sind weiche Kriterien - wenn ein Checkpoint erkennt, dass sie überschritten sind, werden die ältesten Dateien gelöscht, bis das Kriterium erfüllt ist.

Es ist sehr wichtig, dass entweder genug Platz auf der Festplatte ist, so dass die nifi.content.repository.archive.max.usage.percentage (hier 50%), nicht ständig eintritt oder nifi.content.repository.archive.enabled auf false geschaltet wird. Ist die Archivierung aktiviert, es gibt aber grundsätzlich weniger freien Plattenplatz als hier als Grenze eingestellt ist, wird das System sehr langsam und potenziell instabil.

Konfiguration IGUASU UI

IGUASU UI kann über die Datei "iguasu-ui.properties" im Verzeichnis iguasu-x.x.x/ui/conf konfiguriert werden.

Im Folgenden werden die wichtigsten Parameter erklärt:

Webserver Konfiguration

Parameter Bedeutung

server.port

der Port auf dem die Oberfläche von IGUASU UI läuft

server.ssl.key-store

Der Ort an dem der Java Keystore liegt. Dieser wird benötigt, falls Sie die Oberfläche über HTTPS aufrufen möchten.

server.ssl.key-store-password

Das Passwort für den Keystore

server.ssl.key-alias

Der Alias für das SSL Zertifikat

server.ssl.key-password

Das Passwort für das SSL Zertifikat

Logging

Parameter Bedeutung

logging.file.name

Der Ort an dem IGUASU UI die Log Dateien speichert

logging.level.*

Verschiedene Logging Filter. Default ist INFO. Um Debuginginformationen zu erhalten, stellen Sie das Level auf DEBUG

OpenID Connect Konfiguration

registration-id und provider-id können frei gewählt werden, müssen allerdings eindeutig sein
Ein Beispiel finden Sie unter (OIDC LINK).

Parameter Bedeutung

spring.security.oauth2.client.registration.<registration-id>.client-name

Name des OIDC Provider, z.B. Virtimo Keycloack

spring.security.oauth2.client.registration.<registration-id>.client-id

die ClientId unter der IGUASU im Provider registriert ist

spring.security.oauth2.client.registration.<registration-id>.client-secret

das Client Secret

spring.security.oauth2.client.provider.<provider-id>.user-name-attribute

das Mapping für den Benutzernamen, z.B. username oder email

spring.security.oauth2.client.provider.<provider-id>.issuer-uri

die Url unter der IGUASU nach der OpenID Provider Konfiguration sucht

IGUASU UI

Parameter Bedeutung

ui.security-enabled

aktiviert die Absicherung der Webanwendung und erfordert die Konfiguration des OpenID Connect Providers

ui.production-mode

aktiviert den Production Mode
Weitere Informationen finden Sie unter Production Mode vs Development Mode

ui.allow-test-in-production-mode

aktiviert Testläufe von Prozessoren im Production Mode
Weitere Informationen finden Sie unter Production Mode vs Development Mode

ui.data-directory

der Ort an dem IGUASU UI Laufzeitdaten ablegt

ui.nifi.directory

der Ort an dem IGUASU UI nach der lokalen NiFi Installation sucht

ui.nifi.url

die URL unter der NiFi läuft

ui.nifi.security.keystore

der Keystore in dem das Zertifikat zur Kommunikation mit NiFi abgelegt ist

ui.nifi.security.keystorePassword

das Keystore Passwort

ui.nifi.security.keyAlias

der Alias des Zertifikates

ui.nifi.security.keyPassword

das Zertifikatspasswort

ui.nifi.security.truststore

der Truststore in dem das Zertifikat zur Kommunikation mit NiFi abgelegt ist

ui.nifi.security.truststorePassword

das Zertifikatspasswort

Production Mode vs Development Mode

Wenn der Production Mode aktiviert ist, dann gibt es eine Reihe von Änderungen in der Verwendung von Flow:

  1. Der Aufruf von IGUASU im Browser muss über HTTPS erfolgen. Andernfalls startet das IGUASU UI nicht. Im Log wird folgende Fehlermeldung ausgegeben:

    If you run the application with productionmode=true you need to configure authentication and tls for IGUASU
    Please follow the Admin Guide or check the README about how to secure IGUASU.
  2. Ändern/Löschen von Connections erfordert ein explizites Stoppen der Ziele/Quellen der Connection

  3. Beim Wechsel zwischen Entities wird nicht automatisch gespeichern, sondern Sie werden zum Speichern oder Verwerfen der Änderungen aufgefordert.

  4. allow-test-in-production-mode:
    wenn aktiviert, dann wird vor einem Testlauf eines Prozessors eine Warnung ausgegeben
    wenn deaktiviert, dann können keine Testläufe von Prozessoren gestartet werden