一、下載zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
二、安裝zookeeper
在/opt目錄下面新建zookeeper文件夾 需要創建三個文件夾(這里是3台機器做集群部署)
mkdir zookeeper cd zookeeper mkdir server1 tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz /C /opt/
最后的目錄結構是這樣的:
tips:解壓到指定目錄
tar -zxvf 【壓縮包bai文件名.tar.gz】 -C 【路徑】/
三、在zookeeper目錄下面新建data文件夾myid文件
mkdir data touch myid
vi myid 輸入1
四、修改zk的配置文件 zoo_sample.cfg 為 zoo.cfg
cp zoo_sample.cfg zoo.cfg
server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
修改clientPort 三個zookeeper的端口需要不一樣
這里zk1的clientPort端口為2181,zk2的clientPort端口為2183,zk3的clientPort端口為2183
結果圖
五、按照server1文件夾下面的步驟,修改server2、server3文件夾下面的內容。
需要把zookeeper/server2/zookeeper-3.5.8/data/myid 里面的內容修改為2;
需要把zookeeper/server3/zookeeper-3.5.8//data/myid 里面的內容修改為3;
需要把zookeeper/server2/zookeeper-3.5.8//conf/zoo.cfg文件里面的 clientPort 修改為不同的端口;
需要把zookeeper/server3/zookeeper-3.5.8//conf/zoo.cfg文件里面的 clientPort 修改為不同的端口;
其余部分修改和server1修改一樣。
六.啟動zk
//切換到bin目錄,執行 ./zkServer.sh start
tip:(jdk已經配置JAVA_HOME)仍然報錯:JAVA_HOME is not set and java could not be found in PATH
進入zk的bin目錄,修改zkEnv.sh
文件
JAVA_HOME="jdk安裝的路徑"
再次啟動,啟動成功
七、啟動Zookeeper
分別進入,zookeeper的bin文件夾啟動
./zkServer.sh start
八、測試集群
//進入server1的zookeeper的bin文件 ./zkCli.sh -server 127.0.0.1:2181 create /zk_test hello
進入zk的server2,zk的server3查看zk_test節點已經存在
最后zoo.cfg 配置文件內容
#間隔都是使用tickTime的倍數來表示的,例如initLimit=10就是tickTime的十倍等於2W毫秒
tickTime=2000
# The number of ticks that can pass between, sending a request and getting an acknowledgement
# 心跳最大延遲時間,如果leader在規定的時間內無法獲取到follow的心跳檢測響應,則認為節點已脫離
syncLimit=5
# the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just. example sakes.
# 用於存放內存數據庫快照的文件夾,同時用於集群的myid文件也存在這個文件夾里
dataDir=/root/zookeeper-3.4.14/zkData
# the port at which the clients will connect,ZK端口
clientPort=2181
# the maximum number of client connections. increase this if you need to handle more clients
# 允許連接的客戶端數目,0-不限制,通過 IP 來區分不同的客戶端
maxClientCnxns=60
#將管理機器把事務日志寫入到“ dataLogDir ”所指定的目錄,而不是“ dataDir ”所指定的目錄。避免日志和快照之間的競爭
#dataLogDir=/root/zookeeper-3.4.14/log/data_log
# The number of snapshots to retain in dataDir
#用於配置zookeeper在自動清理的時候需要保留的快照數據文件數量和對應的事務日志文件,最小值時三,如果比3小,會自動調整為3
#autopurge.snapRetainCount=3
# Purge task interval in hours. Set to "0" to disable auto purge feature
#配套snapRetainCount使用,用於配置zk進行歷史文件自動清理的頻率,如果參數配置為0或者小於零,就表示不開啟定時清理功能,默認不開啟
#autopurge.purgeInterval=1
##集群配置
# The number of ticks that the initial, synchronization phase can take
# follow服務器在啟動的過程中會與leader服務器建立鏈接並完成對數據的同步,leader服務器允許follow在initLimit時間內完成,默認時10.集群量增大時
#同步時間變長,有必要適當的調大這個參數, 當超過設置倍數的 tickTime 時間,則連接失敗
initLimit=10
#只有集群才需要一下配置
#server.A=B:C:D:其中 A 數字,表示是第幾號服務器. dataDir目錄下必有一個myid文件,里面只存儲A的值,ZK啟動時讀取此文件,與下面列表比較判斷是哪個server
# B 是服務器 ip ;C表示與 Leader 服務器交換信息的端口;D 表示的是進行選舉時的通信端口。
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
# 配置成observer模式
#peerType=observer
# 注意觀察者角色的末尾,需要拼接上observer
#server.4=10.2.143.38:2886:3886:observer
zookeeper常用命令
1. 啟動ZK服務: bin/zkServer.sh start
2. 查看ZK服務狀態: bin/zkServer.sh status
3. 停止ZK服務: bin/zkServer.sh stop
4. 重啟ZK服務: bin/zkServer.sh restart
5. 連接服務器: zkCli.sh -server 127.0.0.1:2181