概述
1. 出现 zookeeper server is not running
问题排查
解决方案
在zoo.cfg文件中加入下面配置
maxClientCnxns=60
standaloneEnabled=false
admin.enableServer=true
2. 出现zookeeper找不到jdk问题
Error: JAVA_HOME is not set and java could not be found in PATH.
首先这个问题是在本机上部署出现的,如果用docker部署的话,容器内是会自动创建java环境的
本机上需要自己配置java环境(个人建议,java环境手动装,不用apt-get装,便于查找java环境路径)
问题排查
zookeeper是在java环境中运行的,这里是没有指定jdk路径
解决方案
如图就行,如果不用这个脚本进行执行,记住一定要配置jdk路径
在zkEnv.sh文件中加上图中箭头指向的这一句,这个是本机jdk地址,这个要视情况而定
3. docker搭建zookeeper集群网络不同
问题排查
-
用docker 搭建zookeeper方便管理,这里遇到几个问题。通过network_mode: "host"时,这里创建不了容器
-
不指定network_mode: "host"时,能够创建容器,但是各个节点之间不能通信,出现can not open channel
-
关于其它的错误,比如zookeeper server not running等,其实就是配置文件问题,检查拼写是够出错
-
关于工具zkWeb,我自己创建镜像,用docker部署时,增加部署成功的zookeeper节点,出现连接失败,但是将zkWeb改用本机运行,就是可以的。从这里分析出,docker的网络是有问题的,这里直接影响了zookeeper集群节点通信。
解决方案
关于docker 部署网络不同问题,我这里没有很好的解决方案。然后我选了在本机上部署,这里是成功的。
建议不要用docker部署zookeeper集群,我部署没成功,主要是网络不通问题。本机搭建还是很容易的
4. 搭建kafka集群,就有一个节点启动不了
问题排查
遇到一个很奇怪的问题,我搭建好多了三个节点的zookeeper,在搭建kafka集群的时候,分属在三台服务器上,但是其中两个节点运行时没问题的,但就是有一个节点启动不了。
解决方案
目前我也正在排查
这个问题其实是我解决了下面jdk的问题时无意间解决的。
kafka要指定jdk路径,我下面配置jdk的时候,路径配置错误了。我也不知道为啥JAVA_HOME的路径和系统真正使用的jdk路径竟然不一样。
问题是我系统中有连个jdk,但是系统没有用我指定路径的,就是在/etc/profile中制定路径的那个jdk,竟然用了我没有感知到的某个路径下的jdk.
如果遇到这个问题,可以使用 echo $JAVA_HOME查看一下真正的路径是哪个,如果不是自己配置的,就删除这个路径下的jdk,配置成自己的。
5. 在配置java环境时,更好jdk,然后所有命令都找不到了路径
问题排查
这个问题比较特殊,不算在zookeeper之内,既然在这里遇到了,那就在这里记录一下
问题就是
the command could not be loated because '/usr/bin' is not included
问题产生的原因就是,我改动环境变量,环境变量弄错。
解决方案
1. 编辑该文件
/usr/bin/nano ~/.bashrc
2. 在文件末尾加入下面代码
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: /usr/local/games"
3. 重启服务器,然后就可以了
解决方案2
上面的方法治标不治本,当刷新/etc/profile的时候,还是会出现这个问题
我的问题是:在我配置jdk的时候,退出刷新jdk是出现的。
我尝试/etc/profile中的jdk配置删除,然后重新启动,就可以了。
通过echo $JAVA_HOME发现路径竟然不是我配置的,相当于我配置的和这个冲突了,那找到这个路径的文件,将jdk删除,然后配置自己的jdk,在更新/etc/profile中JAVA_HOME的路径就可以了
6 关于修改了配置文件,重启zookeeper时会失败
问题描述
服务可能没有启动起来
问题排查
如果之前是能够启动的,知识修改类配置文件总的某些内容,就好定位了,查看配置文件的东西是否配置正确,如果正确就是其它问题,可能有残留数据等
问题解决方案
- 我是把我挂载出来的 /dataDir文件夹下的version-2 和zookeeper_server.pid文件都删除,只留下myid文件
- 将挂载出来的dataLogDir文件夹下的version-2删除
重启就好了
7. 关于kafka运行问题
问题描述
之前zookeeper和kafka集群都搭建完成,也能正常运行,然后我更换了zookeeper配置,两个集群也能正常运行,但是呢?过了一段时间,kafka集群自动死掉,我重启也不能解决。
问题排查
对于这个问题有几个猜想
-
我更改的zookeeper配置文件是按照企业级部署,其中的配置对于机器的要求较高。
-
另外问题,就是不关zookeeper集群问题,是kafka日志文件log空间不足等
问题解决
我是平经验搞的,之前搭建zookeeper集群的时候,也会应为有脏数据而启动不了。
我尝试吧kafka挂载出来的log中的内容删除掉。然后重启就可以了。
这个方法治标不治本,生产环境下肯定不运行删除数据的,这个问题还要待解决。先把问题记录下来,等后面研究玩zookeeper的详细机制,应该能够找到问题所在。
-----------------------------一路踩坑,一走一个坑---------------------------------
总结
这个搭建zookeeper和kafka集群,说真的,真的是一步一个坑,我一开始想用docker来管理的,但是docker网络的问题我一直没解决,然后在本机上部署,有了前面使用docker部署踩的坑,这次很容易就搞定了。
一定要注意拼写正确性,不然找bug的时候,花了两个小时找到的问题所在,竟然是某一处配置的拼写出问题了,难受啊。
如果会用宝塔的可以用这个,不然关于配置同步,还是很麻烦的。我是自己写脚本同步文件。
参考资料
有几篇自己觉得不错的参考博客
-
本机上搭建kafka和zookeeper集群
-
本机上搭建kafka和zookeeper集群
上面两篇结合起来看吧,第一篇用了宝塔来同步配置文件,如果不会的可以忽略,直接自己同步,写脚本,还是拷贝都可以。
-
多服务器docker-compose搭建zookeeper和kafka集群
-
一台服务器docker-compose搭建zookeeper和kafka集群
上面这篇文章是如果没有三台服务器,可以用docker来模拟搭建集群
最后
以上就是沉静指甲油为你收集整理的zookeeper和kafka集群搭建-错误集合1. 出现 zookeeper server is not running2. 出现zookeeper找不到jdk问题3. docker搭建zookeeper集群网络不同6 关于修改了配置文件,重启zookeeper时会失败7. 关于kafka运行问题总结的全部内容,希望文章能够帮你解决zookeeper和kafka集群搭建-错误集合1. 出现 zookeeper server is not running2. 出现zookeeper找不到jdk问题3. docker搭建zookeeper集群网络不同6 关于修改了配置文件,重启zookeeper时会失败7. 关于kafka运行问题总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复