1. 程式人生 > >zookeeper安裝和使用 windows環境&叢集搭建

zookeeper安裝和使用 windows環境&叢集搭建

zookeeper安裝和使用 windows環境

2016年07月25日 22:27:02 tlk20071 閱讀數:93471 標籤: zookeeper 分散式應用 更多

個人分類: zookeeper

簡介

ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
ZooKeeper包含一個簡單的原語集,提供Java和C的介面。
ZooKeeper程式碼版本中,提供了分散式獨享鎖、選舉、佇列的介面,程式碼在zookeeper-3.4.8\src\recipes。其中分佈鎖和佇列有Java和C兩個版本,選舉只有Java版本。

下載

 Apache官方最新版本為:3.4.8

下載地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

 

     安裝

      解壓到指定目錄下    D:\soft\zookeeper-3.4.8

      修改zoo_sample.cfg 檔名(D:\soft\zookeeper-3.4.8\conf) 為 zoo.cfg

      主要修改一下日誌位置,具體配置檔案如下:

 
  1. # The number of milliseconds of each tick

  2. tickTime=2000

  3. # The number of ticks that the initial 

  4. # synchronization phase can take

  5. initLimit=10

  6. # The number of ticks that can pass between 

  7. # sending a request and getting an acknowledgement

  8. syncLimit=5

  9. # the directory where the snapshot is stored.

  10. # do not use /tmp for storage, /tmp here is just 

  11. # example sakes.

  12. dataDir=D:\\zookeeper\\data

  13. dataLogDir=D:\\zookeeper\\log

  14. # the port at which the clients will connect

  15. clientPort=2181

  16. # the maximum number of client connections.

  17. # increase this if you need to handle more clients

  18. #maxClientCnxns=60

  19. #

  20. # Be sure to read the maintenance section of the 

  21. # administrator guide before turning on autopurge.

  22. #

  23. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

  24. #

  25. # The number of snapshots to retain in dataDir

  26. #autopurge.snapRetainCount=3

  27. # Purge task interval in hours

  28. # Set to "0" to disable auto purge feature

  29. #autopurge.purgeInterval=1

配置檔案簡單解析

1、tickTime:這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。
2、dataDir:顧名思義就是 Zookeeper 儲存資料的目錄,預設情況下,Zookeeper 將寫資料的日誌檔案也儲存在這個目錄裡。
3、dataLogDir:顧名思義就是 Zookeeper 儲存日誌檔案的目錄
4、clientPort:這個埠就是客戶端連線 Zookeeper 伺服器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求。

 

       啟動

進入到bin目錄,並且啟動zkServer.cmd,這個指令碼中會啟動一個java程序

 

啟動後jps可以看到QuorumPeerMain的程序

 

也可以啟動客戶端連線一下

 

OK,安裝成功,很簡單

 

zookeeper叢集搭建(windows環境下)

 

本次zk測試部署版本為3.4.6版本,下載地址http://mirrors.cnnic.cn/apache/zookeeper/

限於伺服器個數有限本次測試了兩種情況

1、單節點方式:部署在一臺伺服器上

2、單IP多節點(偽叢集):部署在同一IP,但是有多個節點,各有自己的埠

3、多IP多節點:部署在不同IP,各有自己的埠(未測試)

一、單節點方式:

1、解壓zk包,進入zookeeper-3.4.6\conf目錄,修改zoo_sample.cfg檔案為zoo.cfg.如果沒有特殊需求,不需要修改配置檔案,直接使用預設配置檔案即可.

各個引數的意義:

tickTime:這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。 dataDir:顧名思義就是 Zookeeper 儲存資料的目錄,預設情況下,Zookeeper 將寫資料的日誌檔案也儲存在這個目錄裡。 clientPort:這個埠就是客戶端連線 Zookeeper 伺服器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求。 initLimit:叢集中的follower伺服器(F)與leader伺服器(L)之間初始連線時能容忍的最多心跳數(tickTime的數量) syncLimit:叢集中的follower伺服器與leader伺服器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。

啟動zookeeper,windows下執行zookeeper-3.4.6\bin >zkServer.cmd;linux下ookeeper-3.4.6\bin >zkServer.sh start啟動

 

檢視是否成功執行:bin/zkServer.cmd  status

二、單IP多節點

 

(1)修改配置檔案:拷貝多份zookeeper程式,例如設定三個server,分別建立目錄server1、server2、server3,每個目錄下存放一份zookeeper程式,並修改各自配置檔案如下:

server1

server2配置:

server3配置:

 

注意:

同一IP上搭建多個節點的叢集時,必須要注意埠問題,埠必須不一致才行;

建立多個節點叢集時,在dataDir目錄下必須建立myid檔案,myid檔案用於zookeeper驗證server序號等,myid檔案只有一行,並且為當前server的序號,例如server.1的myid就是1,server2的myid就是2等。

server.A=B:C:D;其中 A 是一個數字,表示這個是第幾號伺服器;B 是這個伺服器的 ip 地址;C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的  Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

 

啟動過程:啟動順序為server1、server2、server3。在啟動server1,server2時zk會報錯,當所有節點全部啟動時錯誤會消失。

三、

多IP多節點:

將zookeeper拷貝到每個節點一份。

多IP多節點與單IP多節點搭建過程基本一致,上述過程不再重複描述,僅重點說一個地方:server的IP地址、埠為真實即可。

注意:zk的部署個數最好為基數,ZK叢集的機制是隻要超過半數的節點OK,叢集就能正常提供服務。只有ZK節點掛得太多,只剩一半或不到一半節點能工作,叢集才失效。

分類: Apache