Nifi Cluster 관리 페이지

 

Coordinator :

  Cluster 를 이루는 노드들을 관리하는 노드. Zookeeper 에 의해 노드들 중 하나가 Coordinator 로 선출됨.

  Cluster 에 새로운 노드가 생기면 그 새로운 노드에 최신 Flow 를 제공함.

  Coordinator 가 Cluster 에서 사라지면 Zookeeper 가 남아있는 노드들 가운데 하나를 다시 Coordinator 로 선출함.

 

Node :

  Cluster 를 이루는 Nifi. 실제 작업을 수행함

  모든 노드는 각자의 환경에서 동일한 Flow 를 실행함.

  예를 들어 Server 1, 2, 3 위에 Nifi 노드가 하나씩 올라가 있고, A Processor 를 실행한다고 할 때,

  Server 1 에서 노드 1이 A Processor 를 실행하고,

  Server 2 에서 노드 2가 A Processor 를 실행하고,

  Server 3 에서 노드 3이 A Processor 를 실행한다.

  Processor 에서 다루는 데이터는 디스크에 저장된다.

 

Primary : 

  독자적으로 Processor 를 실행함.

  즉, 특정 Processor를 다른 노드에선 실행하지 않고, Primary 에서만 실행하게 할 수 있음.

  예를 들어 외부 네트워크로부터 데이터를 받아오는 Processor 가 있다고 하자.

  모든 노드들이 해당 Processor 를 실행하면 경쟁 상태가 되는 문제가 생길 수 있기 때문에

  해당 Processor 는 Primary 에서만 사용할 수 있도록 하고,

  받은 데이터는 (round robin 등의 정책을 통해) 전체 노드에 나눠주고(로드 밸런싱) 병렬처리 함.

  (물론 해당 방법은 Primary 를 사용하는 대신 singlenode Nifi 에서 실행할 수 있음. 관리자 마음대로 구성하면 됨)

  Primary 가 Cluster 에서 사라지면 Zookeeper 가 남아있는 노드들 가운데 하나를 다시 Primary 로 선출함.

 

Heart beat :

  각 노드들은 (기본적으로) 5초마다 Coordinator 에게 heart beat 를 보내어 "나 살아있다" 라고 알려줌

  만약 모종의 이유에 의해 40초(기본 5초 * 8번) 동안 heart beat 를 보내지 못하는 노드가 생기면

  Coordinator 는 해당 노드를 Cluster 에서 제외시켜버림.

  왜 노드를 끊어버리느냐?

  이유는 각 노드들이 똑같은 Flow 를 갖고 있는지 확인 할 수 없기 때문(동기화를 할 수 없기 때문에)

  어떤 노드가 네트워크가 끊겨 heart beat 를 보내지 못하는 상황인데,

  Nifi Flow 가 업데이트 되었다면 해당 노드는 이 업데이트를 받지 못하여 오래된 Flow 를 갖게 될 것임.

  이러한 동기화 문제가 있기 때문에 heart beat 를 보내지 못하는 노드를 Cluster 에서 제외시키는 것

  (연결이 끊어진 노드는 WebUI (bullbulletin) 에 게시되므로 우리가 직접 눈으로 확인 가능)

  끊긴 노드의 네트워크가 늦게나마 되살아나서 heart beat 를 다시 보내면,

  Coordinator 가 해당 노드를 인식하고 다시 Cluster 에 참여시킴.

  (실제로 Cluster 에서 node 하나가 사라지면 Processor 업데이트가 불가능하더라)

  각 노드들은 어떤 노드가 Coordinator 인지 알고 heart beat 를 보내는 걸까?

  Zookeeper 를 통해 할 수 있다.

  Zookeeper 가 "얘가 Coordinator 야! 얘한테 heart beat 보내면 돼!" 라는 정보를 Znode 로 저장하고 있음.

 

Offload : 

  연결이 끊긴 노드가 실행하고 있던 Flow Files 들은 어떻게 처리 할 것인가?

  그 땐 해당 노드를 offload 시키면 됨.

  그럼 해당 노드가 갖고 있던 Flow Files 이 일 잘 하고 있는 다른 활성 노드들로 넘어가게 됨.

  물론 offload 된 노드 역시 재시작 시키고 Cluster 에 다시 참여시킬 수 있음.

 

 

nifi.apache.org/docs/nifi-docs/html/administration-guide.html#terminology

 

NiFi System Administrator’s Guide

NiFi always stores all sensitive values (passwords, tokens, and other credentials) populated into a flow in an encrypted format on disk. The encryption algorithm used is specified by nifi.sensitive.props.algorithm and the password from which the encryption

nifi.apache.org

 

 

 

+ Recent posts