1. 程式人生 > >zookeeper配置檔案zoo.cfg詳細講解

zookeeper配置檔案zoo.cfg詳細講解

a.在安裝zookeeper的時候我們要去修改zookeeper預裝是conf目錄下面的zoo_sample.cfg這個檔案,首先我們要做的事就是重新命名這個檔案

mv zoo_sample.cfg  zoo.cfg

b.預裝的zoo.cfg下面預設有五個屬性,他們分別是:1.tickTime,2.initLimit,3.syncLimit,4.dataDir,5.clientPort
下面我們來對這五個屬性做詳細的分

 (1)tickTime   
——CS通訊心跳時間

tick翻譯成中文的話就是滴答滴答的意思,連起來就是滴答滴答的時間,寓意心跳間隔,單位是毫秒,系統預設是2000毫秒,也就是間隔兩秒心跳一次。

tickTime的意義:客戶端與伺服器或者伺服器與伺服器之間維持心跳,也就是每個tickTime時間就會發送一次心跳。通過心跳不僅能夠用來監聽機器的工作狀態,還可以通過心跳來控制Flower跟Leader的通訊時間,預設情況下FL的會話時常是心跳間隔的兩倍。

# The number of ticks that the initial  synchronization phase can take

(2)initLimit
叢集中的follower伺服器(F)與leader伺服器(L)之間初始連線時能容忍的最多心跳數(tickTime的數量)。

(3)syncLimit
叢集中flower伺服器(F)跟leader(L)伺服器之間的請求和答應最多能容忍的心跳數。   

(4)dataDir
該屬性對應的目錄是用來存放myid資訊跟一些版本,日誌,跟伺服器唯一的ID資訊等。

 來看註釋

 # the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just   example sakes.

不要使用/tmp來做儲存快照的目錄,/tmp這只是一個案例。在叢集zookeeper服務在啟動的時候回去讀取zoo.cfg這個檔案,從這個檔案中找到這個屬性然後獲取它的值也就是dataDir 的路徑,它會從這個路徑下面讀取mydi這個檔案,從這個檔案中獲取要啟動的當前伺服器的地址,當它找不到這個地址的時候就會丟擲異常,我們可以去檢視狀態
 

[[email protected] data]$ zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper-3.4.5/bin/../conf/zoo.cfg
<span style="color:#ff6600;">Error contacting service. It is probably not running.</span>

這是一個很常見的錯誤,要想解決這個bug,去檢視日誌就會有很精準的提示:

java.lang.RuntimeException: My id 5 not in the peer list

所以在建立myid的時候給的值是多少,那麼在zoo.cfg裡面配置叢集資訊的時候要準確指出!

c.叢集資訊的配置
在zoo.cfg這個檔案中,配置叢集資訊是存在一定的格式:service.N =YYY: A:B

N:代表伺服器編號(也就是myid裡面的值)

YYY:伺服器地址

A:表示 Flower 跟 Leader的通訊埠,簡稱服務端內部通訊的埠(預設2888)

B:表示 是選舉埠(預設是3888)

server.1=hadoop05:2888:3888
server.2=hadoop06:2888:3888
server.3=hadoop07:2888:3888

(5)clientPort

客戶端連線的介面,客戶端連線zookeeper伺服器的埠,zookeeper會監聽這個埠,接收客戶端的請求訪問!這個埠預設是2181。

啟動伺服器,可以使用下面 的命令來來檢視埠監聽情況

netstat -tan

畫紅線的地方就是當前Zookeeper伺服器的監聽的埠,粉色圈起來的地方我們還可以分析出哪臺伺服器的2888埠已經開啟在監聽客戶端的請求,也就是說IP地址是

192.168.2.16這太伺服器就是當前的Leader,還可以看出另外兩臺伺服器的3888選舉埠已經在監聽。