今天心血來潮,想搞一下zookeeper集群。具體步驟記錄下吧~嘻嘻😬!
第一步、環境需求 jdk安裝部署好
第二步、zookeeper下載.tar.gz結尾的包, 使用“tar -zxvf 文件名”方式進行解壓縮
https://www.apache.org/dist/zookeeper/zookeeper-3.4.14/
第三步、進入目錄的conf目錄下復制zoo_sample.cfg文件,為zoo.cfg文件(執行命令: cp zoo_sample.cfg zoo.cfg)。zoo.sample.cfg文件是官方所給的zk配置文件的demo,zk啟動默認加載的是zoo.cfg文件。
重點關注屬性:
clientPort:屬性zk端口
dataDir:數據文件夾目錄
dataLogDir:日志文件夾目錄(不建議數據目錄和日志目錄在zk根目錄下,如果數據量大會造成zk的嚴重的性能問題)。
集群環境中:
1、在dataDir文件夾下創建的myid文件,並寫入標識1-n任意值(與第四步重復)。
2、需在zoo.cfg文件最后添加一下配置
server.1=127.0.0.1:2888:3888 server.2=**
注意:單機只需要server.1即可。1是指在dataDir文件夾下創建的myid文件內容(在dataDir文件中執行:echo "1" >myid)
以下為zk的配置zoo.cfg詳情(參數含義)描述
#間隔都是使用tickTime的倍數來表示的,例如initLimit=10就是tickTime的十倍等於2W毫秒 tickTime=2000 # The number of ticks that can pass between, sending a request and getting an acknowledgement # 心跳最大延遲時間,如果leader在規定的時間內無法獲取到follow的心跳檢測響應,則認為節點已脫離 syncLimit=5 # the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just. example sakes. # 用於存放內存數據庫快照的文件夾,同時用於集群的myid文件也存在這個文件夾里 dataDir=/root/zookeeper-3.4.14/zkData # the port at which the clients will connect,ZK端口 clientPort=2181 # the maximum number of client connections. increase this if you need to handle more clients # 允許連接的客戶端數目,0-不限制,通過 IP 來區分不同的客戶端 maxClientCnxns=60 #將管理機器把事務日志寫入到“ dataLogDir ”所指定的目錄,而不是“ dataDir ”所指定的目錄。避免日志和快照之間的競爭 #dataLogDir=/root/zookeeper-3.4.14/log/data_log # The number of snapshots to retain in dataDir #用於配置zookeeper在自動清理的時候需要保留的快照數據文件數量和對應的事務日志文件,最小值時三,如果比3小,會自動調整為3 #autopurge.snapRetainCount=3 # Purge task interval in hours. Set to "0" to disable auto purge feature #配套snapRetainCount使用,用於配置zk進行歷史文件自動清理的頻率,如果參數配置為0或者小於零,就表示不開啟定時清理功能,默認不開啟 #autopurge.purgeInterval=1 ##集群配置 # The number of ticks that the initial, synchronization phase can take # follow服務器在啟動的過程中會與leader服務器建立鏈接並完成對數據的同步,leader服務器允許follow在initLimit時間內完成,默認時10.集群量增大時 #同步時間變長,有必要適當的調大這個參數, 當超過設置倍數的 tickTime 時間,則連接失敗 initLimit=10 #server.A=B:C:D:其中 A 數字,表示是第幾號服務器. dataDir目錄下必有一個myid文件,里面只存儲A的值,ZK啟動時讀取此文件,與下面列表比較判斷是哪個server # B 是服務器 ip ;C表示與 Leader 服務器交換信息的端口;D 表示的是進行選舉時的通信端口。 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890 # 配置成observer模式 #peerType=observer # 注意觀察者角色的末尾,需要拼接上observer #server.4=10.2.143.38:2886:3886:observer
第四步、創建dataDir文件下的主機標識文件myid,具體方法在第三步有描述。
第五步、在zk的bin目錄下執行 ./zkServer.sh start 啟動zk,默認走的是zoo.cfg配置文件,也可以在啟動命令上指定啟動配置文件./zkServer.sh start zoo.cfg
如果啟動異常看看踩過的坑,防止重復踩。鏈接ZK安裝、ZK配置、ZK集群部署踩過的大坑
驗證是否啟動成功
0、在zk的bin目錄下執行./zkServer.sh status 查看啟動狀態Mode 有兩個值 leader 和follower
1、執行java 的jps命令查詢當前的java進程:QuorumPeerMain 是zk的默認啟動類,我的啟動了三個zk
2、使用 zk的bin目錄下的./zkClient.sh 鏈接登錄zk