zookeeper集群安装示例

最近刚好重新安装了zookeeper集群,记个笔记,供参考。

安装步骤记录如下:

环境

zookeeper版本:3.4.6,集群 节点个数 3

1.准备工作

下载linux版本 zookeeper3.4.6(官网:http://zookeeper.apache.org/),复制到所有机器上,tar命令解压

2.修改配置

zoo.cfg配置

定位到zookeeper的conf文件夹下,从zoo_sample.cfg复制一个文件,并重命名为zoo.cfg
修改zoo.cfg的配置项,以下是几个比较重要的配置项
tickTime=2000   tick单位的时间,毫秒为单位,之后的zookeeper配置一般都是以多少多少个tick为单位
syncLimit=5 是指follower与leader的心跳时间为5个tick
dataDir=/data0/zookeeper/bins_datas/zookeeper
dataLogDir=/data0/logs/zookeeper/zookeeper-3.4.6
dataLogDir如果没提供的话使用的则是dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir里是放到的顺序日志(WAL)(注意与程序的log日志不一样,WAL(Write-Ahead-Log) 参考 http://www.wuzesheng.com/?p=2609)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。


clientPort=2181  zookeeper服务的监听端口


maxClientCnxns=60  一个zookeeper节点接受的设置,每个客户端能连接的最大连接数


server.1=node1.zk.service.basic.fdd:2888:3888
server.2=node2.zk.service.basic.fdd:2888:3888
server.3=node3.zk.service.basic.fdd:2888:3888
集群的所有节点配置,注意server.num数字后续会用到,要确保集群中所有节点对应数字唯一
上面的配置中有两个TCP port。后面一个是用于Zookeeper选举用的,而前一个是Leader和Follower或Observer交换数据使用的。


myid配置
dataDir中创建一个myid文件,名字就叫myid,文件的内容与zoo.cfg中的server.num的num保持一致
比如对于zk node1 ,执行echo "1" > dataDir/myid




3.配置完成之后,进入zk bin目录,执行 ./zkServer.sh start 启动zookeeper。




zookeeper log4j日志配置
背景知识:配置根Logger:
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
log4j.additivity.org.apache=false:表示Logger不会在父Logger的appender里输出,默认为true。
level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用中间四个级别。通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。
appenderName:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。
例如:log4j.rootLogger=INFO,A1,B2,C3


1.修改log4j.properties
Appender修改(输出日志到file文件)
更改方式:
1.log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE   ## 将日志修改输出到CONSOLE以及日志文件中
注意此处,不要直接使用变量log4j.rootLogger=${zookeeper.root.logger},然后修改变量${zookeeper.root.logger},该变量会在zkServer.sh脚本中被重写为INFO, CONSOLE,修改变量是不能写日志到log4j配置的文件中的。
ROLLINGFILE日志级别修改
 ROLLINGFILE的日志级别可以修改变量${zookeeper.log.threshold},或者直接log4j.appender.ROLLINGFILE.Threshold=DEBUG修改成你需要的级别


日志路径修改
直接修改${zookeeper.log.dir}也不生效,该变量在zkEnv环境中会被直接覆盖
有两种方式修改
1.修改zkEnv.sh脚本
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi
更新为
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="your own path"
fi
2.log4j.properties 修改如下
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} 更新为
log4j.appender.ROLLINGFILE.File=yourpath/${zookeeper.log.file} 


去掉zookeeper.out文件输出
1.尝试log4j.rootLogger=DEBUG,  ROLLINGFILE
发现虽然zookeeper.out虽然没有输出,但是还是会生成zookeeper.out文件
修改zkServer.sh文件
start)
...
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
更新为
start)
...
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > /dev/null 2>&1 &


启动zookeeper
进入zookeeper的bin目录
./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
查看zookeeper端口以及日志确认zookeeper是否正常启动即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值