【ZooKeeper】ZooKeeper安裝及簡單操做

ZooKeeper介紹

  ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。html

ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。node

ZooKeeper包含一個簡單的原語集, [1] 提供Java和C的接口。apache

  官網:https://zookeeper.apache.org服務器

ZooKeeper安裝

  安裝環境:分佈式

    一、系統:CentOS 7.4ide

    二、Java環境:JDK8oop

  zookeeper有單機、僞集羣、集羣三種部署方式,本例使用的zookeeper版本是:zookeeper-3.4.12性能

  單機模式

    一、下載ZooKeeper,地址:http://mirrors.hust.edu.cn/apache/zookeeper/ui

        注意版本,啓動報錯可能找不到主類,能夠下載源碼版this

    二、解壓,命令:tar -zxvf zookeeper-3.4.12.tar.gz -C /data/soft/

      解壓後目錄以下:

      

    三、進入conf目錄,建立一個zookeeper的配置文件zoo.cfg,可複製conf/zoo_sample.cfg做爲配置文件

      命令:cd conf

      命令:cp zoo_sample.cfg zoo.cfg

      

      配置文件說明:

 1 # The number of milliseconds of each tick
 2 # tickTime:CS通訊心跳數
 3 # Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。tickTime以毫秒爲單位。
 4 tickTime=2000
 5 
 6 # The number of ticks that the initial 
 7 # synchronization phase can take
 8 # initLimit:LF初始通訊時限
 9 # 集羣中的follower服務器(F)與leader服務器(L)之間初始鏈接時能容忍的最多心跳數(tickTime的數量)。
10 initLimit=5
11 
12 # The number of ticks that can pass between 
13 # sending a request and getting an acknowledgement
14 # syncLimit:LF同步通訊時限
15 # 集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
16 syncLimit=2
17 
18 # the directory where the snapshot is stored.
19 # do not use /tmp for storage, /tmp here is just 
20 # example sakes.
21 # dataDir:數據文件目錄
22 # Zookeeper保存數據的目錄,默認狀況下,Zookeeper將寫數據的日誌文件也保存在這個目錄裏。
23 dataDir=/data/soft/zookeeper-3.4.12/data
24 
25 
26 # dataLogDir:日誌文件目錄
27 # Zookeeper保存日誌文件的目錄。
28 dataLogDir=/data/soft/zookeeper-3.4.12/logs
29 
30 # the port at which the clients will connect
31 # clientPort:客戶端鏈接端口
32 # 客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
33 clientPort=2181
34 
35 # the maximum number of client connections.
36 # increase this if you need to handle more clients
37 #maxClientCnxns=60
38 #
39 # Be sure to read the maintenance section of the 
40 # administrator guide before turning on autopurge.
41 #
42 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
43 #
44 # The number of snapshots to retain in dataDir
45 #autopurge.snapRetainCount=3
46 # Purge task interval in hours
47 # Set to "0" to disable auto purge feature
48 #autopurge.purgeInterval=1
49 
50 
51 # 服務器名稱與地址:集羣信息(服務器編號,服務器地址,LF通訊端口,選舉端口)
52 # 這個配置項的書寫格式比較特殊,規則以下:
53 
54 # server.N=YYY:A:B  
55 
56 # 其中N表示服務器編號,YYY表示服務器的IP地址,A爲LF通訊端口,表示該服務器與集羣中的leader交換的信息的端口。B爲選舉端口,表示選舉新leader時服務器間相互通訊的端口(當leader掛掉時,其他服務器會相互通訊,選擇出新的leader)。通常來講,集羣中每一個服務器的A端口都是同樣,每一個服務器的B端口也是同樣。可是當所採用的爲僞集羣時,IP地址都同樣,只能時A端口和B端口不同。 

    四、能夠不修改zoo.cfg,默認配置就行,進去zookeeper安裝目錄,啓動ZooKeeper

      啓動命令:./bin/zkServer.sh start

      中止命令:./bin/zkServer.sh stop  

      重啓命令:./bin/zkServer.sh restart

      狀態查看命令:./bin/zkServer.sh status

 

  僞集羣模式

    僞集羣模式就是在同一主機啓動多個zookeeper並組成集羣

    一、在同一臺主機上,經過複製獲得三個zookeeper實例

    

    二、對三個zookeeper節點進行配置

      zookeeper1配置文件conf/zoo.cfg修改以下:

 1 tickTime=2000
 2 initLimit=5
 3 syncLimit=2
 4 dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12181/data
 5 dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12181/logs
 6 clientPort=12181
 7 
 8 server.1=127.0.0.1:12888:13888
 9 server.2=127.0.0.1:14888:15888
10 server.3=127.0.0.1:16888:17888

      注:server.1中的數字1爲服務器的ID,須要與myid文件中的id一致,下一步將配置myid

      zookeeper1的data/myid配置,使用以下命令(即新建一個文件data/myid,在其中添加內容爲:1):

1 echo '1' > data/myid

      zookeeper2配置文件conf/zoo.cfg修改以下:

 1 tickTime=2000
 2 initLimit=5
 3 syncLimit=2
 4 dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12182/data
 5 dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12182/logs
 6 clientPort=12182
 7 
 8 server.1=127.0.0.1:12888:13888
 9 server.2=127.0.0.1:14888:15888
10 server.3=127.0.0.1:16888:17888

      zookeeper2的data/myid配置,使用以下命令:

1 echo '2' > data/myid

      zookeeper3配置文件conf/zoo.cfg修改以下:

 1 tickTime=2000
 2 initLimit=5
 3 syncLimit=2
 4 dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/data
 5 dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/logs
 6 clientPort=12183
 7 
 8 server.1=127.0.0.1:12888:13888
 9 server.2=127.0.0.1:14888:15888
10 server.3=127.0.0.1:16888:17888

      zookeeper3的data/myid配置,使用以下命令:

1 echo '3' > data/myid

    三、分別啓動三個zookeeper節點

    四、查看節點狀態

        命令:./zookeeper-3.4.12-12181/bin/zkServer.sh status

      

 

  集羣模式

    集羣模式就是在不一樣主機上安裝zookeeper而後組成集羣的模式,能夠參考僞集羣模式安裝

    一、在三臺機器上分別部署1個ZooKeeper實例

    二、zookeeper配置文件conf/zoo.cfg,以下:

 1 tickTime=2000
 2 initLimit=5
 3 syncLimit=2
 4 dataDir=/data/soft/zookeeper-3.4.12/data
 5 dataLogDir=/data/soft/zookeeper-3.4.12/logs
 6 clientPort=2181
 7 
 8 server.1=127.0.0.1:2888:3888
 9 server.2=127.0.0.2:2888:3888
10 server.3=127.0.0.3:2888:3888

    三、zookeeper的data/myid配置,使用以下命令:

1 echo '1' > data/myid

     固然zookeeper1 對應的是 1,zookeeper2 對應的是 2,zookeeper3 對應的是 3

    四、分別啓動三個zookeeper節點,即完成對ZooKeeper集羣的安裝

  

ZooKeeper簡單操做

  下面操做在zookeeper單機模式下完成的

  a、使用客戶端鏈接ZooKeeper服務

    命令:./bin/zkCli.sh -server 127.0.0.1:2181

    ./bin/zkCli.sh默認鏈接到本地127.0.0.1:2181

    

  b、使用 ls 命令來查看當前 ZooKeeper 中所包含的內容:

     命令:ls /

     

  c、建立了一個新的 znode 節點「 zk 」以及與它關聯的字符串

    命令:create /zk myData

    

  d、獲取znode節點「 zk 」

    命令:get /zk

    

  e、刪除znode節點「 zk 」

    命令:delete /zk

    

  f、推出客戶端

    命令:quit

相關文章
相關標籤/搜索