zookeeper概述,安裝和配置

一、背景

Zookeeper是一個高性能,分佈式的,開源分佈式應用協調服務。它提供了簡單原始的功能,分佈式應用可以基於它實現更高級的服務,比如同步,配置管理,集羣管理,名空間。

二、安裝和配置

Zookeeper的安裝和配置比較簡單,既可以配置成單機模式,僞集羣模式和集羣模式,下面分別對這三種模式進行說明:
(1)、下載zookeeper
官方下載地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
(2)、單機模式
單機模式較簡單,是指只部署一個zk進程,客戶端直接與該zk進程進行通信。
在開發測試環境下,通過來說沒有較多的物理資源,因此我們常使用單機模式。當然在單臺物理機上也可以部署集羣模式,但這會增加單臺物理機的資源消耗。故在開發環境中,我們一般使用單機模式。 但是要注意,生產環境下一般不可用單機模式,這是由於無論從系統可靠性還是讀寫性能,單機模式都不能滿足生產的需求。
運行配置

  • 解壓到某個目錄下,如 /data/zookeeper/;
  • 拷貝解壓後的conf目錄下的zoo_sample.cfg文件,重命名爲zoo.cfg;
  • 修改默認的配置,配置如下:
tickTime=2000
dataDir=/data/zookeeper/tmp/data
dataLogDir=/data/zookeeper/tmp/log
clientPort=2181

參數說明:
tickTime: zookeeper中使用的基本時間單位, 毫秒值.
dataDir: 數據目錄. 可以是任意目錄.
dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數, 將使用和dataDir相同的設置.
clientPort: 監聽client連接的端口號.

至此,單機模式的zookeeper已經配置完畢,下面啓動即可,啓動server 只需運行腳本:

bin/zkServer.sh start  

Server啓動之後, 就可以啓動client連接server了, 執行腳本:

bin/zkCli.sh -server localhost:2181  

(3)、僞集羣模式
所謂僞集羣, 是指在單臺機器中啓動多個zookeeper進程, 並組成一個集羣. 以啓動3個zookeeper進程爲例.
1、將zookeeper的目錄拷貝2份,分別解壓到三個目錄下,如

/data/zookeeper/zServer1,/data/zookeeper/zServer2,/data/zookeeper/zServer3

2、創建每個目錄下的conf/zoo.cfg配置文件,如/data/zookeeper/zServer1/conf/zoo.cfg 內容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/zServer1/tmp/data
dataLogDir=/data/zookeeper/zServer1/tmp/log
clientPort=2181
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

其他的/data/zookeeper/zServer2/confzoo.cfg /data/zookeeper/zServer3/confzoo.cfg,與zServer1的相同

注意:
因爲是在一臺機器上模擬集羣,所以端口不能重複,這裏用2181~2183,2287~2289,以及3387~3389相互錯開。另外每個zk的instance,都需要設置獨立的數據存儲目錄、日誌存儲目錄,所以dataDir、dataLogDir這二個節點對應的目錄,需要手動先創建好。
3、另外還有一個關鍵的設置,在每個zk server配置文件的dataDir所對應的目錄下,必須創建一個名爲myid的文件,其中的內容必須與zoo.cfg中server.x 中的x相同,即:

  • /data/zookeeper/zServer1/data/myid 中的內容爲1,對應server.1中的1
  • /data/zookeeper/zServer2/data/myid 中的內容爲2,對應server.2中的2
  • /data/zookeeper/zServer3/data/myid 中的內容爲3,對應server.3中的3

生產環境中,分佈式集羣部署的步驟與上面基本相同,只不過因爲各zk server分佈在不同的機器,上述配置文件中的localhost換成各服務器的真實Ip即可。
分佈在不同的機器後,不存在端口衝突問題,可以讓每個服務器的zk均採用相同的端口,這樣管理起來比較方便。
4、啓動驗證
進入每個zServer的bin/目錄下執行 zServer.sh start進行啓動,若已啓動,請殺掉進程後啓動。
啓動成功後,執行jps查看進程,或用zServer.sh status查看狀態

(4)、集羣模式
集羣模式與僞集羣模式的配置基本相同,由於集羣模式是分佈在不同的機器上,因此各server的conf/zoo.cfg文件可以完全一樣.
下面是一個配置實例:

tickTime=2000    
initLimit=5    
syncLimit=2    
dataDir=/home/zookeeper/data    
dataLogDir=/home/zookeeper/logs    
clientPort=4180  
server.43=10.1.39.43:2888:3888  
server.47=10.1.39.47:2888:3888    
server.48=10.1.39.48:2888:3888

示例中部署了3臺zookeeper server, 分別部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 需要注意的是, 各server的dataDir目錄下的myid文件中的數字必須不同.
10.1.39.43 server的myid爲43, 10.1.39.47 server的myid爲47, 10.1.39.48 server的myid爲48.

發佈了72 篇原創文章 · 獲贊 23 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章