设为首页 收藏本站
查看: 1030|回复: 0

[经验分享] zookeeper运维问题总结

[复制链接]

尚未签到

发表于 2019-1-8 08:42:45 | 显示全部楼层 |阅读模式
  工作中遇到以下问题:
1、一台zk节点失联后,重启一直无法加入zk集群中,导致无法对外提供服务
2、zk的log和快照占大量空间
3、客户端连接有失败有成功
4、zk客户端偶尔会有失败连接
5、报错:smaller server identifier,so dropping
  以上问题生产环境中经常会遇到

1. zk无法加入zk集群
  现象: 使用zkCli.sh无法连接成功该zk节点
日志: 首先想到的是将该节点restart, 但问题依旧, 故查看zk的log, 有大量的如下日志

2018-07-18 17:31:12,015 - INFO  [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 1 (n.leader), 77309411648 (n.zxid), 1 (n.round), LOOKING (n.state), 1 (n.sid), LOOKING (my state)
2018-07-18 17:31:12,016 - INFO  [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 3 (n.leader), 73014444480 (n.zxid), 831 (n.round), LEADING (n.state), 3 (n.sid), LOOKING (my state)
2018-07-18 17:31:12,017 - INFO  [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 3 (n.leader), 77309411648 (n.zxid), 832 (n.round), FOLLOWING (n.state), 2 (n.sid), LOOKING (my state)
2018-07-18 17:31:15,219 - INFO  [QuorumPeer:/0.0.0.0:2181:FastLeaderElection@697] - Notification time out: 6400
  解决办法:
这个是在3.3.4版本中的一个bug,在新版本中3.5已经修复了,建议使用最新版本
如果你使用的是这个版本,那你只能通过重启leader来解决了

2. zk的log和快照占大量空间
  现象:zk的datadir下的version-2下有很多快照,日志目录下有大日志文件(单个文件太大),有些东西是没有用的,所以建议定期清除
解决办法:在zk的配置文件中添加自动清理日志和快照的开关autopurge.purgeInterval=1,当然也可以中过个年autopurge.snapRetainCount来设置需要保留的snapshot文件个数,默认是3个。

3. 客户端连接有失败有成功
  现象:客户端的连接有的可以连,有的连接失败
日志:
Too many connection from 127.0.0.1 -max is 60
解决办法:
更改zk配置的连接数maxClientCnxns 加大这个值,默认是60,不建议设置的太大,防止DDOS×××

4. zk客户端偶尔会有失败连接
  现象:有时客户端偶尔会连不上zk
原因:
  这种情况比较复杂,跟代码及逻辑有关系了,以及当前的业务量有关系,比如zk处理大量的短连接请求时,SYN QUEUE的accept queue有时候被打满,这就尴尬了,直接导致连接失败。
详细可以查看这篇文章
https://blog.csdn.net/varyall/article/details/79681562
解决办法:
syn队列的大小是系统用来限制网络的高并发的,具体参数如下:
net.ipv4.tcp_max_syn_backlog和net.core.somaxconn,这两值设置为一样即可
如果太小了,会导致这种问题,需要按量提高,不要太高了。
生产环境中最终的解决办法是最好降低和zk的短连接数量,这样就基本不会出这种问题。

5. 报错:smaller server identifier,so dropping
  现象:使用客户端连接没法连上,查看zk日志,发现很多报错报错:smaller server identifier,so dropping
解决办法:
按zk的myid的大小从小到大一次重启zk服务器,首先保证有问题的zk不重启。
分析原因:zk是需要集群中所有机器两两建立连接的, 其中配置中的3555端口是用来进行选举时机器直接建立通讯的端口, 大id的server才会去连接小id的server,避免连接浪费.如果是最后重启myid最小的实例,该实例将不能加入到集群中, 因为不能和其他集群建立连接




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660561-1-1.html 上篇帖子: zookeeper的命令使用 下篇帖子: 【ZooKeeper Notes 14】数据模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表