zookeeper
Zookeeper是一個開源的分佈式的,爲分佈式應用提供協調服務的Apache項目。Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。
有哪些應用
- 分佈式鎖
- 統一命名服務
- 配置管理
- 集羣生命週期管理
- 負載均衡
下載
官網下載
https://zookeeper.apache.org/
我也提供了網盤的資源
鏈接:https://pan.baidu.com/s/1uceU1hF7c7sRWMv2dEYjNg
提取碼:uane
本地安裝(僞分佈)
-
首先,將gz拷貝到linux虛擬機或者服務器中(注意一定要有java環境就是jdk)
-
解壓
tar -zxvf zookeeper-3.4.10.tar.gz -C 你的路徑 -
vi /etc/profile 配置環境變量
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=ZOOKEEPER_HOME/bin -
zookeeper-3.4.10/conf中有一個zoo_sample.cfg配置文件,修改爲zoo.cfg
-
進入cfg文件,然後找到dataDir=/…/zookeeper-3.4.10/data
這裏的data文件夾是需要自己通過dir創建的。
然後就可以啓動了
- 啓動zookeeper
bin/zkServer.sh start
- 查看進程是否啓動
jps
bin/zkServer.sh status
- 其他常用命令
啓動客戶端:
zkCli.sh
退出:
quit
停止zookeeper
zkServer.sh stop
分佈式部署
步驟和本地配置是一樣的,區別就是在cfg文件中我們還需要增加集羣的信息:
server.1=第一臺ip:2888:3888
server.2=第二臺ip:2888:3888
server.3=第二臺ip:2888:3888
Parameter1是一個數字,表示這個是第幾號服務器;
Parameter2是這個服務器的ip地址;
Parameter3是這個服務器與集羣中的Leader服務器交換信息的端口;
Parameter4是萬一集羣中的Leader服務器掛了,需要一個端口來重新進行選舉,這個端口就是用來執行選舉時服務器相互通信的端口。
另外還需要增加一個id的對應文件idConfig放到data下面,裏面只需要寫當前服務器或者虛擬機是server.id,這個id這個數字就可以了,比如你想把現在配置的主機當作1號,那麼idConfig中只需要放1。
然後將這臺機子上的zookeeper中的所有文件複製到集羣上的其他主機上,其他主機修改idConfig,然後配置環境變量,這樣就完成了。
啓動的時候是分別啓動的。後面的操作就是一樣的了,然後我會在後面的文章中給大家分享zookeeper的機制和原理。
配置參數用法
1)tickTime=2000:通信心跳數,Zookeeper服務器心跳時間,單位毫秒
Zookeeper使用的基本時間,服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個tickTime時間就會發送一個心跳,時間單位爲毫秒。
2)initLimit=10:Leader和Follower初始通信時限
集羣中的follower跟隨者服務器與leader領導者服務器之間初始連接時能容忍的最多心跳數(tickTime的數量),用它來限定集羣中的Zookeeper服務器連接到Leader的時限。
投票選舉新leader的初始化時間
3)syncLimit=5:Leader和Follower同步通信時限
集羣中Leader與Follower之間的最大響應時間單位,假如響應超過syncLimit * tickTime,Leader認爲Follwer死掉,從服務器列表中刪除Follwer。
在運行過程中,Leader負責與ZK集羣中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態。
如果L發出心跳包在syncLimit之後,還沒有從F那收到響應,那麼就認爲這個F已經不在線了。
4)dataDir:數據文件目錄+數據持久化路徑
保存內存數據庫快照信息的位置,如果沒有其他說明,更新的事務日誌也保存到數據庫。
5)clientPort=2181:客戶端連接端口
監聽客戶端連接的端口
參考https://blog.csdn.net/king_qc/article/details/81200434
節點類型
1)Znode有兩種類型:
短暫(ephemeral):客戶端和服務器端斷開連接後,創建的節點自己刪除
持久(persistent):客戶端和服務器端斷開連接後,創建的節點不刪除
2)Znode有四種形式的目錄節點(默認是persistent )
- 持久化目錄節點(PERSISTENT)
客戶端與zookeeper斷開連接後,該節點依舊存在。
- 持久化順序編號目錄節點(PERSISTENT_SEQUENTIAL)
客戶端與zookeeper斷開連接後,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號。
- 臨時目錄節點(EPHEMERAL)
客戶端與zookeeper斷開連接後,該節點被刪除。
- 臨時順序編號目錄節點(EPHEMERAL_SEQUENTIAL)
客戶端與zookeeper斷開連接後,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號。