Zookeeper拒绝来自旧客户端的Kafka连接

时间:2017-08-21 20:19:52

标签: apache-kafka kubernetes apache-zookeeper

我在GCE上使用Kubernetes进行了群集配置,我有一个用于zookeeper和其他用于Kafka的pod;它正常工作,直到Zookeeper崩溃并重新启动,它开始拒绝来自kafka pod的连接:

  

拒绝客户端/10.4.4.58:52260的会话请求   zxid 0x1962630

完整的拒绝日志在这里:

2017-08-21 20:05:32,013 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted socket connection from /10.4.4.58:52260
2017-08-21 20:05:32,013 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@882] - Connection request from old client /10.4.4.58:52260; will be dropped if server is in r-o mode
2017-08-21 20:05:32,013 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@901] - Refusing session request for client /10.4.4.58:52260 as it has seen zxid 0x1962630 our last zxid is 0xab client must try another server
2017-08-21 20:05:32,013 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1008] - Closed socket connection for client /10.4.4.58:52260 (no session established for client)

3 个答案:

答案 0 :(得分:4)

因为kafka维护了一个zookeeper会话,它会记住它看到的最后一个zxid​​。因此,当动物园管理员服务下降并再次出现时,zk的zxid从较小的值开始。而ZKserver认为kafka已经看到了更大的zxid,所以它拒绝它。

尝试重新启动kafka。

答案 1 :(得分:0)

出于记录,我遇到了这个问题,我所有的卡夫卡都没电了。
但是,我的卡夫卡经理仍然在听着动物园管理员的讲课。关闭它可以解决问题。

答案 2 :(得分:0)

与@GuangshengZuo ...的回答有关。步骤

  1. 停止所有残留的Zookeeper实例-zookeeper-server-stop.bat
  2. 建立一个新的动物园管理员-zookeeper-server-start.bat .\config\zookeeper.properties 可以做到