3개의 머신(인스턴스)으로 NiFi Cluster를 구성하기
이 말은, NiFi는 자체 내장된 Zookeeper가 있다.
따라서, NiFi Clustering 하는데 쉬운 방법이 있다.
1. 각 머신에 Java 설치
2. 각 머신에 Zookeeper 설치 및 실행 확인
3. 각 머신에 NiFi 설치 및 실행 확인
4. Clustering 설정
5. Clustering 확인
일단, 그대로 따라한다.
- 이후 4번에서 다시 설정을 변경할 것이기 때문에 문제 없다.
각 머신마다 NiFi가 동작하는지 확인하자.
- Port도 http로 변경해서 확인하자.
※ 모든 머신에서 공통적으로 행해야할 사항이다.
(선택사항) 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을 입력하면 편해지기 때문에.
$ 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는 비활성화
1번 노드
$ echo 1 > ~/.data/nifi-zk/myid
2번 노드
$ echo 2 > ~/.data/nifi-zk/myid
3번 노드
$ echo 3 > ~/.data/nifi-zk/myid
$ ~/{설치 경로}/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/{~~~}/extools/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
$ 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에 맞게 값을 입력한 것이다.
$ 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
각 머신에서 NiFi를 실행한다.
- zookeeper 서버는 이미 실행 중이다.
$ /opt/nifi/bin/nifi.sh start
이전 NiFi에서 나타나지 않았던,
3 / 3 이 생성됬다.
$ 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