small_lebowski
small_lebowski

Reputation: 773

Apache Zookeeper: Unable to access data directory

OS: RHEL 8.2

I am trying to create a systemctl service for zookeeper. It fails to access the datadir.

Here is my config for zookeeper,

dataDir=/opt/zookeeper
maxClientCnxns=20
tickTime=2000
dataDir=/var/zookeeper/
initLimit=20
syncLimit=10
server.0=master:2888:3888
clientPort=2181
admin.serverPort=8082

Permission of /opt/zookeeper is set to 777.

[user1@server1 opt]$ ls -lart
total 0
dr-xr-xr-x. 17 root       root       244 Jul  3 10:56 ..
drwxr-xr-x   3 root       root        27 Jul 10 10:29 rh
drw-r--r--   2 user2 user2   6 Jul 17 08:48 hsluw_data
drw-r--r--   2 user2 user2   6 Jul 17 08:58 hsluw_config
drwxr-xr-x.  6 root       root        71 Jul 17 08:58 .
drwxrwxrwx   3 user2 user2  23 Jul 17 09:40 zookeeper

If I run the command,

./bin/zookeeper-server-start.sh config/zookeeper.properties

it gives me an error message: Unable to access datadir

[2020-07-30 10:25:50,767] ERROR Invalid configuration, only one server specified (ignoring) (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2020-07-30 10:25:50,767] INFO Starting server (org.apache.zookeeper.server.ZooKeeperServerMain)
[2020-07-30 10:25:50,769] INFO zookeeper.snapshot.trust.empty : false (org.apache.zookeeper.server.persistence.FileTxnSnapLog)
[2020-07-30 10:25:50,769] ERROR Unable to access datadir, exiting abnormally (org.apache.zookeeper.server.ZooKeeperServerMain)
org.apache.zookeeper.server.persistence.FileTxnSnapLog$DatadirException: Cannot write to data directory /var/zookeeper/version-2
    at org.apache.zookeeper.server.persistence.FileTxnSnapLog.<init>(FileTxnSnapLog.java:132)
    at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:124)
    at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:106)
    at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Unable to access datadir, exiting abnormally

However, sudoing the above command works,

sudo ./bin/zookeeper-server-start.sh config/zookeeper.properties

Now I have created a service in /etc/systemd/system/zookeeper.service

I wrote the service in /etc/systemd/system/zookeeper.service in this way,

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=user2
ExecStart=/home/user2/kafka/bin/zookeeper-server-start.sh /home/user2/kafka/config/zookeeper.properties
ExecStop=/home/user2/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

The SELinux status is disabled.

user2@server1$ sestatus
SELinux status:                 disabled

Now if I do the following

sudo systemctl daemon-reload
sudo systemctl start zookeeper 
sudo systemctl enable zookeeper 

I am getting the the same Unable to access the datadir error like the following,

[user2@server1 /]$ systemctl status zookeeper 
\u25cf zookeeper.service
   Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2020-07-30 10:13:19 CEST; 24s ago
 Main PID: 12911 (code=exited, status=3)

Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]: org.apache.zookeeper.server.persistence.FileTxnSnapLog$Data>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.persistence.FileTxnS>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.ZooKeeperServerMain.>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.ZooKeeperServerMain.>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.ZooKeeperServerMain.>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.quorum.QuorumPeerMai>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]:         at org.apache.zookeeper.server.quorum.QuorumPeerMai>
Jul 30 10:13:19 server1.localdomain zookeeper-server-start.sh[12911]: Unable to access datadir, exiting abnormally
Jul 30 10:13:19 server1.localdomain systemd[1]: zookeeper.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
Jul 30 10:13:19 server1.localdomain systemd[1]: zookeeper.service: Failed with result 'exit-code'.

What am I missing here?

Upvotes: 4

Views: 12501

Answers (1)

small_lebowski
small_lebowski

Reputation: 773

In the configuration file, this line

dataDir=/var/zookeeper/

appears twice. Removing that line solves the issue.

Upvotes: 0

Related Questions