zookeeper安装手册

本文档基于zookeeper-3.4.10

环境要求

  • zookeeper-3.4.10,可从zookeeper官方网站下载介质
  • jdk7或者更高版本
  • 高性能磁盘,磁盘容量推荐64G及以上
  • zookeeper节点个数要求,在允许n个主机宕机的情况下,集群节点数量需要为2n+1个

安装步骤

1. 创建zookeeper home

mkdir zookeeper
cd zookeeper 
mkdir data dataLog

注意

  • data是zookeeper用来存储内存快照的路径
  • dataLog是zookeeper用来记录事务日志的路径
  • data和dataLog的创建位置没有强制要求,如果集群的环境区分应用安装盘符和日式/数据存放盘符,则data和dataLog需要建立在可以存放数据的专用盘符

下文中将 zookeeper/ 称之为zookeeper的home,或者$ZK_HOME

2. 解压介质

mv zookeeper-3.4.10.tar.gz zookeeper/
tar -xzvf zookeeper-3.4.10.tar.gz

3. 配置server id

进入到data的路径下,执行

cd data
echo '1' > myid
cat myid

注意事项

  • myid是zookeeper集群中每个zookeeper节点的身份标识,不可重复,依次为1、2、3……
  • zookeeper的myid中有且仅有一行数据,及该节点的id序号,数字前后不可有空格,上下不可有空行
  • zookeeper集群的安装配置中,几乎只有myid是不同的,其他配置均相同

在整个集群安装配置中,除了myid的内容不一样,其他地方配置几乎一模一样,因此后续安装步骤仅以一个节点为例,不再赘述。之所以说几乎,是因为上一节中提到的data和dataLog的路径可能不同,但一般生产上是相同的。

4. 配置zoo.cfg

进入zookeeper的配置文件地址,创建并修改配置

cd $ZK_HOME
cd conf
cp zoo_sample.cfg  zoo.cfg
vim zoo.cfg

修改配置如下

# The number of milliseconds of each tick
# zk的时间单元,其它的配置都是该配置的倍数,默认配置即可
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
# follower初始连接到leader并完成同步的时间上限,默认配置即可
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# 
syncLimit=5
# follower与leader的同步时间上限
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# zookeeper的内存快照存储路径,需要修改为实际创建的data的路径
dataDir=/……/data
# zookeeper的事务日志存储路径,需要修改为实际创建的dataLog的路径
dataLogDir=/……/dataLog
# the port at which the clients will connect
# 对外服务端口,根据需求修改
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
# 最大连接数,默认是60,如无特殊需求,无需配置
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
# 保留的快照数量和事务日志数量,超过该数量将自动清理,根据磁盘空间和需求配置,默认是3
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
# 清理时间间隔,单位是小时
autopurge.purgeInterval=1
# 集群成员配置,用来让zookeeper知道集群中都有谁
# server.x中的是zookeeper的节点id,其id值和ip地址需要和每个节点的myid里的内容对应
# ip之后的两个端口是内部通信和选举用的端口,配置成可用端口即可
server.1=172.21.22.161:2888:3888
server.2=172.21.22.162:2888:3888
server.3=172.21.22.163:2888:3888

这里需要注意的就是

server.1=172.21.22.161:2888:3888
server.2=172.21.22.162:2888:3888
server.3=172.21.22.163:2888:3888

其id值要和之前建立的data里的myid中内容一致,同时ip要互相对应。

5. 配置log4j

zookeeper默认的日志输出在zookeeper.out中,不利于查看和管理,生产上建议对日志进行配置。

创建logs路径

cd $ZK_HOME
mkdir logs

logs建立在哪里没有要求,如果对磁盘有规划,则根据需求建到合适的地方

配置log4j

# Console修改为ROLLINGFILE
zookeeper.root.logger=INFO, ROLLINGFILE
zookeeper.console.threshold=INFO
# 此处修改为上面建立的logs绝对路径(需要替换)
zookeeper.log.dir=/……/logs
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=DEBUG
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log

# log4j后续配置无需改动,此处省略

配置zkEnv.sh

cd $ZK_HOME/bin
cp zkEnv.sh zkEnv.sh.bak
vim zkEnv.sh

主要是修改两处,一处是加入ZOO_LOG_DIR的赋值

ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
#注意这里需要替换为实际的logs的绝对路径需要替换)
ZOO_LOG_DIR="/……/logs"

另一处是

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi

修改为

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi

6. 启动zookeeper

依次登录到每个zookeeper节点,启动zookeeper进程

cd $ZK_HOME
bin/zkServer.sh start

控制台显示

ZooKeeper JMX enabled by default
Using config: /home/czdb/ghshen/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

接着进行状态检查,

检查进程

执行

jps

检查是zk进程,显示为

22757 QuorumPeerMain

QuorumPeerMain是进程名,22757是进程id,可能不同

检查status

bin/zkServer.sh status

显示

ZooKeeper JMX enabled by default
Using config: /home/ds_dfpas/ghshen/usr/zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader

集群中仅有一台显示为leader,其他节点执行该命令,显示为

ZooKeeper JMX enabled by default
Using config: /home/ds_dfpas/ghshen/usr/zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: follower

检查日志

cd logs
tail -f zookeeper.log

观察日志是否有持续报错,如果有,分析原因,解决后重启。

检查客户端可用性

利用zookeeper自带的客户端,手动连接到zookeeper,执行简单的查询

cd $ZK_HOME
# host和port替换为实际的地址
bin/zkCli.sh -server host:port

连接上zookeeper,执行ls

[zk: localhost:2188(CONNECTED) 1] ls / 
[zookeeper]
[zk: localhost:2188(CONNECTED) 2] 

显示结果为包含[zookeeper]即可。

类似的,检查所有的zookeeper节点,无误即可。

至此,zookeeper集群安装结束。

你可能感兴趣的:(zookeeper安装手册)