Do uruchomienia kompletnego środowiska niezbędne jest narzędzie o nazwie Apache NiFi Registry. Rozwiązanie to ma za zadanie przechowywać i kontrolować wersje zbudowanych przez nas przepływów danych. W ten sposób, gdy pracujemy nad przepływem, a w tym samym czasie środowisko ulegnie awarii, cała nasza praca zostanie bezpiecznie zachowana w NiFi Registry. Kolejnym dużym argumentem przemawiającym na korzyść NiFi Registry jest kontrola wersji. W przypadku gdy posiadamy wiele serwerów hostujących NiFi, możemy w łatwy sposób kontrolować spójność oraz integracje wersji przepływów między instancjami. W poniższym poradniku przedstawię trochę niestandardową konfigurację, ponieważ skonfiguruje NiFi Registry tak, aby przechowywał wersje przepływów danych przy użyciu serwisu Github.
Aktualizacja systemu
Każdą instalację zaczynamy od aktualizacji pakietów systemu operacyjnego
sudo dnf update -y
Instalacja pakietu Java
Do działania NiFi Registry wymagany jest zainstalowany pakiet Java OpenJDK 8 lub 11.
sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Utworzenie repozytorium
Następnie, utwórzmy repozytorium na Github.
Wygenerowanie tokena
Do konfiguracji wymagany jest „Personal access token”, aby wygenerować token należy przejść do „Developer settings” i kliknąć „Generate new token”, a następnie zaznaczyć odpowiednie opcje jak na poniższy zrzucie ekranu.
Instalacja NiFi Registry
Z racji tego, że poprzednio do instalacji NiFi użyliśmy wersji 1.15.3 taką też wykorzystamy dla NiFi Registry, zatem należy pobrać i rozpakować odpowiednią wersję za pomocą poleceń.
sudo cd /data
sudo wget https://archive.apache.org/dist/nifi/1.15.3/nifi-registry-1.15.3-bin.tar.gz
sudo tar vzxf nifi-registry-1.15.3-bin.tar.gz
sudo ln -s /data/nifi-registry-1.15.3 /data/nifi-registry
sudo cd nifi-registry
Następnie, w pliku nifi-registry.properties, należy edytować poniższą wartość.
sudo nano conf/nifi-registry.properties
nifi.registry.web.http.host=localhost.lan
Dodaj service, który pozwoli poprzez komendę systemctl uruchomić NiFi Registry.
sudo bin/nifi-registry.sh install
Następnie, należy zintegrować repozytorium Github z NiFi Registry, w tym celu do katalogu z NiFi Registry pobierzmy wcześniej przygotowane repozytorium.
git clone https://github.com/username/versioned_flows.git
W pliku konfiguracyjnym providers.xml należy za komentować sekcje org.apache.nifi.registry.provider.flow.FileSystemFlowPersistenceProvider
oraz od komentować
org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider
sudo nano conf/providers.xml
<!--
<flowPersistenceProvider>
<class>org.apache.nifi.registry.provider.flow.FileSystemFlowPersistenceProvider</class>
<property name="Flow Storage Directory">./flow_storage</property>
</flowPersistenceProvider>
-->
<flowPersistenceProvider>
<class>org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider</class>
<property name="Flow Storage Directory">./versioned_flows</property>
<property name="Remote To Push">origin</property>
<property name="Remote Access User">username</property>
<property name="Remote Access Password">personal_access_token</property>
<property name="Remote Clone Repository">https://github.com/username/versioned_flows.git</property>
</flowPersistenceProvider>
Wymagane jest zaktualizować daemon oraz uruchomić NiFi Registry, ostatnie polecenie spowoduje, że NiFi Registry będzie uruchamiany wraz z uruchomieniem maszyny.
sudo systemctl daemon-reload
sudo systemctl start nifi-registry
sudo systemctl enable nifi-registry
Kolejno, należy dodać NiFi Registry do konfiguracji NiFi.
Następnie, należy dodać nowy Bucket do NiFi Registry, który jest dostępny pod adresem http://localhost.lan:18080/nifi-registry, w którym będziemy zapisywać przepływy.
Dla przykładu dodamy flow do stworzonego wcześniej Bucketu.
W serwisie Github we wcześniej stworzonym repozytorium pojawił się nowy Bucket.
a także zapisany przepływ