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
主要修改一下日誌位置,具體配置檔案如下:
-
# The number of milliseconds of each tick
-
tickTime=2000
-
# The number of ticks that the initial
-
# synchronization phase can take
-
initLimit=10
-
# The number of ticks that can pass between
-
# sending a request and getting an acknowledgement
-
syncLimit=5
-
# the directory where the snapshot is stored.
-
# do not use /tmp for storage, /tmp here is just
-
# example sakes.
-
dataDir=D:\\zookeeper\\data
-
dataLogDir=D:\\zookeeper\\log
-
# the port at which the clients will connect
-
clientPort=2181
-
# the maximum number of client connections.
-
# increase this if you need to handle more clients
-
#maxClientCnxns=60
-
#
-
# Be sure to read the maintenance section of the
-
# administrator guide before turning on autopurge.
-
#
-
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
-
#
-
# The number of snapshots to retain in dataDir
-
#autopurge.snapRetainCount=3
-
# Purge task interval in hours
-
# Set to "0" to disable auto purge feature
-
#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