zookeeper
下載
download http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
安裝
解壓
# tar -zxf zookeeper-3.4.12.tar.gz
移動
# mv zookeeper-3.4.6 /usr/local/zookeeper
配置
#進入zookeeper目錄
cd /usr/local/zookeeper/
#新建日志文件夾
$ mkdir -p /var/zookeeper/data
$ mkdir -p /var/zookeeper/datalogs
$ mkdir -p /var/zookeeper/logs
準備配置文件
$ cd /conf
$ mp zoo_sample.cfg zoo.cfg
$ vi /conf/zoo.cfg
我的配置:
tickTime=2000
dataDir=/var/zookeeper/data
dataLogDir=/var/zookeeper/datalogs
clientPort=2181
autopurge.snapRetainCount=10
autopurge.purgeInterval=48
配置參數(shù)的含義:
- ClientPort:zk服務(wù)器監(jiān)聽的端口誊册,客戶端通過該端口建立連接,每臺zk服務(wù)器也允許設(shè)置為不同的值。默認配置文件設(shè)定的是2181伦吠,除非你有什么難言之隱否則不需要修改
- dataDir:zk用于保存內(nèi)存數(shù)據(jù)庫的快照的目錄馏予,除非設(shè)置了dataLogDir晾蜘,否則這個目錄也用來保存更新數(shù)據(jù)庫的事務(wù)日志缓升。在生產(chǎn)環(huán)境使用的zk集群咬最,強烈建議設(shè)置dataLogDir吠各,讓dataDir只存放快照臀突,因為寫快照的開銷很低,這樣dataDir就可以和其他日志目錄的掛載點放在一起贾漏。
- dataLogDir: zk的事務(wù)日志路徑
tickTime:前面已提到過候学,zk使用的基本時間單位是tick,這個參數(shù)用于配置一個tick的長度纵散,單位為毫秒梳码,默認配置文件設(shè)定的是3000,除非你有什么難言之隱否則不需要修改 - autopurge.snapRetainCount:3.4.0及之后版本zk提供了自動清理快照文件和事務(wù)日志文件的功能伍掀,該參數(shù)指定了保留文件的個數(shù)掰茶,默認為3,這里我設(shè)置為10.
- autopurge.purgeInterval:和上一個參數(shù)配合使用硕盹,設(shè)置自動清理的頻率符匾,單位為小時,默認為0表示不清理瘩例,建議設(shè)為6或12之類的值啊胶。這里我設(shè)置了48,意思是48小時自動清理一次垛贤。
其他高級設(shè)置:
配置日志
關(guān)于zookeeper的日志:
zookeeper有三種日志:快照日志焰坪,事務(wù)日志,log4j日志
zoo.cfg中的dataDir是快照日志聘惦;datalogDir是事務(wù)日志某饰;
log4j配置了集群的服務(wù)器日志:該日志的配置地址在conf/目錄下的log4j.properties文件中呐萌,該文件中有一個配置項為“zookeeper.log.dir=.”,表示log4j日志文件在與執(zhí)行程序(zkServer.sh)在同一目錄下灵寺。當(dāng)執(zhí)行zkServer.sh時民效,在該文件夾下會產(chǎn)生zookeeper.out日志文件。
zookeeper默認將事務(wù)日志文件和快照日志文件都存儲在dataDir對應(yīng)的目錄下炬守。建議將事務(wù)日志(dataLogDir)與快照日志(dataLog)單獨配置牧嫉,因為當(dāng)zookeeper集群進行頻繁的數(shù)據(jù)讀寫操作是,會產(chǎn)生大量的事務(wù)日志信息减途,將兩類日志分開存儲會提高系統(tǒng)性能酣藻,而且,可以允許將兩類日志存在在不同的存儲介質(zhì)上鳍置,利用磁盤順序?qū)懙奶匦粤删纾岣呷罩緦懭胨俣取?/p>
進入conf,修改log4j.properties
$ vi conf/log4j.properties
#將以下配置:
zookeeper.root.logger=INFO, CONSOLE
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
#修改為:
zookeeper.root.logger=INFO, ROLLINGFILE
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
進入 zookeeper/bin目錄,修改zkEnv.sh
$ vi /bin/zkEnv.sh
## 將以下配置:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
## 修改為:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/var/local/zookeeper/logs"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
經(jīng)過配置zoo.cfg,log4j.properties,zkEnv.sh后税产,我的zookeeper的幾個日志目錄如下:
數(shù)據(jù)快照日志
- /zookeeper/data
事務(wù)日志
- /zookeeper/datalogs
服務(wù)器日志
- /zookeeper/logs
配置集群(缺)
運行zookeeper
$ /usr/local/zookeeper/bin/zkServer.sh start
# 遇到zookeeper_server.pid沒有寫權(quán)限怕轿,給這個目錄加權(quán)限
$ sudo chown :kfk:kfk /var/zookeeper/data
使用zookeeper
$ cd zookeeper/bin
$ zookeeper-shell localhost:2181 #啟動zookeeper-shell
zookeeper-shell 命令
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch] #查看
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch] #獲得路徑下的內(nèi)容
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
為當(dāng)前用戶配置alias
cd ~
vi .bashrc
# alias zookeeper_start='/usr/local/zookeeper/bin/zkServer.sh start'
# alias zookeeper_stop='/usr/local/zookeeper/bin/zkServer.sh stop'
source .bashrc