아래 가이드에서 현재 나에게 중요하거나 알아둬야겠다고 생각하는 부분만 여기 적는다.

 

nifi.apache.org/docs/nifi-registry-docs/html/getting-started.html

 

Getting Started with Apache NiFi Registry

Now that NiFi Registry has been started, we can bring up the User Interface (UI). To get started, open a web browser and navigate to http://localhost:18080/nifi-registry. The port can be changed by editing the nifi-registry.properties file in the NiFi Regi

nifi.apache.org

nifi.apache.org/docs/nifi-registry-docs/html/user-guide.html

 

Apache NiFi Registry User Guide

Browser Version Chrome Current and Current - 1 FireFox Current and Current - 1 Safari Current and Current - 1 Current and Current - 1 indicates that the UI is supported in the current stable release of that browser and the preceding one. For instance, if t

nifi.apache.org

nifi.apache.org/docs/nifi-registry-docs/html/administration-guide.html

 

Apache NiFi Registry System Administrator’s Guide

In order to facilitate the secure setup of NiFi Registry, you can use the encrypt-config command line utility to encrypt raw configuration values that NiFi Registry decrypts in memory on startup. This extensible protection scheme transparently allows NiFi

nifi.apache.org

 

 

 

NiFi Registry 다운받는 곳 : nifi.apache.org/registry.html

 

NiFi 레지스트리란,

NiFi 의 Flow을 저장하고 관리함

사용자와 그룹 및 정책을 관리함

Flow 를 저장하고 버저닝 할 수 있음. 기록된 버전들을 검색할 수 있고, 되돌릴 수 있음

 

 

 

NiFi 레지스트리는 NiFi 와 다르게 동작하고 있음

실행할 때도 bin/nifi-registry.sh run(혹은 start) 명령으로 NiFi 와 상관없이 실행시킴 [참고]

NiFi 레지스트리를 실행하기 위해서는 JDK 8 (1.8.0_45) 이상이 필요함

 

 

기본 포트 번호는 18080 (물론 conf 를 수정하여 변경 가능)

http://localhost:18080/nifi-registry 를 통해 WebUI 에 접근 가능

 

 

NiFi WebUI 에 나타나는 flow 버전 상태

 

Up to date : 현재 flow 버전이 최신 버전임

Locally modified : 로컬에 변경 사항이 생김

Stale : 새로운 flow 버전을 사용할 수 있음

Locally modified and stale : 로컬에 변경 사항이 생겼고, 새로운 flow 버전을 사용할 수 있음

Sync failure : 레지스트리와 flow 연동에 실패함(최신 flow가 있는지 알 수 없고 업데이트도 불가능)

 

 

 

번들이란, A binary artifact containing one or more extensions that can be run in NiFi or MiNiFi(아티팩트란, 소프트웨어, 시스템, 앱 등이 생성하는 다양한 산출물들을 의미함. 예를 들어 java class 파일이나 jar 파일, 혹은 로그 등)

bucket(버킷) 이란, flow 및 번들같은 버저닝이 되는 항목들을 저장하고 구성하는 컨테이너

Policy(정책) 이란, 사용자 혹은 그룹이 특정 작업을 수행할 수 있는 권한을 정의

정책은 레지스트리에서 버킷별로 수정 가능하며, 총 4가지 정책이 있음.

- all : 레지스트리에서 그리고 NiFi 에서, 사용자는 아래 모든 권한을 갖음

- read : 레지스트리에서, 사용자는 버킷의 Flow 를 읽을 수 있음

    NiFi 에서, 사용자는 버킷에서 Flow import 가 가능

- write : NiFi 에서, 사용자는 버킷의 Flow 에 새로운 commit 을 할 수 있음

- delete : 레지스트리에서, 할당된 사용자는 버킷의 Flow 삭제가 가능

 

 

아무런 policy 도 수정하지 않은 상태라면 누구나 권한을 갖게 되므로 아무나 WebUI 에 접근 가능하다.

로그인 기능을 만들어서 접근을 제한할 수 있음.

WebUI 에는 사용자가 접근 가능한 버킷들만 나타난다.

 

 

 

NiFi 레지스트리는 NiFi 처럼 클러스터로 동작할 수 없다.

관련 내용 링크

issues.apache.org/jira/browse/NIFIREG-150

pierrevillard.com/tag/nifi-registry/

 

 

 

 

NiFi Registry 에 Secure 적용 방법을 아래 유튜브 비디오에서 잘 설명해준다.

www.youtube.com/watch?v=qD03ao3R-a4&t=3s&ab_channel=AndrewLim

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NiFi Registry 는 Persistant Provider 를 사용하여 각 버전 항목의 내용들(flow들)을 저장할 수 있음.

이 provider 는 nifi-registry.properties 에서 구성 가능.

 

세 가지 provider 가 있음

- FileSystemFlowPersistenceProvider

- GitFlowPersistenceProvider

- DatabaseFlowPersistenceProvider

 

< FileSystemFlowPersistenceProvider >

flow 를 단순히 직렬화시켜서 디렉토리( {bucket-id}/{flow-id}/{version} )로 저장

예를 들어, 이름이 MyBucket 인 버켓 안에 두 개의 flow 가 있고, 각각의 id 가 aaa, bbb 라고 하자.

aaa flow 에는 1,2,3,4 버전이 저장되어있고,

bbb flow 에는 1,2 버전이 저장되어 있다고 하면 아래와 같은 디렉토리로 Storage 에 저장된다.

 

< GitFlowPersistenceProvider >

이름에서 알 수 있듯이, Registry 내용을 git 에 연동시켜 저장한다.

다만 NiFi 레지스트리 외부에 저장된 파일을 수정하는 것은 지원되지 않는단다.

 

버킷은 디렉터리에 표시되고 Bucket 내부 flow는 Bucket 디렉터리 내에 파일로 저장됨

flow snapshot 기록은 Git 커밋으로 관리됨 (git 의 history 를 통해 snapshot 기록을 볼 수 있음)

즉, 최신버전의 버킷(최신 flow)만 Git 디렉터리에서 볼 수 있음.

과거 버전은 Git history(commit 기록)에서 검색하여 보면 됨.

 

각 Bucket 에는 bucket.yml 파일이 존재하는데,

이 파일은 NiFi Registry 버킷 및 flow ID에서 실제 디렉터리 및 파일 이름으로의 링크를 관리한다고 함

NiFi 레지스트리가 시작되면 GitFlowPersistenceProvider 는 git 의 commit 기록을 읽고

bucket.yml 파일을 조회하여 각 스냅샷 버전에 대한 버킷 및 flow를 복원한다고 함.

 

bucket.yml 의 정보를 토대로, "버켓"과 

"Bucket 내부에 들어있는 실제 flow snapshot 파일들(이를테면 Bucket_A 내의 Flow_1.snapshot)" 을 연결해주나 봄.

 

실제 git 과 연결할 때, GitFlowPersistenceRepository 는 git 초기화에 사용되는 사용자 이름과 이메일 주소를 사용한다고 함.

여기서 git 초기화란, git init 이나 git clone 을 통해 생성된 .git 이 포함된 디렉토리를 준비하는 것을 말 함.

 

 

 

< Persistant Provider 교체 방법 >

 

아래 유튜브 비디오에서 설명을 잘 해주니 참고

www.youtube.com/watch?v=kK7eVppg9Aw&ab_channel=AndrewLim

 

아래는 공식 문서 내용임.

FileSystemFlowPersistenceProvider 에서 GitFlowPersistenceProvider 로 provider 를 교체한다고 하자.

 

1. 모든 NiFi process group에서 Registry 와 연결 해제(버전 컨트롤 해제)

2. NiFi Registry 멈춤

3. Move the H2 DB (specified as nifi.registry.db.directory in nifi-registry.properties) and Flow Storage Directory for FileSystemFlowPersistenceProvider directories somewhere for back up

4. NiFi Registry 의 provider.xml 에 GitFlowPersistenceProvider 를 구성 (문서 참고)

5. NiFi Registry 재실행

6. 버켓 새로 생성

7. NiFi 의 process group 버전 컨트롤을 다시 시작

 

3번은 뭔 말인지 모르겠는데, back up 용도라는 것 같으니 skip 해도 무방할 듯?

 

git 을 통해 저장한 version 들(flow)을, 새로운 NiFi Cluster 가 가져와서 그대로 사용할 수 있는지 직접 봐야겠다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts