Zookeeper介紹vim
ZooKeeper是一種集中式服務,用於維護配置信息,命名,提供分佈式同步和組服務。全部這些類型的服務都以分佈式應用程序的形式使用。它具備可靠的、可擴展的、分佈式的、可配置的協調機制來統一系統的狀態 。bash
服務器規劃服務器
zookeeper集羣中至少須要3臺服務器,因爲資源有限,咱們就以3臺服務器爲例。session
Zookeeper部署模式分佈式
Zookeeper安裝方式有三種,單機模式和集羣模式以及僞集羣模式。
單機模式:Zookeeper只運行在一臺服務器上,適合測試環境;
僞集羣模式:就是在一臺物理機上運行多個 Zookeeper 實例;
集羣模式:Zookeeper運行於一個集羣上,適合生產環境,這個計算機集羣被稱爲一個「集合體」(ensemble)。ide
Zookeeper配置文件工具
官方給出的配置文件模板爲 zoo_sample.cfg ,咱們在實際環境中使用時,須要將其改成 zoo.cfg 。在192.168.2.177上操做性能
[root@rocketmq-nameserver1 conf]# vim zoo.cfg tickTime=2000initLimit=10syncLimit=5 dataDir=/wdata/zookeeper dataLogDir=/wdata/zookeeper/logs clientPort=2181 #maxClientCnxns=60 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 server.1=192.168.2.177:2888:3888 server.2=192.168.2.178:2888:3888 server.3=192.168.2.180:2888:3888
配置文件說明:測試
server.X=A:B:Cui
其中 X 爲服務器編號,A 爲節點服務器的 IP 地址,B 爲 Leader 通訊端口,C 爲 Zookeeper Leader選舉端口
dataLogDir:zookeeper事務日誌目錄
dataDir:zookeeper數據存放目錄
clientPort:客戶端監聽端口
syncLimit:集羣中 flower 服務器(F)跟 leader(L)服務器之間的請求和答應最多能容忍的心跳數。
initLimit:集羣中的 flower 服務器 (F) 與 leader 服務器 (L) 之間初始鏈接時能容忍的最多心跳數(tickTime的數量)。
tickTime:CS通訊心跳時間,客戶端與服務器或者服務器與服務器之間維持心跳,也就是每一個tickTime時間就會發送一次心跳。經過心跳不只可以用來監聽機器的工做狀態,還能夠經過心跳來控制Flower跟Leader的通訊時間,默認狀況下FL的會話時常是心跳間隔的兩倍。
Zookeeper集羣
搭建Zookeeper集羣前,咱們須要修改系統的環境變量
分別在 192.168.2.17七、192.168.2.17八、192.168.2.180 上修改
[root@rocketmq-nameserver1 ~]# vim .bash_profile export JAVA_HOME=/usr/local/jdk1.8.0_201 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13 export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
複製配置文件
咱們將已配置好的配置文件分發到另外兩臺(178和180)服務器
for i in 178 180; do scp zoo.cfg root@192.168.2.$i ; done
咱們再到三臺服務器上添加服務器編號文件,文件中的內容爲服務器編號,服務器的編號必須跟配置文件中的編號對應,不然集羣沒法啓動。
[root@rocketmq-nameserver1 zookeeper]# vim myid
其餘兩臺服務器的編號分別爲2和3。
到這裏,配置已經完成,接下來咱們啓動 zookeeper 服務。
分別在 3 臺服務器上運行
[root@rocketmq-nameserver1 ~]# zkServer.sh start
查看 zookeeper 服務啓動狀態
[root@rocketmq-nameserver1 ~]# zkServer.sh status
到這裏,zookeeper 集羣搭建完成。
下面介紹zookeeper的常見命令
conf: 輸出相關服務配置的詳細信息。
cons: 列出全部鏈接到服務器的客戶端的徹底的鏈接 / 會話的詳細信息。包括「接受 / 發送」的包數量、會話 id 、操做延遲、最後的操做執行等等信息。
dump:列出未經處理的會話和臨時節點。
envi: 輸出關於服務環境的詳細信息(區別於 conf 命令)。
reqs: 列出未經處理的請求
ruok: 測試服務是否處於正確狀態。若是確實如此,那麼服務返回「imok 」,不然不作任何相應。
stat: 輸出關於性能和鏈接的客戶端的列表。
wchs:列出服務器 watch 的詳細信息。
wchc:經過 session 列出服務器 watch 的詳細信息,它的輸出是一個與watch 相關的會話的列表。
wchp:經過路徑列出服務器 watch 的詳細信息。它輸出一個與 session相關的路徑。
zookeeper 命令行工具
經過 zkCli.sh 鏈接到 zookeeper 服務,以下
[root@rocketmq-nameserver2 ~]# zkCli.sh -server 192.168.2.178:2181
鏈接成功後會以下圖所示:
在這裏咱們能夠輸入zookeeper命令進行相關操做。可使用 help 進行幫助查詢。下面是 zookeeper 命令行下的所有命令
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
具體命令的使用,可參閱官方文檔,這裏不作過多介紹。