zookeeper 部署运维指南

相关约定

事务日志目录: /data0/zookeeper/log
数据目录: /data1/zookeeper/data
工作日志目录: / data0/zookeeper/logs

一、下载安装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
  • 根据上述指定的myid值 echo MYID > myid
* 例如10.13.56.164这台机器应 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

依次登录集群中各机器执行如下命令:
  • bin/zkServer.sh start &
    一般情况下,集群中有超过半数的实例成功启动后,zookeeper服务便可用

五、常用运维

由于zookeeper遇到未知错误后,会抛出异常并终止进程,所以为了减少运维工作,需要提供一种检测&重启的机制,在此介绍一种我使用的daemontools工具
  • daemontools(http://cr.yp.to/daemontools.html)是一个管理UNIX下服务的工具集。supervise监视一个服务。它启动一个服务、当服务停掉时它会重起服务。
    
  • 安装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
  • 监控Zookeeper
* 在/data0/service下,新建文件夹zookeeper,新建run文件:
* cd /data0/service
* mkdir zookeeper
* cd zookeeper
* vim run
* chmod 755 run
* run内容:

#!/bin/bash exec 2>&1 exec /usr/local/zookeeper/bin/zkServer.sh start

  • 运行:
* supervise /data0/service/zookeeper

//或者可以用nohup以后台方式运行。如下:
* nohup supervise /data0/service/zookeeper &

如果出现
supervise: fatal: unable to acquire /service/zookeeper/supervise/lock: temporary failure
快速rm /data0/service/zookeeper/supervise 重新执行 supervise /service/zookeeper 即可

  • 验证监控zookeeper是否成功:
    kill zookeeper进程,查看zookeeper的进程是否自动重启
    原文作者:openex
    原文地址: https://www.jianshu.com/p/e3b4bd81dacf
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞