Apache ZooKeeper

Run Apache ZooKeeper as a Windows Service with FireDaemon Pro


Apache ZooKeeper is a centralized server for maintaining configuration information, naming, providing distributed synchronization, and providing group services.


Apache Zookeeper can be run as a Windows service using FireDaemon Pro. This allows you to start and run the application automatically when Windows boots and before login. FireDaemon Pro also allows you to start multiple instances of the server, monitoring them and automatically restarting those instances in the event they crash. FireDaemon Fusion can also be used to manage your Apache ZooKeeper service, plus other Windows services via your web browser.


Apache ZooKeeper Setup Under FireDaemon Pro

Please follow the steps below to set up an Apache ZooKeeper as a Windows service with FireDaemon Pro.


Step 1: Download and Install Java

Java 8 is supported until 2030 so we recommended you use this version. Oracle changed their download policy for Java and to download it, you need to make a free Oracle account and login. There are 2 types of java you can install:

  1. Java Server (JRE): This has performance optimizations and you can download the latest Java 8 Windows x64 JRE from the java website at the bottom of the page. Extract the contents of the zip to your hard drive, for the purposes of this guide we will use "C:\jdk1.8.0_271". The folder name will be different if you're using a different Java version. This guide assumes you're using this version.
  2. Java SE: This has performance optimizations and you can download the latest Java 8 Windows x64 JSE from the java website at the bottom of the page. Extract the contents of the zip to your hard drive, if you use this version extract to "C:\jre1.8.0_271". The folder name will be different if you're using a different Java version.

Step 2: Download and Install Apache ZooKeeper

  1. Download from here. Make sure you get the latest binary zip release.
  2. Extract the zip someplace on your hard drive. For the purposes of this guide we will use: "C:\apache-zookeeper-3.6.2-bin". The folder name will be different if you're using a different version.


Step 3: Configure Apache ZooKeeper Config

  1. Open "C:\apache-zookeeper-3.6.2-bin\conf\zoo_sample.cfg". Edit the file to your liking and save as "zoo.cfg"


Step 3: Set Up Apache ZooKeeper as a FireDaemon Pro Service

Download and install FireDaemon Pro. Double click the FireDaemon Pro icon on your desktop, then click on the New (i.e. +) button in the toolbar (or type Ctrl + N) to create a new service. Enter the information into the fields as you see below. Adjust the path names to suit your installation. Note the required parameters.


FireDaemon Pro Apache ZooKeeper Dedicated Server Service Program Tab


The most important field on the tab is the Parameters. The Parameters define the initial setup of your server. The full parameter list should be as follows:

"-Dzookeeper.log.dir=%LOG_DIR%" "-Dzookeeper.root.logger=%LOG_TYPE%" "-Dzookeeper.log.file=%LOG_NAME%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %p /t /f" -cp "%ZOO_PATHS%" org.apache.zookeeper.server.quorum.QuorumPeerMain "%ZOO_CONFIG%"

The above commands need to be added in their entirety. They allow ZooKeeper to run as a service.


Next, click on the FireDaemon Pro Settings tab:


FireDaemon Pro Apache ZooKeeper service settings


Enter appropriate values in the fields on the Settings tab as follows:

  • (Optional) Logon Account: Enter the Windows account under which the application is to be run, e.g. the current administrator account.
  • Password / Confirm Password:  Enter the logon account's password twice.
  • (Optional) Interact with Desktop: If this setting is enabled (default), the application's output messages can be seen in the console window on Windows Session 0. To switch to Session 0, it may be necessary to install FireDaemon Zero and ZeroInput. Alternatively, this setting may be disabled, in which case the application's messages will be hidden.
  • (Optional) Priority: To allocate more CPU time to the application, select a higher scheduling priority in this field.
  • (Optional) CPU Bindings: To run the application on a specific CPU, specify the appropriate CPU in this field.


Next, click on the Lifecycle tab. Set Shutdown By to Forceful Termination and check "Console Program".


FireDaemon Pro Apache ZooKeeper lifecycle settings


Now click on the Environment tab. This is where you enter environment variables specific to your ZooKeeper instance. The names and values of the environment variables are below; adjust your paths to suit your installation. Adjust the paths below to the version of ZooKeeper you have installed. Note that environment variable order is important:


ZOO_JAVA_HOME: C:\jdk1.8.0_271
LOG_DIR: C:\apache-zookeeper-3.6.2-bin\bin\..\logs
LOG_TYPE: INFO,CONSOLE
LOG_NAME: zookeeper-log.log
ZOO_PATHS: C:\apache-zookeeper-3.6.2-bin\bin\..\build\classes;C:\apache-zookeeper-3.6.2-bin\bin\..\build\lib\*;C:\apache-zookeeper-3.6.2-bin\bin\..\*;C:\apache-zookeeper-3.6.2-bin\bin\..\lib\*;C:\apache-zookeeper-3.6.2-bin\bin\..\conf
ZOO_CONFIG: C:\apache-zookeeper-3.6.2-bin\bin\..\conf\zoo.cfg

Lastly, click the Save and Close (ie. the tick) button on the toolbar. If the service's Startup Type is set to Automatic or Automatic (Delayed-Start), it will start immediately.


FireDaemon Pro Services list


If the service's Interact with Desktop setting is enabled, the Apache ZooKeeper status can also be verified by switching to Windows Session 0 to view the Apache ZooKeeper's messages.


Apache ZooKeeper messages window