JUST WRITE

AWS EC2 Nifi 설치 본문

Data

AWS EC2 Nifi 설치

천재보단범재 2022. 11. 23. 23:56

AWS EC2 Nifi 설치

AWS EC2 Nifi 설치

이번 포스팅에서는 AWS EC2 인스턴스 3개에 Nifi Cluster 구성해보려 한다.

각 EC2는 Amazon Linux 2에 t3.large로 구성하였다.

Nifi 설치에 앞서 각 EC2 인스턴스 필요한 부분을 구성하였다.

Java 설치

Nifi는 Java로 개발되어 JDK 설치가 필요하다.

OpenJDK 11 버전을 각 EC2 인스턴스에 설치하였다.

$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
$ tar xzf openjdk-11.0.2_linux-x64_bin.tar.gz
$ vi ~/.bash_profile

export JAVA_HOME=$HOME/jdk-11.0.2
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin
export PATH

$ source ~/.bash_profile
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode

OpenJDK 11버전을 Download 한 뒤 JAVA_HOME을 PATH을 추가하였다.

Zookeeper 설치

Nifi에는 Zookeeper가 필요하다.

Nifi를 설치하면 내장된 Zookeeper가 있지만 별도로 설치를 하였다.

$ mkdir ~/apps
$ cd ~/apps
$ wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
$ tar xzf apache-zookeeper-3.8.0-bin.tar.gz

# link 생성
$ cd ~
$ ln -s ~/apps/apache-zookeeper-3.8.0-bin nifi-zk

설정에 앞서 각 3개의 인스턴스에 Private IPv4 주소 기준으로 host를 설정하였다.

$ sudo vi /etc/hosts
$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6

${ec2-1 private ip}   nifi1
${ec2-2 private ip}  nifi2
${ec2-3 private ip}   nifi3

$ ping nifi1
PING nifi1 (${ec2-1 private ip}) 56(84) bytes of data.
64 bytes from nifi1 (${ec2-1 private ip}): icmp_seq=1 ttl=255 time=0.020 ms
64 bytes from nifi1 (${ec2-1 private ip}): icmp_seq=2 ttl=255 time=0.030 ms
^C
--- nifi1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1009ms
rtt min/avg/max/mdev = 0.020/0.025/0.030/0.005 ms

Zookeeper 설정파일을 수정하였다.

conf 폴더 밑에 zoo.cfg 파일을 설정값에 맞춰 수정하면 된다.

$ cd ~/nifi-zk/conf
$ cp zoo_sample.cfg zoo.cfg
$ vi zoo.cfg

dataDir=/home/ec2-user/data/nifi-zk

server.1=nifi1:2888:3888
server.2=nifi2:2888:3888
server.3=nifi3:2888:3888

admin.enableServer=false

Zookeeper의 데이터 파일 Path와 Cluster 구성 정보를 넣는다.

불필요한 admin server은 disable 시켰다.

Zookeeper 데이터 파일 Path에 Cluster Node 식별자 파일을 만들어 준다.

$ echo 1 > ~/data/nifi-zk/myid

각 인스턴스 별로 Cluster Node 식별자 파일을 만들어주면 Zookeeper를 실행한다.

$ ~/nifi-zk/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/ec2-user/nifi-zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Nifi 설치

Nifi 설치에 필요한 Java와 Zookeeper 설치를 완료하였다.

이제 Nifi 1.18.0를 설치한다.

$ cd ~/apps
$ wget https://dlcdn.apache.org/nifi/1.18.0/nifi-1.18.0-bin.zip
$ unzip nifi-1.18.0-bin.zip

# link 설정
$ cd ~
$ ln -s ~/apps/nifi-1.18.0 nifi

실행에 앞서 Nifi Configuration 파일을 수정한다.

이번 포스팅에서는 기본적인 설정만 하였다.

state-management.xml, nifi.properties 총 2가지 파일을 수정하였다.

state-management.xml

해당 설정 파일에서 Zookeeper 설정 부분만 수정하면 된다.

Connect String 부분만 Zookeeper Cluster에 맞게 값을 입력해준다.

...
<cluster-provider>
        <id>zk-provider</id>
        <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
        <property name="Connect String">nifi1:2181,nifi2:2181,nifi3:2181</property>
        <property name="Root Node">/nifi</property>
        <property name="Session Timeout">10 seconds</property>
        <property name="Access Control">Open</property>
</cluster-provider>
...

nifi.properties

이제 Nifi 주요 설정을 하는 파일인 nifi.properties를 수정한다.

아래에 수정한 부분만 정리하였다.

# 각종 directory 설정
nifi.database.directory=/home/ec2-user/data/nifi/database_repository
nifi.flowfile.repository.directory=/home/ec2-user/data/nifi/flowfile_repository
nifi.content.repository.directory.default=/home/ec2-user/data/nifi/content_repository
nifi.provenance.repository.directory.default=/home/ec2-user/data/nifi/provenance_repository
nifi.status.repository.questdb.persist.location=/home/ec2-user/data/nifi/status_repository

nifi.remote.input.secure=false

# http 설정, https disable
nifi.web.http.host=nifi1
nifi.web.http.port=8080
nifi.web.https.host=
nifi.web.https.port=

nifi.sensitive.props.key=${12이상 random string}

# security 부분 주석처리
# nifi.security.*

# cluster 구성
nifi.cluster.is.node=true
nifi.cluster.node.address=nifi1
nifi.cluster.node.protocol.port=9999

# zookeeper 설정
nifi.zookeeper.connect.string=nifi1:2181,nifi2:2181,nifi3:2181

nifi.sensitive.props.key에는 12개 이상의 난수 String을 만들어 입력하면 된다.

아래 openssl 명령어로 난수 String 만들 수 있다.

$ openssl rand -base64 12

설정이 끝났으면 Nifi를 구동한다.

$ ~/nifi/bin/nifi.sh start

Nifi Cluster Node IP(Public IP) 기준으로 8080 포트로 Nifi Web UI에 들어갈 수 있다.

728x90
반응형

'Data' 카테고리의 다른 글

Trino 한번 써보겠습니다(1) - Kubernetes에 Trino 설치  (0) 2023.07.17
GlusterFS 설치  (0) 2023.02.26
What is Nifi  (0) 2022.11.21
What is MinIO?  (0) 2022.10.20
What is YARN  (0) 2022.03.27
Comments