【少走弯路】 之 zookeeper安装异常记录汇总

大城市里の小女人 提交于 2020-08-19 12:58:06

玩个zookeeper把所有的坑全部踩了一遍 从Windows到Linux,从配置文件到脚本,从环境变量到日志 BUG之王当之无愧

但是不能白白浪费经历的坑,分享一下给大家填坑

ZooKeeper介绍

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

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集, 提供Java和C的接口。

官网:https://zookeeper.apache.org

进入下载入口:

下载入口

选择任意下载地址:

下载地址

下载版本

下载版本

踩坑

版本建议下载3.5以下的,较为稳定,如果你下载了最新版的,准备跟着我踩坑

下载后直接解压即可

解压

进入到apache-zookeeper-3.5.6\conf文件夹,找到zoo_sample.cfg,复制一份到当前文件夹,重命名为zoo.cfg

为什么修改呢?在zkEnv.cmd中是默认叫zoo的

zoo.修改

至于里面的配置信息,可以根据个人需求修改

附加 zoo.cfg参数说明

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

启动

返回到根目录,进入bin文件夹,双击zkServer.cmd

显示如下,启动成功

启动成功

!!!(解决cmd闪退)

修改zkEnv.cmd脚本

闪退解决

最后一行+ pause

解决闪退

这句话意思是有问题不闪退,方便易观看日志

如果报错信息是这样,描述找不到路径

错误描述

将你修改的zoo.cfg文件中的 \ 用 \ 代替。

新版本安装问题解决

之前说过建议下载3.5以下的版本,如果你执意下载新版本,那我就陪你解决问题

新版本启动失败什么问题?

目前的最新版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。所以同学们,如果下载3.5.5以后的版本的Zookeeper安装包,我们乖乖的下载带有bin标识的包就不会有问题了。 (大白话来说就是:新版本有需要你额外下载的jar包,你跟着下载就好了)

下载好以后,重复上述,继续执行zkServer.cmd

什么鬼,怎么又失败了,不要担心,查看日志文件发现,端口号8080被占用了

查看官方文档发现这是zookeeper的新特性

这是Zookeeper AdminServer,默认使用8080端口,它的配置属性如下:

新特性默认端口

解决:

一种解决办法是我们可以修改在zoo.cfg中修改AdminServer的端口

还有一种就是可以禁用adminServer

最后也可以删除jetty服务

验证是否安装成功

成功验证

根据文件名也很好知道先后顺序 , 先启动服务 再启动客户端 。

客户端启动成功

启动客户端 有欢迎提示说明启动成功

总结本篇解决思路给大家整理一张图片:

总结

最后说明:zookeeper搭建集群以及单台服务器搭建伪集群 还有很多容易踩坑的地方,等我一 一帮大家踩坑后 来记录

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!