Нужна стратегия для сохранения лидеров разделов при последовательном перезапуске Kafka

У меня есть кластер 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

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

Mickael Maison 01.03.2019 19:41

@MickaelMaison На данный момент лидеры разделов равномерно распределены по заданной теме среди назначенных им брокеров. По моему ограниченному пониманию, сбой брокера приведет к тому, что лидерство в разделах, для которых он был лидером, будет перераспределено между оставшимися брокерами. По крайней мере, не будет ли это означать, что последний перезапущенный брокер не будет лидером каких-либо разделов? Единственный способ, который я могу решить, - это экспортировать назначения разделов для каждой темы, а затем запустить его после завершения последовательного перезапуска.

SourceSimian 02.03.2019 04:17
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
2
128
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Kafka очень хорошо справляется с непрерывной перезагрузкой.

При создании Kafka также попытается максимально распределить лидеров по кластеру, чтобы обеспечить «баланс лидеров». Также предпочтительным лидером становится брокер, который является первоначальным лидером.

По умолчанию Kafka будет пытаться выбирать предпочтительных лидеров, когда это возможно.

Таким образом, если вы сбрасываете свой кластер во время его свертывания, лидеры могут быть не идеально сбалансированы, но после завершения свертывания Kafka должен переизбрать предпочтительных лидеров, и кластер должен вернуться в состояние баланса.

Другие вопросы по теме