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.
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 Debugginginformationen 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 Keycloak |
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 |
ui.allow-test-in-production-mode |
aktiviert Testläufe von Prozessoren im Production 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:
-
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.
-
Ändern/Löschen von Connections erfordert ein explizites Stoppen der Ziele/Quellen der Connection
-
Beim Wechsel zwischen Entities wird nicht automatisch gespeichert, sondern Sie werden zum Speichern oder Verwerfen der Änderungen aufgefordert.
-
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
Teamwork
Teamwork kann über die Datei ui/conf/iguasu-ui.properties konfiguriert werden:
Parameter | Value |
---|---|
ui.teamwork.diagram |
true | false |
ui.teamwork.header |
true | false |
ui.teamwork.pictures |
true | false |
ui.teamwork.users.not |
user1@example.com, user2@example.com |
ui.teamwork.users.only |
user1@example.com, user2@example.com |
Um die Profilbilder bei der Nutzung mit Keycloak zu aktivieren, muss in Keycloak das Attribut 'picture' über einen Mapper gesetzt werden. Für die Anbindung über Google Account heißt das:
-
Hinzufügen eines
picture
Attributes unterRealm settings/User Profile
-
Hinzufügen eines Mappers mit Namen
picture
unterIdentity Providers/Google/Mappers
-
ID
,Name
undSocial Profile JSON Field Path
aufpicture
seten;Sync mode override
im Zweifelsfall aufForce
setzen; derMapper type
ist einAttribute Importer