Zookeeper 搭建

本贴最后更新于 2513 天前,其中的信息可能已经物是人非

安装和配置

写在开头,4-5 是可选的,没有配置也是可以的。用单机测试成功~

1. 下载、解压

下载地址:zookeeper-3.4.8.tar.gz

 # 可以直接使用wget下载,也可以在其它地方下载完拷贝过来。这里解压到了`/usr/local`下 wget http://apache.fayea.com/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz tar -zxf zookeeper-3.4.8.tar.gz

2.修改配置文件(集群配置)

 # 将原有的zoo_sample.cfg拷贝一份,取名叫`zoo.cfg`cp conf/zoo_sample.cfg conf/zoo.cfg# vim修改配置文件 cd zookeeper-3.4.8 vim conf/zoo.cfg

这里是集群配置:

  1. 修改了 dataDir
  2. 集群:增加了最下边的集群配置 server.N(如果不需要集群,不执行下面的步骤 3.
  3. 集群:需要在集群中每台机器上都这样配置。我这里是两台机器 192.168.192.128192.168.192.129
// the directory where the snapshot is stored.// do not use /tmp for storage, /tmp here is just example sakes.dataDir=/usr/local/zookeeper-3.4.8/data// There are two port numbers nnnnn.// The first followers use to connect to the leader, // and the second is for leader election.server.1=192.168.192.128:2555:3555 //192.168.192.128 这里的ip换成相应的服务器的ipserver.2=192.168.192.129:2555:3555

3.配置 myid

在 data 目录下(zoo.cfg 中的 dataDir 目录)新建一个叫 myid 的文件,文件内容对应 zoo.cfg 中的 server.xx
vim myid,操作的是第一台机器,server.xx 是 1,所以这里文件内容是:

1

4.可选:配置 JVM 参数

首先,查看 /bin/zkServer.shstart 方法可以看到:定义了变量 $JVMFLAGS 让我们设置 JVM 参数。
其次,可以在 /bin/zkEnv.sh 中看到:

if [ -f "$ZOOCFGDIR/java.env" ]then    . "$ZOOCFGDIR/java.env"fi

就是说 JVM 参数最好配置在 /conf/java.env 中。
所以,我们改这里。不过这个文件不存在,先创建一个:vim java.env,代码如下(这里我是需要改小一点):

JVMFLAGS="-Xmx300M -Xms300M"

5.可选:配置 zookeeper 日志输出格式、目录

首先,在 /conf/log4j.properties 中可以看到:

log4j.rootLogger=${zookeeper.root.logger}# Add ROLLINGFILE to rootLogger to get log file outputlog4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppenderlog4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}log4j.appender.ROLLINGFILE.MaxFileSize=${zookeeper.log.maxfilesize}log4j.appender.ROLLINGFILE.MaxBackupIndex=${zookeeper.log.maxbackupindex}log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

还有其它配置没有全部贴出来,这里贴出来的是可以滚动存储的日志配置,可以看到 zookeeper 已经给我们准备好了,我们只需要设置相关变量就可以了:

  • ${zookeeper.root.logger}:级别 + 日志记录器
  • ${zookeeper.log.dir}/${zookeeper.log.file}:路径和日志文件名

其次,可以在 /bin/zkServer.sh 中看到:

if [ ! -w "$ZOO_LOG_DIR" ] ; thenmkdir -p "$ZOO_LOG_DIR"fiZOO_LOG_FILE=zookeeper-$USER-server-$HOSTNAME.log_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper-$USER-server-$HOSTNAME.out"case $1 instart)    echo  -n "Starting zookeeper ... "if [ -f "$ZOOPIDFILE" ]; thenif kill -0 `cat "$ZOOPIDFILE"` > /dev/null 2>&1; thenecho $command already running as process `cat "$ZOOPIDFILE"`.         exit 1fifi    nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \    "-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \    -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &   …
  1. -Dzookeeper.log.dir=${ZOO_LOG_DIR}
  2. -Dzookeeper.log.file=${ZOO_LOG_FILE} 这个上面那个值就行,不改了
  3. -Dzookeeper.root.logger=${ZOO_LOG4J_PROP}

所以,我们需要给上面这 2 个 ${***} 赋值即可。还是在 /bin/zkEnv.sh,修改如下:

if [ "x${ZOO_LOG_DIR}" = "x" ]then    ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs"    // 改为自己需要的目录    ZOO_LOG_DIR="/data/logs/zookeeper"fiif [ "x${ZOO_LOG4J_PROP}" = "x" ]then    ZOO_LOG4J_PROP="INFO,CONSOLE"    // 改为自己需要的    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"fi

6.分别在所有机器上启动,命令如下

[root@localhost zookeeper-3.4.8]# bin/zkServer.sh start

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED  

# 以上,启动成功!

7.验证状态

[root@localhost zookeeper-3.4.8]#  ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader

[root@localhost zookeeper-3.4.8]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: follower

如果有问题,会大概显示如下:

[root@localhost zookeeper-3.4.8]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 14 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...