相關(guān)約定
事務(wù)日志目錄: /data0/zookeeper/log
數(shù)據(jù)目錄: /data1/zookeeper/data
工作日志目錄: / data0/zookeeper/logs
一、下載安裝zookeeper
- sudo su
- cd /usr/local/
- wget http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
- tar zxvf zookeeper-3.4.8.tar.gz
- ln -s zookeeper-3.4.8 zookeeper
二、主要配置
- mkdir /data0/zookeeper/{log,logs}
- mkdir /data1/zookeeper/data
* cd /usr/local/zookeeper- cp conf/zoo_sample.cfg conf/zoo.cfg
- vim conf/zoo.cfg
- 修改添加
* dataDir=/data1/zookeeper/data
* dataLogDir=/data0/zookeeper/log
- 追加如下3條
* autopurge.purgeInterval=2
* autopurge.snapRetainCount=24
* zk.connectiontimeout.ms=100000
- 配置server列表,格式為server.MYID=IP:2888:3888
* 例如:
server.1=10.13.56.164:2888:3888
server.2=10.13.56.165:2888:3888
server.3=10.13.56.166:2888:3888
- 根據(jù)上述指定的myid值 echo MYID > myid
* 例如10.13.56.164這臺機器應(yīng) echo 1 > /data1/zookeeper/data/myid
三史翘、工作日志存儲方式修改
- vim conf/log4j.properties 并修改如下:
* zookeeper.root.logger = INFO, ROLLINGFILE
* zookeeper.log.dir=/data0/zookeeper/logs
* log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
- vim bin/zkEnv.sh 并修改如下:
* ZOO_LOG_DIR="/data0/zookeeper/logs"
* ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
四手趣、啟動zookeeper
依次登錄集群中各機器執(zhí)行如下命令:
- bin/zkServer.sh start &
一般情況下原杂,集群中有超過半數(shù)的實例成功啟動后拾给,zookeeper服務(wù)便可用
五、常用運維
由于zookeeper遇到未知錯誤后郁竟,會拋出異常并終止進程,所以為了減少運維工作由境,需要提供一種檢測&重啟的機制棚亩,在此介紹一種我使用的daemontools工具
daemontools(http://cr.yp.to/daemontools.html)是一個管理UNIX下服務(wù)的工具集。supervise監(jiān)視一個服務(wù)藻肄。它啟動一個服務(wù)蔑舞、當(dāng)服務(wù)停掉時它會重起服務(wù)。
- 安裝daemontools
- mkdir /tmp/package
- chmod 755 /tmp/package
- cd /tmp/package
- wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
- tar zxvf daemontools-0.76.tar.gz
- cd ./admin/daemontools-0.76
- vim ./src/error.h 找到:extern int errno; 改成:#include <errno.h>
- ./package/install 需要root
- 監(jiān)控Zookeeper
* 在/data0/service下嘹屯,新建文件夾zookeeper攻询,新建run文件:
* cd /data0/service
* mkdir zookeeper
* cd zookeeper
* vim run
* chmod 755 run
* run內(nèi)容:
#!/bin/bash exec 2>&1 exec /usr/local/zookeeper/bin/zkServer.sh start
- 運行:
* supervise /data0/service/zookeeper
//或者可以用nohup以后臺方式運行。如下:
* nohup supervise /data0/service/zookeeper &
如果出現(xiàn)
supervise: fatal: unable to acquire /service/zookeeper/supervise/lock: temporary failure
快速rm /data0/service/zookeeper/supervise 重新執(zhí)行 supervise /service/zookeeper 即可
- 驗證監(jiān)控zookeeper是否成功:
kill zookeeper進程州弟,查看zookeeper的進程是否自動重啟