How to do - ubuntu下安裝和部署zookeeper,一篇就夠

 

ZooKeeper的安裝部署html


 

安裝環境:java

Linux ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux數據庫

預置條件:安裝jdk,ubuntu上:sudo apt-get update / sudo apt-get install openjdk-8-jdkapache

Step1 :下載,目前穩定版本是3.5.5,鏈接地址是:http://apache.claz.org/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gzubuntu

wget http://apache.claz.org/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gzvim

Step2:解壓和配置bash

tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz服務器

mv apache-zookeeper-3.5.5-bin /usr/local/zookeeper併發

cp conf/zoo_sample.cfg conf/zoo.cfgssh

配置參數含義以下:

tickTime=2000

dataDir=/var/zookeeper/data

dataLogDir=/var/zookeeper/log

clientPort=2181

initLimit=5

syncLimit=2

maxClientCnxns=60

  • tickTime : ZooKeeper 中使用的基本時間單元, 以毫秒爲單位, 默認值是 2000。它用來調節心跳和超時。例如, 默認的會話超時時間是兩倍的 tickTime。
  • dataDir : ZooKeeper 用來存儲內存數據庫快照的目錄。
  • dataLogDir: 數據庫更新的事物日誌保存的目錄,若是沒有設置該目錄,不然數據庫更新的事務日誌也將會存儲在dataDir目錄下。建議配置 dataLogDir 參數來指定 ZooKeeper 事務日誌的存儲目錄。
  • clientPort:ZooKeeper服務監聽的端口。
  • initLimit: 默認值是 10, 即 tickTime 屬性值的 10 倍。它用於配置容許 followers 鏈接並同步到 leader 的最大時間。若是 ZooKeeper 管理的數據量很大的話能夠增長這個值。
  • syncLimit: 默認值是 5, 即 tickTime 屬性值的 5 倍。它用於配置leader 和 followers 間進行心跳檢測的最大延遲時間。若是在設置的時間內 followers 沒法與 leader 進行通訊, 那麼 followers 將會被丟棄。
  • maxClientCnxns: 在 socket 級別限制單個客戶端與單臺服務器以前的併發鏈接數量, 能夠經過 IP 地址來區分不一樣的客戶端。它用來防止某種類型的 DoS 攻擊, 包括文件描述符耗盡。默認值是 60。將其設置爲 0 將徹底移除併發鏈接數的限制。

 

更多配置信息請參考: https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_configuration

Step3:啓動ZooKeeper服務:

啓動方式以下:

cd bin

zkServer.sh start

Step4:測試ZooKeeper服務

測試方式:

./zkCli.sh

發現2181端口綁定在ipv6的地址上,致使咱們使用ipv4鏈接不了

root@ubuntu:/usr/local/zookeeper/bin# netstat -antp

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      955/sshd

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1194/0

tcp        0      0 192.168.1.4:22          192.168.1.3:34542       ESTABLISHED 1154/sshd: lizhiyon

tcp        0      0 192.168.1.4:22          192.168.1.3:34541       ESTABLISHED 1152/sshd: lizhiyon

tcp6       0      0 :::42863                :::*                    LISTEN      1274/java

tcp6       0      0 :::8080                 :::*                    LISTEN      1274/java

tcp6       0      0 :::22                   :::*                    LISTEN      955/sshd

tcp6       0      0 ::1:6010                :::*                    LISTEN      1194/0

tcp6       0      0 :::2181                 :::*                    LISTEN      1274/java

解決辦法:

   vim zkServer.sh;

   在start)部分找到「 nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}"」,給其添加一個選項"-Djava.net.preferIPv4Stack=true",這樣啓動的時候就會自動綁定IPV4端的IP;

Step 5 : 開機自啓動

在/etc/init.d目錄下建立zookeeper文件,在文件裏輸入如下內容,固然要注意JAVA_HOME的路徑要跟你本身的環境一致:

#!/bin/bash

#Configurations injected by install_server below....

EXEC=/usr/local/zookeeper/bin/zkServer.sh

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

PATH=${JAVA_HOME}/bin:$PATH

###############

# SysV Init Information

# chkconfig: - 58 74

# description: zookeeper is the zookeeper daemon.

### BEGIN INIT INFO

# Provides: zookeeper

# Required-Start: $network $local_fs $remote_fs

# Required-Stop: $network $local_fs $remote_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Should-Start: $syslog $named

# Should-Stop: $syslog $named

# Short-Description: start and stop zookeeper

# Description: zookeeper daemon

### END INIT INFO

case $1 in

        start) su root /usr/local/zookeeper/bin/zkServer.sh start;;

        stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;

        status) su root /usr/local/zookeeper/bin/zkServer.sh status;;

        restart) su /usr/local/zookeeper/bin/zkServer.sh restart;;

        *) echo "require start|stop|status|restart" ;;

esac

而後添加zookeeper服務:

在Ubuntu中,/etc/init.d已被/usr/lib/systemd所取代。腳本仍然能夠經過「服務」啓動和停用。但主要命令如今是'systemctl'。chkconfig命令被留下,如今你用systemctl來作這件事。

因此,而不是:

chkconfig enable zookeeper

而應該查找服務名稱,而後啓用它

systemctl status zookeeper

systemctl enable zookeeper.service

點贊收藏轉發~私信一下通通帶走

相關文章
相關標籤/搜索