Zookeeper的安裝與使用


1.1. Zookeeper的安裝與使用

 

ZooKeeper的安裝包括單機模式安裝,以及集群模式安裝。

 

安裝如果有不懂可以看:

https://blog.csdn.net/lihao21/article/details/51778255

 

1.1.1. Windows環境下搭建Zookeeper

 

環境要求:必須要有jdk環境。

(1)安裝jdk

(2)安裝zookeeper,可以在http://zookeeper.apache.org/官網下下載zookeeper。

我下載的是3.3.6版本的zookeeper。

(3)解壓zookeeper后獲取到zookeeper的目錄。

 

 

對主要的一些目錄做介紹:

Bin:主要運行的一些腳本

Conf:配置文件的所在地

Lib:zookeeper的jar

 

(4)啟動zookeeper服務

走到bin目錄下去運行zkServer.cmd,雙擊它,但是出現一閃而退的情況,這是正常的。

conf目錄下將zoo_sample.cfg復制粘貼命名為zoo.cfg。

並修改其中的內容:

 1 # The number of milliseconds of each tick
 2 
 3 tickTime=2000
 4 
 5 # The number of ticks that the initial
 6 
 7 # synchronization phase can take
 8 
 9 initLimit=10
10 
11 # The number of ticks that can pass between
12 
13 # sending a request and getting an acknowledgement
14 
15 syncLimit=5
16 
17 # the directory where the snapshot is stored.
18 
19 dataDir=C:\\Users\\Dell\\Desktop\\zookeeper\\zookeeper-3.3.6\\zookeeper-3.3.6\\data
20 
21 dataDir=C:\\Users\\Dell\\Desktop\\zookeeper\\zookeeper-3.3.6\\zookeeper-3.3.6\\log
22 
23 # the port at which the clients will connect
24 
25 clientPort=2181

配置文件簡單解析

1、tickTime:這個時間是作為Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。

2、dataDir:顧名思義就是Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。

3、dataLogDir:顧名思義就是Zookeeper 保存日志文件的目錄

4、clientPort:這個端口就是客戶端連接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。

 

好修改完畢后,就可以去啟動zookeeper的服務了。

 

出現當前界面表示啟動成功。可以去測試一下了。

補充:ZooKeeper的安裝模式分為三種,分別為:單機模式(stand-alone)、集群模式和集群偽分布模式。ZooKeeper 單機模式的安裝相對比較簡單,如果第一次接觸ZooKeeper的話,建議安裝ZooKeeper單機模式或者集群偽分布模式。以上使用的是單機模式

 

1.1.2. Linux安裝單機版

 

提示:

單機模式較簡單,是指只部署一個zk進程,客戶端直接與該zk進程進行通信。
在開發測試環境下,通過來說沒有較多的物理資源,因此我們常使用單機模式。當然在單台物理機上也可以部署集群模式,但這會增加單台物理機的資源消耗。故在開發環境中,我們一般使用單機模式。
但是要注意,生產環境下不可用單機模式,這是由於無論從系統可靠性還是讀寫性能,單機模式都不能滿足生產的需求。

 

環境要求:必須要有jdk環境。當前安裝機器是有jdk1.8的環境了,就不演示jdk的安裝了。

 

(1)下載zookeeper安裝包zookeeper-3.3.6.tar.gz

 

(2)上傳到linux上,並將其解壓出來。解壓命令:tar -zxvf zookeeper-3.3.6.tar.gz

解壓后會得到一個zookeeper-3.3.6的目錄。並將去復制到/usr/local目錄下

cp -r zookeeper-3.3.6 zookeeper

 

(3)進入到/usr/local/zookeeper/conf目錄下,拷貝zoo_samle.cfg為zoo.cfg

 cd zookeeper-3.3.6/conf/

 cp zoo_sample.cfg zoo.cfg

 

(4)編輯zoo.cfg文件,修改為:

 1 # The number of milliseconds of each tick
 2 
 3 tickTime=2000
 4 
 5 # The number of ticks that the initial
 6 
 7 # synchronization phase can take
 8 
 9 initLimit=10
10 
11 # The number of ticks that can pass between
12 
13 # sending a request and getting an acknowledgement
14 
15 syncLimit=5
16 
17 # the directory where the snapshot is stored.
18 
19 # 指定數據存放目錄
20 
21 dataDir=/usr/zookeeper
22 
23 # log 存放目錄
24 
25 dataLogDir=/usr/zookeeper/log
26 
27 # the port at which the clients will connect
28 
29 # 端口號
30 
31 clientPort=2181

配置文件簡單解析 

1、tickTime:這個時間是作為Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。

2、dataDir:顧名思義就是Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。

3、dataLogDir:顧名思義就是Zookeeper 保存日志文件的目錄

4、clientPort:這個端口就是客戶端連接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。

 

(5)修改環境變量

vim /etc/profile

#指向到zookeeper目錄下

export ZOOKEEPER_INSTALL=/usr/local/zookeeper

export PATH=$ZOOKEEPER_INSTALL/bin:$PATH

 

source /etc/profile //讓環境變量生效

 

(6)啟動zookeeper

bin目錄下

./zkServer.sh start 啟動

./zkServer.sh status 查看狀態,看看是否啟動成功

./zkServer.sh stop 關閉zookeeper服務

 

(7)好了安裝成功,可以使用客戶端去使用zookeeper了。

連接zookeeper:Zkcli.sh -server 127.0.0.1:2181

 

1.1.3. Linux集群版安裝

 

單機模式的zk進程雖然便於開發與測試,但並不適合在生產環境使用。在生產環境下,我們需要使用集群模式來對zk進行部署。

注意
在集群模式下,建議至少部署3個zk進程,或者部署奇數個zk進程。如果只部署2個zk進程,當其中一個zk進程掛掉后,剩下的一個進程並不能構成一個quorum的大多數。因此,部署2個進程甚至比單機模式更不可靠,因為2個進程其中一個不可用的可能性比一個進程不可用的可能性還大。 

 

環境要求:

准備三台服務器,每台服務器上必須要有jdk環境。

 

安裝開始:

(1)上傳zookeeper 壓縮包並且解壓出來。

(2)拷貝conf 目錄下的zoo_samle.cfg文件為zoo.cfg,並修改其中的內容:

 

tickTime=2000

initLimit=5

syncLimit=2

dataLogDir=/usr/local/zookeeper/logs

dataDir=/usr/local/zookeeper/data

clientPort=2181

server.1=192.168.100.21:2888:3888

server.2=192.168.100.23:2888:3888

server.3=192.168.100.90:2888:3888

配置說明: 

initLimit
ZooKeeper集群模式下包含多個zk進程,其中一個進程為leader,余下的進程為follower。
follower最初與leader建立連接時,它們之間會傳輸相當多的數據,尤其是follower的數據落后leader很多。initLimit配置follower與leader之間建立連接后進行同步的最長時間

syncLimit
配置follower和leader之間發送消息,請求和應答的最大時間長度。

tickTime
tickTime則是上述兩個超時配置的基本單位,例如對於initLimit,其配置值為5,說明其超時時間為 2000ms * 5 = 10秒。

server.id=host:port1:port2
其中id為一個數字,表示zk進程的id,這個id也是dataDir目錄下myid文件的內容。
host是該zk進程所在的IP地址,port1表示follower和leader交換消息所使用的端口,port2表示選舉leader所使用的端口。

dataDir
其配置的含義跟單機模式下的含義類似,不同的是集群模式下還有一個myid文件。myid文件的內容只有一行,且內容只能為1 - 255之間的數字,這個數字亦即上面介紹server.id中的id,表示zk進程的id。

 

注意 
如果僅為了測試部署集群模式而在同一台機器上部署zk進程,server.id=host:port1:port2配置中的port參數必須不同。但是,為了減少機器宕機的風險,強烈建議在部署集群模式時,將zk進程部署不同的物理機器上面。

 

(3)進入zoo.cfg文件制定data的目錄下創建myid文件,並寫入值。

這個值是每台服務器上的zookeeper的進程id。都是不同的。

 

(4)三台服務器分別進行以上操作后。分別在這三台機器上啟動zk進程,這樣我們便zk集群啟動了起來。

在啟動成功后,可以使用 ./zkServer.sh status 來查看每台服務器是否啟動成功,還可以看到當前zk的進程是leader還是follower

 

(5)連接

可以使用以下命令來連接一個zookeeper集群:

bin/zkCli.sh -server 192.168.100.21:2181,192.168.100.23:2181,192.168.100.90:2181

 

成功連接后,可以看到如下輸出:

 

 

1.1.4. 客戶端使用

ZooKeeper命令行工具類似於Linux的shell環境,不過功能肯定不及shell啦,但是使用它我們可以簡單的對ZooKeeper進行訪問,數據創建,數據修改等操作.使用 zkCli.sh -server 127.0.0.1:2181 連接到 ZooKeeper 服務,連接成功后,系統會輸出 ZooKeeper 的相關環境以及配置信息。

命令行工具的一些簡單操作如下:

1. 顯示根目錄下、文件: ls / 使用 ls 命令來查看當前 ZooKeeper 中所包含的內容

2. 顯示根目錄下、文件: ls2 / 查看當前節點數據並能看到更新次數等數據

3. 創建文件,並設置初始內容: create /zk "test" 創建一個新的 znode節點“ zk ”以及與它關聯的字符串

4. 獲取文件內容: get /zk 確認 znode 是否包含我們所創建的字符串

5. 修改文件內容: set /zk "zkbak" 對 zk 所關聯的字符串進行設置

6. 刪除文件: delete /zk 將剛才創建的 znode 刪除

7. 退出客戶端: quit

8. 幫助命令: help

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM