ZooKeeper是一個集中的服務,用於維護配置信息、命名、提供分佈式同步以及提供組服務。node
1.大部分分佈式應用須要一個主控、協調器或控制器來管理物理分佈的子進程(如資源、任務分配等) 2.提供通用的分佈式鎖服務,用以協調分佈式應用服務器
1.統一命名服務 2.配置管理 3.集羣管理 4.共享鎖 5.隊列管理app
1.上傳zk安裝包分佈式
2.解壓 tar -xvzf zookeeper-3.4.10.tar.gzspa
3.配置(先在一臺節點上配置)
3.1添加一個zoo.cfg配置文件
$ZOOKEEPER/conf
mv zoo_sample.cfg zoo.cfg
3.2修改配置文件(zoo.cfg)
dataDir=/apps/zookeeper-3.4.10/data
server.1=172.0.0.1:2888:3888
server.2=172.0.0.2:2888:3888
server.3=172.0.0.3:2888:3888
3.3在(dataDir=/apps/zookeeper-3.4.10/data)建立一個myid文件,裏面內容是server.N中的N(server.2裏面內容爲2,以此類推)
echo 1 > myid
3.4將配置好的zk拷貝到其餘節點
scp -r /apps/zookeeper-3.4.10/ 172.0.0.2:/apps/
scp -r /apps/zookeeper-3.4.10/ 172.0.0.3:/apps/
3.5注意:在其餘節點上必定要修改myid的內容
在service02應該講myid的內容改成2 (echo 2 > myid)
在service03應該講myid的內容改成3 (echo 3 > myid)
4.啓動集羣
分別啓動zk 進入$ZOOKEEPER/bin/
./zkServer.sh start
5.檢查是否運行正常
./zkServer.sh status日誌
zookeeper的默認配置文件爲zookeeper/conf/zoo_sample.cfg,須要將其修改成zoo.cfg。其中各配置項的含義,解釋以下:server
1.tickTime:CS通訊心跳時間 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。tickTime以毫秒爲單位。 tickTime=2000隊列
2.initLimit:LF初始通訊時限 集羣中的follower服務器(F)與leader服務器(L)之間初始鏈接時能容忍的最多心跳數(tickTime的數量)。 initLimit=5進程
3.syncLimit:LF同步通訊時限 集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。 syncLimit=2資源
4.dataDir:數據文件目錄 Zookeeper保存數據的目錄,默認狀況下,Zookeeper將寫數據的日誌文件也保存在這個目錄裏。 dataDir=/apps/zookeeper/data
5.clientPort:客戶端鏈接端口 客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。 clientPort=2181
6.服務器名稱與地址:集羣信息(服務器編號,服務器地址,LF通訊端口,選舉端口) 這個配置項的書寫格式比較特殊,規則以下: server.N=YYY:A:B
server.1=172.0.0.1:2888:3888 server.2=172.0.0.2:2888:3888 server.3=172.0.0.3:2888:3888
說明:端口2888由對等zookeeper服務器使用,用於互相通訊;而端口3888用於投票選舉
一、提供一個相似於目錄樹的結構來管理客戶端提交的數據 /aaa/bbb/ccc /yyy/uuu
二、目錄樹上的每個子節點均可以存儲一份數據信息,目錄樹上的每一個節點都稱爲一個znode
三、要訪問數據時應該指定數據節點znode所在的路徑