zookeeper安裝配置
安裝
wget
命令下載安裝包
tar xvf zookeeper-3.4.8.tar.gz
修改配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg
將dataDir修改爲自己設定的目錄
啓動
bin/zkServer.sh start
若start指定配置文件,則會啓動相應的機器
停止
bin/zkServer.sh stop
配置僞分佈式集羣
所謂 “僞分佈式集羣” 就是在,在一臺PC中,啓動多個ZooKeeper的實例。“完全分佈式集羣” 是每臺PC,啓動一個ZooKeeper實例。
新建myid文件
~ echo “1” > /opt/zookeeper/zk1/myid
~ echo “2” > /opt/zookeeper/zk2/myid
~ echo “3” > /opt/zookeeper/zk3/myid
配置文件說明
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/zookeeper/zk3
clientPort=2183
server.1=114.215.102.167:2888:3888
server.2=114.215.102.167:2889:3889
server.3=114.215.102.167:2890:3890
單機模式下
tickTime:這個時間是作爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。
dataDir:顧名思義就是 Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
集羣模式下
initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是 5*2000=10 秒
syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。
除了修改 zoo.cfg 配置文件,集羣模式下還要配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件裏面就有一個數據就是 A 的值,Zookeeper 啓動時會讀取這個文件,拿到裏面的數據與 zoo.cfg 裏面的配置信息比較從而判斷到底是那個 server。
修改配置文件
修改:dataDir,clientPort
增加:集羣的實例,server.X,”X”表示每個目錄中的myid的值
conf/zk1.cfg
conf/zk2.cfg
conf/zk3.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper/zk3
# the port at which the clients will connect
clientPort=2183
server.1=114.215.102.167:2888:3888
server.2=114.215.102.167:2889:3889
server.3=114.215.102.167:2890:3890
啓動集羣
bin/zkServer.sh start zk1.cfg
bin/zkServer.sh start zk2.cfg
bin/zkServer.sh start zk3.cfg
若啓動的服務器數量沒有大於等於總數的1/2,調用status命令則會出現Error contacting service. It is probably not running.錯誤
查看節點狀態
bin/zkServer.sh status zk1.cfg
如果出現如下信息:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper348/bin/../conf/zk1.cfg
Error contacting service. It is probably not running.
請檢查zk1.cfg配置文件是否正確填寫,如server ip地址是否正確,端口號是否被佔用,dataDir路徑是否存在等
終止節點
bin/zkServer.sh stop zk1.cfg
連接zookeeper服務器
bin/zkCli.sh -server 114.215.102.167:2181
zookeeper常用命令
輸入:help
ZooKeeper -server host:port cmd args
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path