Nifi支持水平扩展,每个节点都执行相同的任务,但每个节点处理的数据是不同的。Zookeeper会从集群中选择一个coordinator(管理者),并由zookeeper负责failover。
当有新的节点要加入集群时,他需要与coordinator建立连接,如果coordinator允许该节点加入集群,则会向该节点提供最新的流程信息。如果节点上的流程信息版本与coordinator不一致,则不允许他加入集群。
集群中所有的节点向coordinator发送心跳(默认5秒一次),如果指定时间内(默认40秒)没有收到节点的心跳,该节点将被退出集群(coordinator主动与该节点断开连接)。如果40秒后再次收到该节点的心跳,则coordinator会重新邀请该节点加入集群,并对其进行验证和同步流程。
另外zookeeper还会选择一个Primary node来运行一些不适合在多个节点同时运行的processor(如GetSftp,多个sftp客户端同时运行时,将产生资源竞争),当Primary node节点由于某些原因与集群断开连接时,zookeeper会重新票选出一个新的Primary node。
用户可以进入任何一个node的ui界面进行编辑,任何流程的修改,将在集群内部进行同步。
下载、解压
官网下载
修改配置文件(conf/nifi.properties)
#节点UI监听端口
nifi.web.http.port=8080
#节点是否采用集群模式,true集群模式,默认为false
nifi.cluster.is.node=true
#节点的IP地址
nifi.cluster.node.address=172.16.114.207
#节点用于集群通信的端口
nifi.cluster.node.protocol.port=9999
#连接zookeeper的地址
nifi.zookeeper.connect.string=docker-1:2181
启动集群
分别在每个节点执行bin/nifi.sh start
网友评论