Good concise article here on devopscube for installing zookeeper cluster. I’ve added some of my own bits:
Firewall
Disable firewalld or allow ports 2181 3888 2888
Install Java
yum install java-1.8.0-openjdk
Install Zookeeper
Download ZooKeeper from the Apache:
wget http://mirrors.ukfast.co.uk/sites/ftp.apache.org/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz mv zookeeper-3.4.10.tar.gz /opt cd /opt tar xzf zookeeper-3.4.10.tar.gz ln -s zookeeper-3.4.10 ./zookeeper cd zookeeper mkdir data
User
Create a zookeeper user
groupadd zookeeper useradd -g zookeeper -d /opt/zookeeper -s /sbin/nologin zookeeper
Set the permissions:
chown -R zookeeper:zookeeper /opt/zookeeper/*
vi /opt/zookeeper/conf/zoo.cfg
Add the following:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper/data clientPort=2181 server.1=192.168.187.75:2888:3888 server.2=192.168.187.77:2888:3888 server.3=192.168.187.78:2888:3888
Test the service:
/opt/zookeeper/bin/zkServer.sh start
Ctrl-c out of that and lets create a systemd unit file for the service.
Systemd
vi /usr/lib/systemd/system/zookeeper.service
Add the following:
[Unit] Description=Zookeeper Service [Service] Type=simple WorkingDirectory=/opt/zookeeper/ PIDFile=/opt/zookeeper/data/zookeeper_server.pid SyslogIdentifier=zookeeper User=zookeeper Group=zookeeper ExecStart=/opt/zookeeper/bin/zkServer.sh start ExecStop=/opt/zookeeper/bin/zkServer.sh stop Restart=always TimeoutSec=20 SuccessExitStatus=130 143 Restart=on-failure [Install] WantedBy=multi-user.target
Next
systemctl daemon-reload systemctl enable zookeeper.service systemctl start zookeeper.service
Test
Running the following will give a client interface to the zookeeper service:
/opt/zookeeper/bin/zkCli.sh
There are some examples here but you can create and get info as shown below:
To check which nodes are followers and which is the leader try issuing the following commands to each node:
echo srvr | nc localhost 2181
There is excellent information on monitoring Zookeeper here (from ServerDenisty) and a Nagios check here.
Troubleshooting
- Reset the user permissions on the /opt/zookeeper directory recursively
- Switch off firewalld and/or check a telnet connect to port 2181 on each node
- Try switching to the zookeeper user (su – zookeeper -s /bin/bash) and run the zkServer.sh start command
I am stuck at the step “cd zookeeper”
[kafka@Kafka opt]$ cd /zookeeper
-bash: cd: /zookeeper: No such file or directory
You’ve got a slash in front of zookeeper. To navigate from the root you could use:
cd /opt/zookeeper
When you create the zookeeper account, a home directory “/opt/zookeeper” is created:
useradd -g zookeeper -d /opt/zookeeper -s /sbin/nologin zookeeper
This command conflicts with creating a link to a common “zookeeper” directory:
ln -s zookeeper-3.4.10 ./zookeeper
The link fails and subsequent commands do not work correctly.
apologies, I have now moved the user creation commands to after the creation of the symlink
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper … FAILED TO START
I tried installing this on RHEL and CentOS and I’m getting this same issue.
I had similar. Had to switch out server in /opt/zookeeper/conf/zoo.cfg
e.g. instead of
server.1=192.168.187.75:2888:3888
I used
server.1=192.168.0.1:2888:3888
and comment out the other options. Not sure if this is correct but managed to run the client interface ok. Planning to set up up solr next.
The ServerDensity link is broken :/
You might find this ZooKeeper Monitoring Guide helpful to use instead
https://statuslist.app/uptime-monitoring/zookeeper/