У меня есть кластер kafka с брокерами, распространяемыми в виде контейнеров на узлы данных с помощью оркестратора кочевников.
Всякий раз, когда я пытаюсь запустить контейнер или запустить его в контейнер, я получаю сообщение об ошибке, подобное следующему:
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, но меня также интересуют решения, которые не отвечают этому требованию.
Также очень интересно, есть ли способ заставить докер выровняться без перезапуска containerd.
Контейнер 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
@MickaelMaison На данный момент лидеры разделов равномерно распределены по заданной теме среди назначенных им брокеров. По моему ограниченному пониманию, сбой брокера приведет к тому, что лидерство в разделах, для которых он был лидером, будет перераспределено между оставшимися брокерами. По крайней мере, не будет ли это означать, что последний перезапущенный брокер не будет лидером каких-либо разделов? Единственный способ, который я могу решить, - это экспортировать назначения разделов для каждой темы, а затем запустить его после завершения последовательного перезапуска.


Kafka очень хорошо справляется с непрерывной перезагрузкой.
При создании Kafka также попытается максимально распределить лидеров по кластеру, чтобы обеспечить «баланс лидеров». Также предпочтительным лидером становится брокер, который является первоначальным лидером.
По умолчанию Kafka будет пытаться выбирать предпочтительных лидеров, когда это возможно.
Таким образом, если вы сбрасываете свой кластер во время его свертывания, лидеры могут быть не идеально сбалансированы, но после завершения свертывания Kafka должен переизбрать предпочтительных лидеров, и кластер должен вернуться в состояние баланса.
Можете ли вы уточнить, что вы подразумеваете под «приведет к тому, что лидеры раздела Кафки будут облажались»? Kafka очень хорошо справляется с чередующимися перезапусками