Skip to content

Instantly share code, notes, and snippets.

@kprasad99
Last active July 11, 2019 19:13
Show Gist options
  • Save kprasad99/c225a5ea344acb9b484ae508d578a839 to your computer and use it in GitHub Desktop.
Save kprasad99/c225a5ea344acb9b484ae508d578a839 to your computer and use it in GitHub Desktop.
Create zookeeper cluster in ubuntu,18.04
  1. Download zookeeper distribution

    wget http://apachemirror.wuchna.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
  2. Extract distribution

    tar -xzvf zookeeper-3.4.14.tar.gz
  3. Create zookeeper cluster directory

    sudo mkdir /opt/zookeeper-cluster
  4. Copy extracted distribution to zookeeper cluster directory

    sudo mv zookeeper-3.4.14 /opt/zookeeper-cluster/zookeeper-1
  5. working change directory /opt/zookeeper-cluster

    cd /opt/zookeeper-cluster
  6. Make additional two copies of distribution

    sudo cp -R zookeeper-1 zookeeper-2
    sudo cp -R zookeeper-1 zookeeper-3
  7. Change ownership

    sudo chown -R <user>:<group> zookeeper-1
    sudo chown -R <user>:<group> zookeeper-2
    sudo chown -R <user>:<group> zookeeper-3
  8. Rename zoo_sample.cfg to zoo.cfg

    mv zookeeper-1/conf/zoo_sample.cfg zookeeper-1/conf/zoo.cfg
    mv zookeeper-2/conf/zoo_sample.cfg zookeeper-2/conf/zoo.cfg
    mv zookeeper-3/conf/zoo_sample.cfg zookeeper-3/conf/zoo.cfg
  9. Update dataDir

    sed -i 's/dataDir=.*/dataDir=\/opt\/zookeeper-cluster\/zookeeper-1\/data/g' zookeeper-1/conf/zoo.cfg
    sed -i 's/dataDir=.*/dataDir=\/opt\/zookeeper-cluster\/zookeeper-2\/data/g' zookeeper-2/conf/zoo.cfg
    sed -i 's/dataDir=.*/dataDir=\/opt\/zookeeper-cluster\/zookeeper-3\/data/g' zookeeper-3/conf/zoo.cfg
  10. Update clientPort

    sed -i 's/clientPort=.*/clientPort=2181/g' zookeeper-1/conf/zoo.cfg
    sed -i 's/clientPort=.*/clientPort=2182/g' zookeeper-2/conf/zoo.cfg
    sed -i 's/clientPort=.*/clientPort=2183/g' zookeeper-3/conf/zoo.cfg
  11. Add peer server details

    cat << EOF >> zookeeper-1/conf/zoo.cfg
    server.1=192.168.56.150:2887:3887
    server.2=192.168.56.150:2888:3888
    server.3=192.168.56.150:2889:3889
    EOF
    
    cat << EOF >>  zookeeper-2/conf/zoo.cfg
    server.1=192.168.56.150:2887:3887
    server.2=192.168.56.150:2888:3888
    server.3=192.168.56.150:2889:3889
    EOF
    
    cat << EOF >>  zookeeper-3/conf/zoo.cfg
    server.1=192.168.56.150:2887:3887
    server.2=192.168.56.150:2888:3888
    server.3=192.168.56.150:2889:3889
    EOF
Note
id suffix should match the myid file content
  1. Create data dir

    mkdir zookeeper-1/data
    mkdir zookeeper-2/data
    mkdir zookeeper-3/data
  2. Create myid file with server id

    echo  "1" > zookeeper-1/data/myid
    echo  "2" > zookeeper-2/data/myid
    echo  "3" > zookeeper-3/data/myid
  3. Start the servers

    cd zookeeper-1
    bin/zkServer.sh start
    cd ../zookeeper-2
    bin/zkServer.sh start
    cd ../zookeeper-3
    bin/zkServer.sh start
  4. Verify nodes are up and leader and follower are chosen

    echo stat | nc localhost 2181 | grep Mode
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment