zookeeper僞集羣搭建及遇到的坑

今天搭建了zookeeper的單機僞集羣,記錄一下防止忘記

安裝

從官網下載安裝包解壓到本地目錄,比如D:/zookeeper-3.4.10

配置

爲了運行3個 zookeeper 服務端進程,新建存放這3個進程運行和配置數據的目錄,比如叫 z1z2z3 。在這3個目錄下都建一個 data 目錄用於存放進程運行時的數據,接着在這3個目錄都新建一個叫 myid 的文件,內容分別爲1、2、3(即 z1 下 myid 的內容是1、z2 下 myid 的內容是2、z3 下 myid 的內容是3),最後在這3個目錄下都建一個 .cfg 結尾的配置文件。
z1 目錄下的配置文件叫 z1.cfg,內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z1所在目錄的全路徑)/data
clientPort=2981
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445

z2 目錄下的配置文件叫 z2.cfg,內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z2所在目錄的全路徑)/data
clientPort=2982
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
z3 目錄下的配置文件叫 z3.cfg,內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z3所在目錄的全路徑)/data
clientPort=2983
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
tickTime:服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每隔 tickTime 時間就會發送一個心跳,以毫秒爲單位。也是 zookeeper 中的時間單元,zookeeper 中所有時間都是以這個時間單元爲基礎,進行整數倍配置的。例如,session 的最小超時時間是 2*tickTime 。
initLimit 和 syncLimit:都是表示連接的心跳數,具體含義暫時可以不用管。
dataDir:zookeeper 保存數據的目錄,默認情況下 zookeeper 寫數據的日誌文件也保存在這個目錄裏。
clientPort:客戶端連接服務器的端口,zookeeper 會監聽這個端口,接受客戶端的訪問請求。
server.N:XXXX:P1:P2 。其中 N 表示服務器編號,XXXX 表示該服務器的 IP 地址,P1 和 P2 是兩個 TCP 端口號,分別用於仲裁和 Learder 選舉。服務器編號也對應着上面配置的 myid 文件的內容,比如上面 z1 目錄下的 myid 內容是 1 ,也就是這裏的 server.

啓動

分別啓動3個 zookeeper 進程,啓動時使用上面新建的配置文件
啓動 z1 :
sh $(zookeeper壓縮包解壓後的全路徑)/bin/zkServer.sh start $(z1所在目錄的全路徑)/z1.cfg
啓動 z2 :
sh $(zookeeper壓縮包解壓後的全路徑)/bin/zkServer.sh start $(z2所在目錄的全路徑)/z2.cfg
啓動 z3 :
sh $(zookeeper壓縮包解壓後的全路徑)/bin/zkServer.sh start $(z3所在目錄的全路徑)/z3.cfg
當看到如下信息表示 zookeeper 的進程啓動好了
圖片描述

在啓動的過程中遇到一個坑,在啓動好後用sh $(zookeeper壓縮包解壓後的全路徑)/bin/zkServer.sh status $(z2所在目錄的全路徑)/z2.cfg報錯如下
圖片描述
解決過程如下:
使用./zkServer.sh start-foreground /mnt/d/zkData/z1/zoo.cfg使zookeeper前臺運行,拋如下異常
圖片描述
但是我已經寫了myid文件了,怎麼找不到呢?
其實是這樣,我在windows10的linux sub system裏運行的,不能用windows裏的路徑格式,要改爲這樣的格式/mnt/d/{zookeeper myid路徑},這個坑是windows的坑啊。。。

驗證

用telnet連接客戶端端口,如下說明成功
圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章