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集群安装结束。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 1 Zookeeper概述# ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决...
    七寸知架构阅读 7,331评论 0 101
  • 一、Nginx/keepalived/lvs的介绍 1.nginx 1.1.nginx简介 Nginx是一个自由、...
    Java帮帮阅读 1,292评论 0 5
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 今天是我们的节日,本来是挺高兴的一件事,可仔细想来,心情似乎有点像坐过山车,忽起忽落的! 上午第一节课后,刚坐下,...
    Joanne_fa80阅读 181评论 4 6