아래 문서 따라 진행함
nifi.apache.org/docs/nifi-docs/html/administration-guide.html#upgrading_nifi
현재 날짜 (2020.12.15) 기준으로 nifi 공식 홈페이지에서 받을 수 있는 Releases 된 버전은 두가지
1.12.1 버전과 1.11.4 버전
1.11.4 을 먼저 받아 실행한 후, 1.12.1 버전으로 업그레이드 하는 방법을 알아본다.
테스트 NiFi 는 모두 local standalone 으로 동작시킨다.
만약 cluster 구성된 NiFi 업그레이드를 해야 한다면, 모든 노드의 NiFi 를 업그레이드 해야 한다.
< 테스트 환경 OS >
Ubuntu 20.04.1 LTS 64bit
< 1.11.4 버전 설치 >
위에 사이트에서 nifi-1.11.4-bin.tar.gz 를 받는다.
/opt/nifi/old-nifi/ 에 받았다고 하자.
tar -zxvf nifi-1.11.4-bin.tar.gz
명령어로 압축을 해제한다.
< 1.11.4 버전 NiFi 실행 확인 >
bin/nifi.sh start 명령어로 nifi 를 실행하고
조금 기다렸다가 웹브라우저에서
localhost:8080 으로 접속하여 NiFi 가 잘 구동되는지 확인한다.
실행하면 알아서 아래 파일 및 디렉터리들이 생성된다.
content_repository database_repository flowfile_repository provenance_repository work directory logs directory flow.xml.gz file 이 conf directory 내에 생성됨 |
간단하게 몇 가지 작업을 1.11.4 버전에서 진행해본다.
버전 업그레이드를 한 후, 원하는대로 작업이 이어지는지 보기 위함이다.
아래는 간단하게 flow 를 만들고, variables 도 만들고, data content 도 확인해본 모습이다.
< 1.12.1 버전 다운 >
마찬가지로 nifi-1.12.1-bin.tar.gz 파일을 받는다.
이번에는 /opt/nifi/new-nifi 에 받는다.
tar -zxvf nifi-1.12.1-bin.tar.gz 명령어로 압축을 해제한다.
< 1.11.4 버전에서 1.12.1 버전으로 업그레이드 >
conf 내의 파일 구성을 바꾸는 절차를 통해 업그레이드한다.
/opt/nifi/old-nifi/conf 파일들의 내용을 /opt/nifi/new-nifi/conf 파일들의 내용으로 대체하는 방식으로 이루어진다.
old-nifi 에서 필요한 값들을 new-nifi 로 업데이트 할텐데,
이 때 파일 자체를 복사하여 덮어씌우게 되면, new-nifi 에 (있을지도 모르는) 새롭게 추가된 properties 가 사라지게 되므로
확인절차를 거치는 것이 좋다.
업그레이드 할 때 다뤄야하는 파일들과 다루는 방법은 아래와 같다.
- authorizers.xml
- old-nifi 에서 new-nifi 로 복사한다.
- users.xml
- old-nifi 에서 new-nifi 로 복사한다.
- bootstrap-notification-services.xml
- old-nifi 의 속성값들을 new-nifi 에 업데이트한다.
- bootstrap.conf
- old-nifi 의 속성값들을 new-nifi 에 업데이트한다.
- flow.xml.gz
- old-nifi 에서 new-nifi 로 복사한다.
- nifi.properties
- old-nifi 의 속성값들을 new-nifi 에 업데이트한다.
- 아래 속성값들에 대해 추가 설명
- nifi.flow.configuration.file
- 만약 default 값(./conf/flow.xml.gz)을 사용하고 있다면,
(위에서 설명한 것처럼) flow.xml.gz을 old-nifi 에서 new-nifi 로 복사한다. - default 값이 아닌 외부 location을 사용하고 있다면,
old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- 만약 default 값(./conf/flow.xml.gz)을 사용하고 있다면,
- nifi.flow.configuration.archive.dir
- 만약 default 값(./conf/archive)을 사용하고 있다면,
archive 내부의 *flow.xml.gz을 old-nifi 에서 new-nifi 로 복사한다. - default 값이 아닌 외부 location을 사용하고 있다면,
old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- 만약 default 값(./conf/archive)을 사용하고 있다면,
- nifi.database.directory
- old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- nifi.flowfile.repository.directory
- old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- 업데이트 이후 해당 location 으로의 접근 권한이 없다면 데이터를 잃어버릴 수 있으니 백업 후 진행
- nifi.content.repository.directory.default
- old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- nifi.content.repository.directory.content1, nifi.content.repository.directory.content2.... 등
여러 repos 가 old-nifi에 정의되어있다면, 모든 repos 를 똑같이 new-nifi 로 업데이트한다. - 업데이트 이후 해당 location 으로의 접근 권한이 없다면 데이터를 잃어버릴 수 있으니 백업 후 진행
- 업데이트 이후 해당 property 이름이나 propert points(location) 값이 잘못된다면 데이터를 잃어버릴 수 있으니 백업 후 진행
- nifi.provenance.repository.directory.default
- old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다.
- nifi.provenance.repository.directory.provenance1, nifi.provenance.repository.directory.provenance2.... 등
여러 repos 가 old-nifi에 정의되어있다면, 모든 repos 를 똑같이 new-nifi 로 업데이트한다. - 업데이트 이후 해당 provenance repos 가 올바르게 이동되지 않았거나, properties 값이 올바르게 업데이트 되지 않는다면, 과거 이벤트들을 쿼리할 수 없으니(볼 수 없으니) 백업 후 진행
- nifi.flow.configuration.file
- state-management.xml
- 만약 <propert name="Directory"> 가 default 값(./state/local)을 사용하고 있다면,
old-nifi 내의 ./state/local/* 의 값을 new-nifi 로 복사한다. - default 값이 아닌 외부 location을 사용하고 있다면,
old-nifi 의 location 값을 new-nifi 가 가리킬 수 있도록 업데이트 한다. - 만약 클러스터 NiFi 를 업그레이드 하는 중이라면,
old-nifi 의 <property name="Connect String"> 값을 new-nifi 로 업데이트한다.
(zookeeper 는 old-nifi 가 사용하던 그대로 new-nifi 가 사용한다.) - 만약 클러스터 NiFi 를 업그레이드 하는 중이라면,
old-nifi 의 <cluster-provider> 값을 new-nifi 로 업데이트한다. - 만약 zookeeper 도 새롭게 업그레이드 해야 한다면, [링크]를 참고
- 만약 <propert name="Directory"> 가 default 값(./state/local)을 사용하고 있다면,
참고로 눈으로 일일이 보면서 달라진 점을 찾아 업데이트하는 것 보다
diff 명령어를 사용하는 편이 좋다.
예를 들어 a.txt 와 b.txt 의 차이를 보고 싶다면
diff a.txt b.txt
위와 같이 사용하면 됨.
< 1.12.1 NiFi 시작하기 >
old-nifi 의 값들을 모조리 new-nifi 로 옮긴 이후
new-nifi(1.12.1 버전) 를 start 하면 된다.
그럼 old-nifi 의 flow,variable, provenance 등이 새로운 버전으로 옮겨졌는지 확인해보자.
이동이 잘 되었따!
'NiFi' 카테고리의 다른 글
[NiFi] Kerberos protocol 동작 순서 및 NiFi 적용 방법 링크 (0) | 2020.12.30 |
---|---|
[Nifi] NiFi Registry 공부 필기 (0) | 2020.12.30 |
[NiFi] Kubernetes 위에서 NiFi 구동 경험 링크 (0) | 2020.11.25 |
[Nifi] Developer’s Guide 공부 필기 (0) | 2020.11.17 |
[Nifi] Kubernetes 위에서 NiFi 구동시키는 방법 링크 (0) | 2020.11.09 |