安装步骤

本安装教程,采用zookeeper 3.6.1

  1. 装java
  2. 下载zk包,分发到各个机器
  3. 确定或创建一个zookeeper的数据存放路径,并在该路径下创建一个myid文件,其中设置当前zookeeper节点的编号,编号范围1~255。整个zookeeper集群唯一
  4. 在数据文件夹创建一个initialize文件,初始化集群时使用,启动后,集群会自动删除该文件。后续重启集群,不需要该文件

initialize文件

3.6.0的zk,在启动后,如果发现自己的data 目录是空的,则不会参与集群选举,知道该节点连上一个master, 然后从其同步过完整的数据后,才具有选举权 ,之所以这么做的原因是。万一谁不小心删了数据文件,这个时候重启该节点,如果运行该节点参与选举,要是该节点被选成master, 会导致怎个集群数据丢失。

但第一次启动集群,大家确实都没数据,如果都没有选举权的话,第一次选举就不会进行,所以要在data 目录下创建一个initialize文件,暂时屏蔽调3.6.0的数据丢失保护功能。集群启动,正常选举后,该文件会被删除,进入数据丢失的保护机制

配置文件

一般可直接配置zk发型包conf下的zoo.cfg文件

tickTime=2000
dataDir=/var/lib/zookeeper/data
dataLogDir=/var/lib/zookeeper/log #默认dataLogDir和dataDir在一起,最好将其分开,以提高zk性能。因为同时写数据和日志到一个磁盘,磁盘会有些瓶颈限制
autopurge.purgeInterval=1 #开启定期清理功能,以免数据和日志文件过大
autopurge.snapRetainCount=1000
clientPort=2181 #zk集群对外提供服务的端口
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888 #"server.1"中的1,即是该机器在数据文件夹中配置的myid。 zoo1,zoo2,zoo3是zk集群的节点hostname或ip。 2888是follower用来跟leader通信的端口,3888是用来选举leader的端口
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

一些安装异常

异常1

2015-07-02 21:06:01,682 [myid:] - ERROR [main:QuorumPeerMain@86] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: Master.Hadoop:3888
at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.<init>(QuorumPeer.java:205)
at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(QuorumMaj.java:89)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:401)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:425)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:291)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:126)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Invalid config, exiting abnormally

这种错误是因为配置文件,端口号后面有空格,去掉空格就可以了

影响性能的点

数据盘独立

磁盘的读写性能会严重影响到zk的性能。所以尽量将zk的数据存储目录防止带单独的磁盘。有条件的话,将其日志文件路径也放置到单独磁盘。同其它程序共用一个磁盘,当磁盘读写性能出现瓶颈时,zk的性能会急速下降

内存不要超机器限制

当zk申请的内存超过操作系统的空闲内存,那么操作系统会启用swap机制,即利用硬盘做为交换内存。这也将严重影响zk的性能。所以如果系统有4g内存,那么zk申请内存最好小于等于3G。

两种启动方式

使用自带脚本

在bin下 ./zkServer.sh start

该zkServer.sh会首先执行zkEnv.sh

zkEnv.sh中有整个zk执行相关环境变量设置,从zkEnv.sh代码中可以看到

if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
. "${ZOOCFGDIR}/zookeeper-env.sh"
fi if [ "x$ZOOCFG" = "x" ]
then
ZOOCFG="zoo.cfg"
fi ZOOCFG="$ZOOCFGDIR/$ZOOCFG" if [ -f "$ZOOCFGDIR/java.env" ]
then
. "$ZOOCFGDIR/java.env"
fi

它回去zk配置目录,也即CONF中找zookeeper-env.sh,和java.env。所以我们可以将相关的环境变量设置到这两个文件中(没有就创建)

.env文件其实跟shell差不多,启动定义的环境变量格式为key=value,最终生效,通过执行该文件,或者source 它都可以。

从zkEnv.sh中还可以得出的信息是,要设置zk server端的内存占用大小,是通过ZK_SERVER_HEAP来,因为zkEnv.sh有如下代码

# default heap for zookeeper server
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1000}"
export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"

当然其它一些-D的java 参数, 可以设置到这个变量上SERVER_JVMFLAGS

使用java 命令

上述脚本实际上最终入口,是执行了zookeeper的jar。我们当然也可以直接通过java命令启动zookeeper的jar,并加装指定配置

 java -cp zookeeper.jar:lib/*:conf org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.conf

参考资料

https://zookeeper.apache.org/doc/r3.6.1/zookeeperAdmin.html#sc_zkMulitServerSetup

zookeeper安装部署步骤的更多相关文章

  1. Storm集群安装部署步骤【详细版】

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...

  2. ZooKeeper 安装部署及hello world(转)

    ZooKeeper  安装部署及hello world 先给一堆学习文档,方便以后查看官网文档地址大全:OverView(概述)http://zookeeper.apache.org/doc/r3.4 ...

  3. ZooKeeper 安装部署及hello world

    ZooKeeper  安装部署及hello world 先给一堆学习文档,方便以后查看官网文档地址大全: OverView(概述)http://zookeeper.apache.org/doc/r3. ...

  4. Storm集群安装部署步骤

    本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...

  5. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  6. Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  7. Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu 14.04.4 LTS ...

  8. Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  9. Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...

随机推荐

  1. 【ElasticSearch学习】之一图读懂文档索引全过程

    ES索引过程详解: 1.客户端发送索引请求. 客户端向ES节点发送索引请求,以RestClient客户端发起请求为例: ES提供了Java High Level REST Client,用户可以通过R ...

  2. 写代码?程序猿?你不能不懂的八大排序算法的Python实现

    信息获取后通常需要进行处理,处理后的信息其目的是便于人们的应用.信息处理方法有多种,通常由数据的排序,查找,插入,删除等操作.本章介绍几种简单的数据排序算法和高效的排序算法. 本章主要涉及到的知识点有 ...

  3. muduo网络库源码学习————条件变量

    muduo里的CountDownLatch类实际上是对条件变量condition进行的封装,既可以用于所有子线程等待主线程发起 "起跑" ,也可以用于主线程等待子线程初始化完毕才开 ...

  4. centos7 安装高版本svn

    一.安装高版本svn 1.创建一个新的yum库文件,vim /etc/yum.repos.d/wandisco-svn.repo 内容如下 [WandiscoSVN] name=Wandisco SV ...

  5. Linux之《荒岛余生》(一)准备篇

    xin片之争,已经暴露了中国xin的问题,我等码农束手无策:而在操作系统方面,成果也是乏善可陈:现如今酷炫的Web监控工具,让很多研发丧失了真正处理问题的能力. 越接近底层,就越接近真相,在计算机的世 ...

  6. NSNotification,NSNotificationCenter的使用、iOS中五种对象间传值的方式

    学习内容 NSNitification与NotificationCenter(通知与通知中心) 通知的使用 [[NSNotificationCenter defaultCenter]addObserv ...

  7. 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift

    近十年来,信息技术领域在经历一场技术大变革,这场变革正将我们由传统IT架构及其所支撑的臃肿应用系统时代,迁移至云原生架构及其所支撑的敏捷应用系统时代.在这场变革中,新技术的出现.更新和淘汰之迅速,以及 ...

  8. Day_13【IO流】扩展案例2_统计键盘录入字符在指定项目文件中出现的次数

    分析以下需求,并用代码实现 键盘录入一个字符(以字符串的形式录入) 判断当前字符在info3.txt当中是否存在 如果不存在, 给出提示 如果存在, 请统计出该字符出现的次数 Info3.txt内容如 ...

  9. 用VirtualBox代替VMWare安装Ubuntu系统图文教程总结

    文章目录 为什么使用VirtualBox,而不是VMWare? 图文教程 安装VirtualBox 下载Ubuntu镜像 新建虚拟机 安装Ubuntu系统 总结 为什么使用VirtualBox,而不是 ...

  10. Mysql常用sql语句(13)- having 过滤分组结果集

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...