Zookeeper运维问题集锦

作者: 扫帚的影子 | 来源:发表于2017-09-12 16:11 被阅读1070次
  • 实际工作中用到Zookeeper集群的地方很多, 也碰到过各种各样的问题, 在这里作个收集整理, 后续会一直补充;
  • 其中很多问题的原因, 解决方案都是google而来, 这里只是作次搬运工;
  • 其实很多问题都跟配置有关, 只怪自己没好好读文档;
  • 问题列表:
    1. 一台 zk 节点重启后始终无法加入到集群中, 无法对外提供服务
    2. zk的log和snapshot占用大量空间
    3. 某台客户端上有的进程可以连接到zk, 有的无法连接
    4. 一台zk服务器无法对外提供服务,报错"Have smaller server identifier, so dropping
    the connection."

    5. zk客户端偶尔无法成功连接到zk server

一台 zk 节点重启后始终无法加入到集群中, 无法对外提供服务
  • 现象: 使用zkCli.sh无法连接成功该zk节点
  • 日志: 首先想到的是将该节点restart, 但问题依旧, 故查看zk的log, 有大量的如下日志
2017-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)
2017-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)
2017-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)
2017-07-18 17:31:15,219 - INFO  [QuorumPeer:/0.0.0.0:2181:FastLeaderElection@697] - Notification time out: 6400
zk的log和snapshot占用大量空间
  • 现象: zk的datadir下的version-2下有大量的log和snapshot文件, 占用大量的磁盘空间
  • 解决: 在配置文件里打开周期性自动清理的开关 autopurge.purgeInterval=1, 当然也可以通过 autopurge.snapRetainCount来设置需要保留的snapshot文件个数,默认是3;
某台客户端上有的进程可以连接到zk, 有的无法连接
  • 现象: 同一台客户端机器上启动多个相同的进程, 有些进程无法连接到zk集群
  • zk服务端日志:
Too many connections from /x.x.x.x - max is x
  • 解决: zk的配置中maxClientCnxns设置过小, 这个参数用来限制单个IP对zk集群的并发访问;
一台zk服务器无法对外提供服务,报错"Have smaller server identifier, so dropping the connection."
  • 现象:使用zkCli.sh无法连接成功该zk节点;
  • 日志: 大量报错:Have smaller server identifier, so dropping the connection.
  • 解决方案: 保持这台有问题zk的现状, 按myid从小到大依次重启其他的zk机器;
  • 原因: zk是需要集群中所有机器两两建立连接的, 其中配置中的3555端口是用来进行选举时机器直接建立通讯的端口, 大id的server才会去连接小id的server,避免连接浪费.如果是最后重启myid最小的实例,该实例将不能加入到集群中, 因为不能和其他集群建立连接
zk客户端偶尔无法成功连接到zk server
  • 现象: 同一台机器来运行的zk客户端, 偶发无法成功连接到zk server
  • 分析:
    1. 当时提供给业务一份sdk, sdk初始化时需要先连接zk, 初始化结束后断开zk的连接,业务将这份sdk用在了由fpm-php 处理的前端web请求的php代码中, 该业务的QPS在6K-8K左右, 相当于zk在处理大量的短连接请求;
    2. 在zk服务端监控下列命令的输出, overflowed和droped的数值在不断增加,说明 listen的accept queue有不断被打满的情况
[root@m1 ~]# netstat -s |grep -i listen
    53828 times the listen queue of a socket overflowed
    53828 SYNs to LISTEN sockets ignored

相关文章

  • Zookeeper运维问题集锦

    实际工作中用到Zookeeper集群的地方很多, 也碰到过各种各样的问题, 在这里作个收集整理, 后续会一直补充;...

  • 【运维】zookeeper安装

    1.下载客户端 2.修改配置文件 1.单机配置 dataDir:指定当前服务器数据存放的路径(目录)clientP...

  • Zookeeper 运维手册

    一 .Zookeeper功能简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google C...

  • 运维部署-Zookeeper

    Zookeeper介绍 Zookeeper 是一个基于 Google Chubby 论文实现的一款解决分布式数据一...

  • oracle 运维集锦

    {}括号中的内容需要根据不同的场景做相应的修改 问题1:如何将用户的数据迁移到新的表空间 确认表信息并修改表信息 ...

  • Kafka相关文集

    Kafka 运维 kafka集群配置 kafka的安装(包括zookeeper) 原理及使用 Kafka之sync...

  • Zookeeper运维小结--CancelledKeyExcep

    项目中用到storm+kafka+zookeeper,在实际应用中zk和kafka常出问题,这里记录下在使用zk过...

  • zookeeper 部署运维指南

    相关约定 事务日志目录: /data0/zookeeper/log数据目录: /data1/zookeeper/d...

  • 2017-12-26 搭建高可用zookeeper

    搭建高可用zookeeper 标签(空格分隔): 运维 Step 1:安装jdk和jre Step 2:搭建zoo...

  • 国贸162班 26号 叶超怡

    1.云计算时代,IT运维迎来转型升级 传统 IT 运维问题日显, IT 运维转型是必然趋势;云计算时代的 IT 运...

网友评论

    本文标题:Zookeeper运维问题集锦

    本文链接:https://www.haomeiwen.com/subject/zrbcsxtx.html