일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- aws s3
- Trino
- jvm
- kubernetes
- docker
- MAC address
- tcp
- EC2
- helm
- Kafka
- Network
- zookeeper
- kubeadm
- CSV
- log
- java
- Operating System
- CVAT
- PostgreSQL
- Spring
- JavaScript
- Python
- airflow
- Vision
- Packet
- OS
- ip
- AWS
- grafana
- kubectl
- Today
- Total
JUST WRITE
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에 들어갈 수 있다.
'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 |