In this article I am going to show you steps for Installing NiFi Cluster on Windows Server. Please follow all the steps as mentioned in this article so that you don’t run into any error.
Table of Contents
Step 1: Update hosts file entry with below
127.0.0.1 node1
127.0.0.1 node2
127.0.0.1 node3
Step 2: Update zookeeper.properties File on all the 3 instances
server.1=node1:2888:3888;2181
server.2=node2:2889:3889;2182
server.3=node3:2890:3890;2183
Step 3: Create myid File
Create ./state/zookeeper/myid file on all the 3 instances
Step 4: Update content of myid file
Update the value of myid file to 1 on instance 1, 2 on instance 2 and 3 on instance 3
Step 5: Update nifi.properties file
On all 3 nodes:
nifi.state.management.embedded.zookeeper.start=true
nifi.zookeeper.connect.string=node1:2181,node2:2182,node3:2183
On node1
nifi.cluster.is.node=true
nifi.cluster.node.address=node1
nifi.cluster.node.protocol.port=9991
nifi.cluster.node.load.balance.port=6342
nifi.remote.input.host=node1
nifi.remote.input.secure=false
nifi.remote.input.socket.port=10001
nifi.web.http.host=node1
On node2
nifi.cluster.is.node=true
nifi.cluster.node.address=node2
nifi.cluster.node.protocol.port=9992
nifi.cluster.node.load.balance.port=6343
nifi.remote.input.host=node2
nifi.remote.input.secure=false
nifi.remote.input.socket.port=10002
nifi.web.http.host=node2
On node3
nifi.cluster.is.node=true
nifi.cluster.node.address=node3
nifi.cluster.node.protocol.port=9993
nifi.cluster.node.load.balance.port=6344
nifi.remote.input.host=node3
nifi.remote.input.secure=false
nifi.remote.input.socket.port=10003
nifi.web.http.host=node3
Read more about zookeeper here.
The following table lists the default ports used by NiFi and the corresponding property in the nifi.properties file.
Function | Property | Default Value |
---|---|---|
HTTP Port | nifi.web.http.port | 8080 |
HTTPS Port* | nifi.web.https.port | 9443 |
Remote Input Socket Port* | nifi.remote.input.socket.port | 10443 |
Cluster Node Protocol Port* | nifi.cluster.node.protocol.port | 11443 |
Cluster Node Load Balancing Port | nifi.cluster.node.load.balance.port | 6342 |
Web HTTP Forwarding Port | nifi.web.http.port.forwarding | none |
Read More about nifi.properties here



Sample logs from logs/nifi-app.log
This is the typical logs you will see while nifi cluster startup is running.
2020-05-15 13:49:32,526 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:49:31,511 and sent to node3:9993 at 2020-05-15 13:49:32,526; send took 1014 millis 2020-05-15 13:49:38,542 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:49:37,528 and sent to node3:9993 at 2020-05-15 13:49:38,542; send took 1014 millis 2020-05-15 13:49:44,559 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:49:43,544 and sent to node3:9993 at 2020-05-15 13:49:44,559; send took 1015 millis 2020-05-15 13:49:50,576 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:49:49,561 and sent to node3:9993 at 2020-05-15 13:49:50,576; send took 1014 millis 2020-05-15 13:49:56,591 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:49:55,578 and sent to node3:9993 at 2020-05-15 13:49:56,590; send took 1013 millis 2020-05-15 13:50:02,608 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:01,593 and sent to node3:9993 at 2020-05-15 13:50:02,608; send took 1014 millis 2020-05-15 13:50:08,624 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:07,609 and sent to node3:9993 at 2020-05-15 13:50:08,624; send took 1014 millis 2020-05-15 13:50:14,638 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:13,626 and sent to node3:9993 at 2020-05-15 13:50:14,638; send took 1012 millis 2020-05-15 13:50:20,655 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:19,639 and sent to node3:9993 at 2020-05-15 13:50:20,655; send took 1015 millis 2020-05-15 13:50:26,669 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:25,657 and sent to node3:9993 at 2020-05-15 13:50:26,669; send took 1012 millis 2020-05-15 13:50:32,687 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:31,671 and sent to node3:9993 at 2020-05-15 13:50:32,687; send took 1016 millis 2020-05-15 13:50:38,700 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:37,689 and sent to node3:9993 at 2020-05-15 13:50:38,700; send took 1011 millis 2020-05-15 13:50:38,902 INFO [Write-Ahead Local State Provider Maintenance] org.wali.MinimalLockingWriteAheadLog org.wali.MinimalLockingWriteAheadLog@311eb725 checkpointed with 2 Records and 0 Swap Files in 282 milliseconds (Stop-the-world time = 85 milliseconds, Clear Edit Logs time = 147 millis), max Transaction ID 6 2020-05-15 13:50:44,718 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:43,701 and sent to node3:9993 at 2020-05-15 13:50:44,718; send took 1016 millis 2020-05-15 13:50:50,737 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:49,719 and sent to node3:9993 at 2020-05-15 13:50:50,737; send took 1017 millis 2020-05-15 13:50:56,755 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:50:55,738 and sent to node3:9993 at 2020-05-15 13:50:56,755; send took 1016 millis 2020-05-15 13:51:02,771 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:51:01,757 and sent to node3:9993 at 2020-05-15 13:51:02,771; send took 1015 millis 2020-05-15 13:51:08,786 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:51:07,774 and sent to node3:9993 at 2020-05-15 13:51:08,786; send took 1012 millis 2020-05-15 13:51:14,799 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:51:13,788 and sent to node3:9993 at 2020-05-15 13:51:14,799; send took 1010 millis 2020-05-15 13:51:20,876 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:51:19,801 and sent to node3:9993 at 2020-05-15 13:51:20,876; send took 1075 millis 2020-05-15 13:51:26,898 INFO [Clustering Tasks Thread-3] o.a.n.c.c.ClusterProtocolHeartbeater Heartbeat created at 2020-05-15 13:51:25,877 and sent to node3:9993 at 2020-05-15 13:51:26,898; send took 1020 millis 2020-05-15 13:51:27,443 INFO [Process Cluster Protocol Request-5] o.a.n.c.c.node.NodeClusterCoordinator Status of node1:8080 changed from NodeConnectionStatus[nodeId=node1:8080, state=CONNECTED, updateId=27] to NodeConnectionStatus[nodeId=node1:8080, state=DISCONNECTED, Disconnect Code=User Disconnected Node, Disconnect Reason=User anonymous requested that node be disconnected from cluster, updateId=31] 2020-05-15 13:51:27,451 INFO [Process Cluster Protocol Request-5] o.a.n.c.p.impl.SocketProtocolListener Finished processing request 5672c1d7-ac99-4347-a697-2055f1332e44 (type=NODE_STATUS_CHANGE, length=1226 bytes) from 127.0.0.1 in 25 millis 2020-05-15 13:51:28,449 INFO [Process Cluster Protocol Request-10] o.a.n.c.p.impl.SocketProtocolListener Finished processing request 9ded0276-46ec-4556-b571-fb928979e8b9 (type=DISCONNECTION_REQUEST, length=647 bytes) from node1:8080 in 15 millis 2020-05-15 13:51:28,449 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Received disconnection request message from cluster coordinator with explanation: User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:28,449 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Disconnecting node due to User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:28,497 INFO [Disconnect from Cluster] o.apache.nifi.controller.FlowController Cluster State changed from Clustered to Not Clustered 2020-05-15 13:51:28,504 INFO [Disconnect from Cluster] o.a.n.c.l.e.CuratorLeaderElectionManager This node is no longer registered to be elected as the Leader for Role 'Primary Node' 2020-05-15 13:51:28,504 INFO [Disconnect from Cluster] o.a.n.c.l.e.CuratorLeaderElectionManager This node is no longer registered to be elected as the Leader for Role 'Cluster Coordinator' 2020-05-15 13:51:28,505 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Node disconnected due to User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:29,497 INFO [Process Cluster Protocol Request-9] o.a.n.c.p.impl.SocketProtocolListener Finished processing request 17bb8cff-22b6-4f1e-a894-65971c4f9ba5 (type=DISCONNECTION_REQUEST, length=647 bytes) from node1:8080 in 8 millis 2020-05-15 13:51:29,498 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Received disconnection request message from cluster coordinator with explanation: User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:29,500 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Disconnecting node due to User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:29,501 INFO [Disconnect from Cluster] o.a.n.c.l.e.CuratorLeaderElectionManager Cannot unregister Leader Election Role 'Primary Node' becuase that role is not registered 2020-05-15 13:51:29,501 INFO [Disconnect from Cluster] o.a.n.c.l.e.CuratorLeaderElectionManager Cannot unregister Leader Election Role 'Cluster Coordinator' becuase that role is not registered 2020-05-15 13:51:29,501 INFO [Disconnect from Cluster] o.a.nifi.controller.StandardFlowService Node disconnected due to User anonymous requested that node be disconnected from cluster 2020-05-15 13:51:31,164 INFO [pool-15-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Initiating checkpoint of FlowFile Repository 2020-05-15 13:51:31,164 INFO [pool-15-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Successfully checkpointed FlowFile Repository with 0 records in 0 milliseconds 2020-05-15 13:52:39,229 INFO [Write-Ahead Local State Provider Maintenance] org.wali.MinimalLockingWriteAheadLog org.wali.MinimalLockingWriteAheadLog@311eb725 checkpointed with 2 Records and 0 Swap Files in 324 milliseconds (Stop-the-world time = 123 milliseconds, Clear Edit Logs time = 151 millis), max Transaction ID 6 2020-05-15 13:53:31,165 INFO [pool-15-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Initiating checkpoint of FlowFile Repository 2020-05-15 13:53:31,165 INFO [pool-15-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Successfully checkpointed FlowFile Repository with 0 records in 0 milliseconds 2020-05-15 13:54:39,520 INFO [Write-Ahead Local State Provider Maintenance] org.wali.MinimalLockingWriteAheadLog org.wali.MinimalLockingWriteAheadLog@311eb725 checkpointed with 2 Records and 0 Swap Files in 290 milliseconds (Stop-the-world time = 64 milliseconds, Clear Edit Logs time = 182 millis), max Transaction ID 6 2020-05-15 13:54:52,216 INFO [Process Cluster Protocol Request-8] o.a.n.c.c.node.NodeClusterCoordinator Status of node1:8080 changed from NodeConnectionStatus[nodeId=node1:8080, state=DISCONNECTED, Disconnect Code=User Disconnected Node, Disconnect Reason=User anonymous requested that node be disconnected from cluster, updateId=31] to NodeConnectionStatus[nodeId=node1:8080, state=CONNECTING, updateId=33] 2020-05-15 13:54:52,216 INFO [Process Cluster Protocol Request-8] o.a.n.c.p.impl.SocketProtocolListener Finished processing request 42dcc606-3a7b-4aa7-b528-514928bc1702 (type=NODE_STATUS_CHANGE, length=1154 bytes) from 127.0.0.1 in 7 millis 2020-05-15 13:54:53,692 INFO [Reconnect to Cluster] o.a.nifi.controller.StandardFlowService Processing reconnection request from cluster coordinator. 2020-05-15 13:54:53,693 INFO [Process Cluster Protocol Request-2] o.a.n.c.p.impl.SocketProtocolListener Finished processing request 4aaff87d-067a-4aac-b257-9b6496f7ffe2 (type=RECONNECTION_REQUEST, length=2739806 bytes) from node1:8080 in 68 millis 2020-05-15 13:54:53,694 INFO [Reconnect to Cluster] o.a.n.c.c.node.NodeClusterCoordinator Resetting cluster node statuses from {1a907492-bda5-4ca4-abad-cb45597ad4c0=NodeConnectionStatus[nodeId=node1:8080, state=CONNECTING, updateId=33], 47e4ea7f-1ae1-4d8f-a0bc-d569f2c4237f=NodeConnectionStatus[nodeId=node3:8082, state=CONNECTED, updateId=28], 71a5a9c0-3966-4611-99f8-d4238a1aa023=NodeConnectionStatus[nodeId=node2:8084, state=CONNECTED, updateId=31]} to {node2:8084=NodeConnectionStatus[nodeId=node2:8084, state=CONNECTED, updateId=31], node1:8080=NodeConnectionStatus[nodeId=node1:8080, state=CONNECTING, updateId=33], node3:8082=NodeConnectionStatus[nodeId=node3:8082, state=CONNECTED, updateId=28]}
I hope you liked this article about Installing NiFi Cluster on Windows Server. Do read more about Apache NiFi here. You may also subscribe my Youtube Channel as I keep updating more content on Apache NiFi every week.
- Installing Apache NiFi Cluster on LinuxInstalling Apache NiFi Cluster on Linux is pretty straightforward to be honest. If you follow the steps mentioned in this …
- Installing NiFi Cluster on Windows ServerIn this article I am going to show you steps for Installing NiFi Cluster on Windows Server. Please follow all …
- Apache NiFi Cluster in DetailWhat’s a cluster? To learn about Apache NiFi Cluster in Detail first you should understand about cluster. A cluster is …
- Splitting Large Files to Smaller Files in NiFiSplitting Large Files With Nifi is quite easy when you know the right approach to do that. In this article …
- Apache NiFi Best PracticesApache NiFi Best Standards and Other Tips In this article I am going to show you Apache NiFi Best Practices. …
You must be logged in to post a comment.