我有一个kafka集群,其中代理人是由游牧协调者作为容器分发到数据节点的。
每当我尝试运行容器或将exec执行到容器中时,都会收到如下错误:
root@ip-172-25-1-58:~# docker exec -it 4188ccb7f4a5 bash
rpc error: code = 5 desc = open /var/run/docker/libcontainerd/containerd/4188ccb7f4a5b45eec4d3254ad31db5308ad016982d8595acfe2d1b92f017f2f/0dab278911acc60fb7af41b6e0d8377194785b2853b3ca6da7a2bcf030110522/shim-log.json: no such file or directory
这似乎是一个常见问题,并最终在每个群集节点上发生。在非数据节点上重新启动dockerd很简单,因为除了一些短暂的中断之外,没有任何其他后果。
但是,我担心在我的每个数据节点上(一次一个)这样做会导致Kafka分区负责人被搞砸。
避免,解决或减轻此问题的想法将不胜感激。理想情况下,我希望保持Kafka集群的状态,但也对不满足此要求的解决方案感兴趣。
如果是否有一种方法可以使docker在不重新启动容器的情况下自行修复,也非常感兴趣。
Kafka容器基于confluentinc / cp-kafka:4.1.1
root@ip-172-25-1-58:~# docker version
Client:
Version: 18.06.1-ce
API version: 1.27 (downgraded from 1.38)
Go version: go1.10.4
Git commit: e68fc7a
Built: Fri Jan 25 14:33:54 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.6.2
Git commit: f5ec1e2
Built: Thu Jul 5 23:07:48 2018
OS/Arch: linux/amd64
Experimental: false
答案 0 :(得分:1)
Kafka很好地处理了滚动重启。
在创建时,Kafka还将尝试在整个集群中尽可能多地分布领导者,以确保“领导者平衡”。最初的领导者经纪人也将成为首选的领导者。
默认情况下,卡夫卡将在可能的情况下尝试选举首选领导人。
因此,如果在滚动集群时进行滚动,则领导者可能无法达到理想的平衡,但是一旦滚动完成,Kafka应该重新选举首选的领导者,并且集群应返回到平衡状态。