关于一个小白在学习Linux时无法启动zookeeper的那些事儿

zookeeper介绍:

zookeeper,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。不论是大数据领域亦或是其它服务器开发领域,只要是涉及到分布式状态一致性的场景,总有它的身影存在。

过程简介

我跟着课程视频和课件文档去部署zookeeper,这是我学习Linux部署的第一个集群化软件,以下是简要过程。

1、下载zookeeper安装包并解压安装:

http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz

2、修改配置文件:zoo_sample.cfg和myid

zoo_sample.cfg配置文件修改如下:

tickTime=2000
dataDir=/export/server/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888

myid文件内写入1

3、分发配置后本体:

scp -r apache-zookeeper-3.5.9 ip2:`pwd`/

scp -r apache-zookeeper-3.5.9 ip3:`pwd`/

4、在ip2和ip3上修改myid标识文件:内容分别为2和3

5、使用安装目录中bin目录中的可执行bash脚本文件zkServer.sh启动zookeeper

./bin/zkServer.sh start

6、使用jps命令检查QuorumPeerMain进程是否启动


遇到的问题:在第5步启动zookeeper时无法启动

解决过程:(序号为解法)

起初我没看报错信息(解决问题的关键就是看报错信息!),从上到下排除可能出错的地方,最有可能的就是配置文件的地方出问题,于是我去配置文件的地方按照样板仔细对照是不是那个地方书写错误(配置文件出问题的几率最大 特别是手打时 手一块 眼一花就打错),

1、别说,还真是我配置文件时把根目录/按成旁边的英文句号.,当时我就把这改过来(当然 还不能忘了分发过去的文件也要修改!)

改了后重试去启动,仍然不得行,我就反复检查配置文件哪里出了问题,检查了好多遍,重试了好多遍,实在不行,我就在里面到处逛,看是哪个文件或目录有问题

2、然后我就发现了zoo.cfg文件里的dataDir对应目录下的zookeeper_server.pid文件,我有印象这个在启动前是没有的(确实是启动后产生的缓存垃圾文件 删掉应该会有用),然后我感觉是这个的问题,有点小激动,删了后重试,哦豁!还是不行……

最后没法了,搞烦了,使用面向scdn方法(浏览器查询)

3、我找到一个解法,可能是防火墙未关闭,导致zookeeper默认使用的2181端口未对外开放,于是使用systemctl status firewalld查看防火墙状态,哦豁!是关闭的,还是不行……但是我又看到个帖说把防火墙打开又关闭然后重启虚拟机又可以,荒诞但是可能有用(荒诞指开启又关闭 但重启确实能解决80%的问题 另外20%就是用户的问题),哦豁!还是不行……

systemctl status firewalld

4、同帖有第二个解法:既然防火墙关闭,端口放开,如果是端口用不了的问题,就可能是被占用了,使用netstat -anp | grep 2181去查找占用的进程及其PID(进程号),然后用kill结束进程

netstat -anp | grep 2181
kill -9 PID

然鹅,我压根找不到2181端口,但是我已经坚信是端口的问题,觉得可能是隐藏起来了,还去找让所有端口的显示的命令,但是方向错了,根本不可能有结果,那时已经给我搞到晚上十二点半了,于是我开摆了,睡觉

5、后面第二天一直搞到下午,我实在没法了,全部相关文件三光光,跟着课程文档步骤重装,配置文件时也是怕出错,然后直接复制过来(记住这个复制),哦豁!还是不行……

6、蚌埠住了,只得请教一个老师,TA教我上面的一些方法去试试,我试了还是不得行,最后TA让我给TA看报错信息(我才翻译了下 是配置问题),然后让我去检查配置文件中是否有多余空格,然后我就知道问题了。就是这个空格,这个可恶的、会被复制过来的空格!!!

(代码千万条,安全第一条,copy不规范,debug两行泪)

在此提醒大家复制时 千万要清楚复制的是个啥 复制个bug过来那就得不偿失了

以下是我通过网页信息查找总结出zookeeper启动不了可能出现的问题:

1、检查配置文件是否配置正确 若没有配置文件那个名字要先把这个名字改过去(文件本质是一样的)
原名:/export/server/zookeeper/conf/zoo_sample.cfg
配置文件名:/export/server/zookeeper/conf/zoo.cfg
改名:mv /export/server/zookeeper/conf/zoo_sample.cfg /export/server/zookeeper/conf/zoo.cfg

需配置的内容:
tickTime=2000
dataDir=/export/server/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

server.1=IP:2888:3888
server.2=IP:2888:3888
server.3=IP:2888:3888

2、关闭防火墙
systemctl stop firewalld

3、删除运行过的缓存文件
把zoo.cfg文件里的dataDir对应目录下的version-2文件夹和zookeeper_server.pid文件删除掉

4、检查zookeeper默认使用的端口2181是否开放(未被其他进程占用)
netstat -anp | grep 2181
若被占用了 使用kill关闭那个占用该端口的进程
kill -9 PID

5、以上问题都解决不了 就重启开机 按步骤仔细重装zookeeper(手打配置文件)

各位若有什么补充的欢迎留言!(大佬求带~)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值