1:安裝java 環(huán)境
yum-yinstalljava-1.8.0-openjdk*
2:zookeeper 安裝 (官網(wǎng)http://www.apache.org/dyn/closer.cgi/zookeeper/)
2.1 目錄創(chuàng)建?
自定義文件目錄(根據(jù)實(shí)際情況定義)
mkdir? /opt/zookeeper? ? ? ? ? ? ? ? #項(xiàng)目目錄
mkdir -p /data/zookeeper/zkdata? ? ? #存放快照日志? ? ? ? ? ??
mkdir -p /data/zookeeper/zkdatalog? #存放事物日志
2.2:安裝
這里示例安裝的是3.4.9版本
cd /opt/zookeeper/
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
#解壓軟件
tar-zxvf zookeeper-3.4.14.tar.gz
2.3:創(chuàng)建
cp? /opt/zookeeper/zookeeper-3.4.14/conf/zoo_sample.cfg? /opt/zookeeper/zookeeper-3.4.14/conf/zoo.cfg
修改配置?vi?/opt/zookeeper/zookeeper-3.4.14/conf/zoo.cfg
tickTime=2000? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
initLimit=10
syncLimit=5dataDir=/data/zookeeper/zkdata
dataLogDir=/data/zookeeper/zkdatalog
clientPort=2181
server.1=xx.xx.xx.xx:2888:3888
server.2=xx.xx.xx.xx:2888:3888
server.3=xx.xx.xx.xx:2888:3888
#server.1 這個(gè)1是服務(wù)器的標(biāo)識(shí)也可以是其他的數(shù)字, 表示這個(gè)是第幾號(hào)服務(wù)器,用來(lái)標(biāo)識(shí)服務(wù)器,這個(gè)標(biāo)識(shí)要寫到快照目錄下面myid文件里
#xx.xx.xx.xx為集群里的IP地址,第一個(gè)端口是master和slave之間的通信端口,默認(rèn)是2888,第二個(gè)端口是leader選舉的端口,集群剛啟動(dòng)的時(shí)候選舉或者leader掛掉之后進(jìn)行新的選舉的端口默認(rèn)是3888
主要配置解釋
#tickTime:這個(gè)時(shí)間是作為 Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時(shí)間間隔,也就是每個(gè) tickTime 時(shí)間就會(huì)發(fā)送一個(gè)心跳。#initLimit:這個(gè)配置項(xiàng)是用來(lái)配置 Zookeeper 接受客戶端(這里所說(shuō)的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端,而是 Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器)初始化連接時(shí)最長(zhǎng)能忍受多少個(gè)心跳時(shí)間間隔數(shù)。當(dāng)已經(jīng)超過(guò) 5個(gè)心跳的時(shí)間(也就是 tickTime)長(zhǎng)度后 Zookeeper 服務(wù)器還沒(méi)有收到客戶端的返回信息,那么表明這個(gè)客戶端連接失敗??偟臅r(shí)間長(zhǎng)度就是5*2000=10秒#syncLimit:這個(gè)配置項(xiàng)標(biāo)識(shí) Leader 與Follower 之間發(fā)送消息,請(qǐng)求和應(yīng)答時(shí)間長(zhǎng)度,最長(zhǎng)不能超過(guò)多少個(gè) tickTime 的時(shí)間長(zhǎng)度,總的時(shí)間長(zhǎng)度就是5*2000=10秒#dataDir:快照日志的存儲(chǔ)路徑#dataLogDir:事物日志的存儲(chǔ)路徑,如果不配置這個(gè)那么事物日志會(huì)默認(rèn)存儲(chǔ)到dataDir制定的目錄,這樣會(huì)嚴(yán)重影響zk的性能,當(dāng)zk吞吐量較大的時(shí)候,產(chǎn)生的事物日志、快照日志太多#clientPort:這個(gè)端口就是客戶端連接 Zookeeper 服務(wù)器的端口,Zookeeper 會(huì)監(jiān)聽這個(gè)端口,接受客戶端的訪問(wèn)請(qǐng)求。修改他的端口改大點(diǎn) ,默認(rèn)2181
2.4:創(chuàng)建myid文件 (這里集群實(shí)例安裝三臺(tái))
#server1? ? echo? "1"> /data/zookeeper/zkdata/myid
#server2? ? echo? "2"> /data/zookeeper/zkdata/myid
#server3? ? echo? "3"> /data/zookeeper/zkdata/myid
3:運(yùn)行服務(wù)
cd /opt/zookeeper/zookeeper-3.4.14/bin
./zkServer.sh start | restart? |stop #啟動(dòng)服務(wù)(3臺(tái)都需要操作)
./zkServer.sh? status#檢查服務(wù)器狀態(tài)
4:自定義清理腳本
vi cleanjob.sh?
#!/bin/bash
#snapshot filedir
dataDir=/data/zookeeper/zkdata/version-2
#tran log dir
dataLogDir=/data/zookeeper/zkdatalog/version-2
#Leave 66 files
count=66
count=$[$count+1]
ls-t $dataLogDir/log.* |tail-n +$count |xargsrm-f
ls-t $dataDir/snapshot.* |tail-n +$count |xargsrm-f
#以上這個(gè)腳本定義了刪除對(duì)應(yīng)兩個(gè)目錄中的文件,保留最新的66個(gè)文件,可以將他寫到crontab中,設(shè)置為每天凌晨2點(diǎn)執(zhí)行一次就可以了。
給腳本加上執(zhí)行全選?
chmod+x cleanjob.sh
crontab -e?添加執(zhí)行計(jì)劃
02* * * /opt/zookeeper/zookeeper-3.4.14/cleanjob.sh? #每天凌晨2點(diǎn)執(zhí)行
客戶端
./zkCli.sh -server 127.0.0.1:2181? #連接到zookeeper服務(wù)器?
1. 顯示根目錄下、文件:ls/ 使用ls 命令來(lái)查看當(dāng)前 ZooKeeper 中所包含的內(nèi)容
2. 顯示根目錄下、文件: ls2 / 查看當(dāng)前節(jié)點(diǎn)數(shù)據(jù)并能看到更新次數(shù)等數(shù)據(jù)
3. 創(chuàng)建文件,并設(shè)置初始內(nèi)容: create /zk"test" 創(chuàng)建一個(gè)新的 znode節(jié)點(diǎn)“ zk ”以及與它關(guān)聯(lián)的字符串
4. 獲取文件內(nèi)容: get /zk 確認(rèn) znode 是否包含我們所創(chuàng)建的字符串
5. 修改文件內(nèi)容: set /zk"zkbak" 對(duì) zk 所關(guān)聯(lián)的字符串進(jìn)行設(shè)置
6. 刪除文件: delete /zk 將剛才創(chuàng)建的 znode 刪除
? rmr /abc? #強(qiáng)制刪除節(jié)點(diǎn)
7. 退出客戶端: quit
8. 幫助命令: help
查看kafka的broker信息?
get /brokers/ids/0? get /brokers/topics/test1/partitions/0
其他
Zookper 添加新節(jié)點(diǎn)