1. 程式人生 > >【ZooKeeper】ZooKeeper安裝及簡單操作

【ZooKeeper】ZooKeeper安裝及簡單操作

centos task spa val jdk8 dir mini dmi 高效

ZooKeeper介紹

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

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

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

  官網:https://zookeeper.apache.org

ZooKeeper安裝

  安裝環境:

    1、系統:CentOS 7.4

    2、Java環境:JDK8

  zookeeper有單機、偽集群、集群三種部署方式,本例使用的zookeeper版本是:zookeeper-3.4.12

  單機模式

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

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

      解壓後目錄如下:

      技術分享圖片

    3、進入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端口不一樣。

    4、可以不修改zoo.cfg,默認配置就行,進去zookeeper安裝目錄,啟動ZooKeeper

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

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

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

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

  偽集群模式

    偽集群模式就是在同一主機啟動多個zookeeper並組成集群

    1、在同一臺主機上,通過復制得到三個zookeeper實例

    技術分享圖片

    2、對三個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

      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

    3、分別啟動三個zookeeper節點

    4、查看節點狀態

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

      技術分享圖片

  集群模式

    集群模式就是在不同主機上安裝zookeeper然後組成集群的模式,可以參考偽集群模式安裝

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

    2、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

    3、zookeeper的data/myid配置,使用如下命令:

1 echo ‘1‘ > data/myid

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

    4、分別啟動三個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

【ZooKeeper】ZooKeeper安裝及簡單操作