ZooKeeper的安裝部署
安裝環(huán)境:
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
預(yù)置條件:安裝jdk蜘渣,ubuntu上:sudo apt-get update / sudo apt-get install openjdk-8-jdk
Step1 :下載,目前穩(wěn)定版本是3.5.5肺然,連接地址是:http://apache.claz.org/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz
wget http://apache.claz.org/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz
Step2:解壓和配置
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.cfg
配置參數(shù)含義如下:
tickTime=2000
dataDir=/var/zookeeper/data
dataLogDir=/var/zookeeper/log
clientPort=2181
initLimit=5
syncLimit=2
maxClientCnxns=60
tickTime : ZooKeeper 中使用的基本時間單元, 以毫秒為單位, 默認(rèn)值是 2000蔫缸。它用來調(diào)節(jié)心跳和超時。例如, 默認(rèn)的會話超時時間是兩倍的 tickTime际起。
dataDir : ZooKeeper 用來存儲內(nèi)存數(shù)據(jù)庫快照的目錄拾碌。
dataLogDir: 數(shù)據(jù)庫更新的事物日志保存的目錄,如果沒有設(shè)置該目錄街望,否則數(shù)據(jù)庫更新的事務(wù)日志也將會存儲在dataDir目錄下校翔。建議配置 dataLogDir 參數(shù)來指定 ZooKeeper 事務(wù)日志的存儲目錄。
clientPort:ZooKeeper服務(wù)監(jiān)聽的端口灾前。
initLimit: 默認(rèn)值是 10, 即 tickTime 屬性值的 10 倍展融。它用于配置允許 followers 連接并同步到 leader 的最大時間。如果 ZooKeeper 管理的數(shù)據(jù)量很大的話可以增加這個值豫柬。
syncLimit: 默認(rèn)值是 5, 即 tickTime 屬性值的 5 倍。它用于配置leader 和 followers 間進(jìn)行心跳檢測的最大延遲時間扑浸。如果在設(shè)置的時間內(nèi) followers 無法與 leader 進(jìn)行通信, 那么 followers 將會被丟棄烧给。
maxClientCnxns: 在 socket 級別限制單個客戶端與單臺服務(wù)器之前的并發(fā)連接數(shù)量, 可以通過 IP 地址來區(qū)分不同的客戶端。它用來防止某種類型的 DoS 攻擊, 包括文件描述符耗盡喝噪。默認(rèn)值是 60础嫡。將其設(shè)置為 0 將完全移除并發(fā)連接數(shù)的限制。
更多配置信息請參考: https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_configuration
Step3:啟動ZooKeeper服務(wù):
啟動方式如下:
cd bin
zkServer.sh start
Step4:測試ZooKeeper服務(wù)
測試方式:
./zkCli.sh
發(fā)現(xiàn)2181端口綁定在ipv6的地址上,導(dǎo)致我們使用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 : 開機(jī)自啟動
在/etc/init.d目錄下創(chuàng)建zookeeper文件盗似,在文件里輸入以下內(nèi)容,當(dāng)然要注意JAVA_HOME的路徑要跟你自己的環(huán)境一致:
#!/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服務(wù):
在Ubuntu中平项,/etc/init.d已被/usr/lib/systemd所取代赫舒。腳本仍然可以通過“服務(wù)”啟動和停用。但主要命令現(xiàn)在是'systemctl'闽瓢。chkconfig命令被留下接癌,現(xiàn)在你用systemctl來做這件事。
所以扣讼,而不是:
chkconfig enable zookeeper
而應(yīng)該查找服務(wù)名稱缺猛,然后啟用它
systemctl status zookeeper
systemctl enable zookeeper.service
點贊收藏轉(zhuǎn)發(fā)~私信一下統(tǒng)統(tǒng)帶走