记录一次线上Zookeeper故障
2018.02.06
部门引入了ClickHouse作为数据分析仓库,并且使用了复制表ReplicatedMergeTree
,两个集群复制表的数据同步依赖Zookeeper,上线前就对Zookeeper的性能产生过顾虑,但是线上运行一段时间后,未发现异常。直到最近几周,故障频现,本文主要记录故障处理过程以及故障处理的一些思考和坑。
第一次故障
故障定位
第一次故障十分突然,Kafka、Mesos和Yarn都收到了影响。因为对Zookeeper的信任,因此排查耗费了一些时间。通过重启Kafka,发现连接Zookeeper超时才定位到ZK出现问题。
故障处理
查看zookeeper.log,日志中大量如下报错
2018-01-27 06:39:43,728 [myid:5] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@362] - Exception causing close of session 0x0 due to java.io.IOException: ZooKeeperServer not running
重启Zookeeper但是无法恢复,日志中依然是上述not running报错
根据这个报错baidu、google,没有找到解决办法,看到有人猜测有脏数据写入,更改数据存储目录可以解决。当时对Zookeeper原理不大清楚,以及对元数据不够重视ÿ