k8s zk节点重启不能加入集群问题分析

一、问题描述

服务与中间件都部署在容器内,中间件重起服务后连接不上,需要重启中间件与服务,才可以正常访问。

zk3个节点,myid最小的节点启动后不能加加入集群。

现像一

JMX enabled by default

Using config: /data/zookeeper-3.4.3/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

现象二

2019-11-19 09:23:48,014 [myid:1] - INFO  [QuorumPeer[myid=1]/0.0.0.0:2181:FastLeaderElection@764] - Notification time out: 400

2019-11-19 09:23:48,014 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 1 (n.leader), 0x0 (n.zxid), 0x6 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)

2019-11-19 09:23:48,016 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 3 (n.leader), 0x0 (n.zxid), 0x5 (n.round), LEADING (n.state), 3 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)

2019-11-19 09:23:48,016 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 2 (n.leader), 0x0 (n.zxid), 0x4 (n.round), LEADING (n.state), 2 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)

二、复现步骤

1、挂掉NFS服务节点【未复现】

验证结果:node上的zk、redis、服务可以正常恢复。

2、stop hab服务,kill zk进程,重启hab服务【已复现】

前置条件:hab在A节点

验证结果:

1、A节点的zk服务启动异常:Error contacting service. It is probably not running(myid正常),B、C节点的zk、redis、服务节点启动正常。

2、日志大量报错:Have smaller server identifier, so dropping the connection.

三、问题分析

1、根据复现获得的异常日志,经排查是zookeeper低版本bug。

2、项目A zookeeper镜像版本3.4.3,此问题官方修复版本在3.4.4和3.5.0(点击查看详见官方文档)。

四、解决方案

4.1 临时解决方法

1、进入zookeeper部署的容器,

2、删除/data/zookeeper/data下所有内容

3、kill所有节点 zookeeper进程,让zookeeper重新启动。

4.2 升级zookeeper版本

将zookeeper版本从3.4.3 升级到3.4.12验证正常。

5 、结论

在容器环境下zookeeper版本必须>=3.4.4

你可能感兴趣的:(k8s zk节点重启不能加入集群问题分析)