问题一:节点无法加入到集群管理中
问题描述
当前我们搭建的架构为三节点的集群架构,使用内置的Zookeeper作为nifi的集群协调器。在正常运行的情况下,节点二出现了宕机的情况,再次重启时,发现节点加入不进去集群管理中。
问题分析
可能由于节点宕机的一瞬间,NIFI出现了一定的版本不一致,在分析nifi-app.log的日志中,发现了如下几段描述:
o.a.n.c.c.node.NodeClusterCoordinator Status of server2:9443 changed from NodeConnectionStatus[nodeId=server2:9443, state=CONNECTING, updateId=49] to NodeConnectionStatus[nodeId=server2:9443, state=DISCONNECTED, Disconnect Code=Node's Flow did not Match Cluster Flow, Disconnect Reason=org.apache.nifi.controller.serialization.FlowSynchronizationException: (根源)Failed to connect node to cluster because local flow controller partially updated. Administrator should disconnect node and review flow for corruption., updateId=49]
即flow的版本在集群与本地已经出现了差异,nifi集群管理会拒绝这个节点的加入。
问题解决
nifi本身所有的配置信息,都在conf/flow.xml.gz、conf/flow.json.gz中进行定义,所以由此,我们把出现不一致现象的节点二直接删除掉本地的flow信息,节点二在启动过程中会重新获取集群上的版本信息,并加载在本地。