[NiFi] Clustering

CHAN LIM·2024년 1월 8일
0

NiFi

목록 보기
11/13
post-thumbnail

Intro.

3개의 머신(인스턴스)으로 NiFi Cluster를 구성하기

  • Apache Zookeeper로 NiFi를 Clustering 하고, 그 방법 정리하기
  • 그 중, Part.1 은 외부 Zookeeper를 설치한 다음에 그것을 적용한다.
    • 이 말은, NiFi는 자체 내장된 Zookeeper가 있다.
      따라서, NiFi Clustering 하는데 쉬운 방법이 있다.

목차.

1. 각 머신에 Java 설치
2. 각 머신에 Zookeeper 설치 및 실행 확인
3. 각 머신에 NiFi 설치 및 실행 확인


4. Clustering 설정
5. Clustering 확인


1. 각 머신에 Java 설치


2. 각 머신에 Zookeeper 설치

일단, 그대로 따라한다.

  • 이후 4번에서 다시 설정을 변경할 것이기 때문에 문제 없다.

3. 각 머신에 NiFi 설치

각 머신마다 NiFi가 동작하는지 확인하자.

  • Port도 http로 변경해서 확인하자.

4. Clustering 설정

※ 모든 머신에서 공통적으로 행해야할 사항이다.

(선택사항) Host 이름과 IP 주소 맵핑하기

$ sudo vi /etc/hosts
127.0.0.1       localhost
127.0.1.1       chan01-VB

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# 추가하기 - 맵핑 시, IP 주소를 입력하지 않고 HostName을 입력하면 편해지기 때문에.
## 작성자에 경우 각 머신의 IP가 다음과 같기 때문에 이러한 상태이다.
192.168.88.101 nifi1
192.168.88.102 nifi2
192.168.88.103 nifi3

추가하기 - 맵핑 시, IP 주소를 입력하지 않고 HostName을 입력하면 편해지기 때문에.


4.1 Zookeeper 설정 파일 수정

$ vi /home/{username}/{설치 경로}/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/{username}/.data/nifi-zk
clientPort=2181

# 추가사항 
server.1=192.168.88.101:2888:3888
server.2=192.168.88.102:2888:3888
server.3=192.168.88.103:2888:3888

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

# 추가사항
admin.enableServer=false
  • Zookeeper의 데이터 파일 Path와 Cluster 구성 정보 삽입
  • 불필요한 admin server는 비활성화

4.2 Cluster Node 식별자 파일 생성

1번 노드

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

2번 노드

$ echo 2 > ~/.data/nifi-zk/myid

3번 노드

$ echo 3 > ~/.data/nifi-zk/myid

4.3 Zookeeper 실행

$ ~/{설치 경로}/zookeeper/bin/zkServer.sh start

ZooKeeper JMX enabled by default
Using config: /home/{~~~}/extools/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

4.4 NiFi state-management.xml

$ sudo nano /opt/nifi/conf/state-management.xml

해당 경로에 존재하는 상태-관리.xml 파일 수정한다.

    -->
    <cluster-provider>
        <id>zk-provider</id>
        <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
        # 해당 부분이 비워져있는데, 아래와 같이 수정한다.
        <property name="Connect String">192.168.88.101:2181,192.168.88.102:2181,192.168.88.103:2181</property>
        <property name="Root Node">/nifi</property>
        <property name="Session Timeout">10 seconds</property>
        <property name="Access Control">Open</property>
    </cluster-provider>

    <!--

이 부분을 수정했다.

<property name="Connect String">192.168.88.101:2181,192.168.88.102:2181,192.168.88.103:2181</property>

ZooKeeper 서버에 연결하는 데 사용되는 서버의 목록과 포트입니다.
Zookeeper Cluster에 맞게 값을 입력한 것이다.


4.5 nifi.properties 수정

$ sudo vi /opt/nifi/conf/nifi.properities

수정사안

수정할 부분이 많으므로 수정한 부분만 작성할 것이다.
세심하게 검토하고 수정하시길...

  • EX) Node 1.
# 각종 Directory 설정
nifi.database.directory=/home/chan01/.data/nifi/database_repository
nifi.flowfile.repository.directory=/home/chan01/.data/nifi/flowfile_repository
nifi.content.repository.directory.default=home/chan01/.data/nifi/content_repository
nifi.provenance.repository.directory.default=home/chan01/.data/nifi/provenance_repository
nifi.status.repository.questdb.persist.location=home/chan01/.data/nifi/status_repository


# http 설정
# Site to Site properties
nifi.remote.input.host=192.168.88.101
nifi.remote.input.secure=false
nifi.remote.input.socket.port=9998

nifi.web.http.host=192.168.88.101
nifi.web.http.port=29080


# Cluster 구성
# cluster common properties (all nodes must have same values) #
nifi.cluster.protocol.heartbeat.interval=5 sec
nifi.cluster.protocol.heartbeat.missable.max=8
nifi.cluster.protocol.is.secure=false

# cluster node properties (only configure for cluster nodes) #
nifi.cluster.is.node=true
nifi.cluster.node.address=192.168.88.101
nifi.cluster.node.protocol.port=9999

# Zookeeper 설정
nifi.zookeeper.connect.string=192.168.88.101:2181,192.168.88.102:2181,192.168.88.103:2181

5. 실행 및 Cluster 확인

각 머신에서 NiFi를 실행한다.

  • zookeeper 서버는 이미 실행 중이다.
$ /opt/nifi/bin/nifi.sh start

이전 NiFi에서 나타나지 않았던,
3 / 3 이 생성됬다.


번외 - NiFi 내장 Zookeeper

$ sudo vi /opt/nifi/conf/nifi.properities

해당 설정파일에서,
nifi.state.management.embedded.zookeeper.start=true
부분을 활성화한다.

그리고, 해당 경로에 zookeeper 설정 파일이 있는데,
우리가 설치한 zookeeper와 동일하다.
따라서, 똑같이 설정을 하면 된다.

$ sudo vi /opt/nifi/conf/zookeeper.properities
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
clientPort=2181

출처

NiFi 내장 Zookeeper
외장 Zookeeper 설치 후 NiFi 연결

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글