zookeeper 叢集搭建,及zoo.cfg配置詳解
ZooKeeper以Fast Paxos演算法為基礎,用於完成leader的選舉工作,所以至少需要3個節點。(為奇數個節點更加)為此,我準備了以下3個節點:
192.168.3.201 service1
192.168.3.202 service2
192.168.3.203 service3
1、下載zookeeper3.4.10:
解壓:
#tar -zxvf zookeeper-3.4.10.tar.gz
2、修改配置檔案,
#cd zookeeper-3.4.10/conf
我們就能看到,configuration.xsl、log4j.properties、zoo_sample.cfg。其中zoo_sample.cfg就是我們的配置檔案。需要把zoo_sample.cfg檔案重新命名成zoo.cfg(mv zoo_sample.cfg zoo.cfg)。最後開啟zoo.cfg(vim zoo.cfg);
zoo.cfg詳解:
tickTime: 基本事件單元,以毫秒為單位。這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每隔 tickTime時間就會發送一個心跳。
dataDir:儲存記憶體中資料庫快照的位置,顧名思義就是 Zookeeper 儲存資料的目錄,預設情況下,Zookeeper將寫資料的日誌檔案也儲存在這個目錄裡。
clientPort: 這個埠就是客戶端連線 Zookeeper 伺服器的埠,Zookeeper會監聽這個埠,接受客戶端的訪問請求。
initLimit: 這個配置項是用來配置 Zookeeper接受客戶端初始化連線時最長能忍受多少個心跳時間間隔數,當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是10*2000=20 秒。
syncLimit: 這個配置項標識 Leader 與 Follower之間傳送訊息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 5*2000=10 秒
server.A = B:C:D : A表示這個是第幾號伺服器, B 是這個伺服器的 ip 地址;
C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;
D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader
如下是我的配置:
注意注意:全部叢集都設定成這樣的配置,唯一不同的需要在不同的機器上所配置的dataDir目錄下建立一個myid的檔案,其中就寫本機是第幾號伺服器。如我下圖的service1配置:
我上面配置的:server.1=192.168.3.201:2888:3888,所以我這臺就配置成1,其它機器雷同。
然後cd到zookeeper的bin目錄下。
sh ./zkServer.sh start 啟動zookeeper。
sh ./zkServer.sh stop 停止zookeeper。
然後jps下,發現有QuorumPeerMain,說明啟動成功,否則啟動失敗,建議再次看看zoo.cfg檔案或者myid檔案是否配置正確。