Есть ли более глубокий запрос или конечная точка, которую я могу нажать для Кафки, чтобы сказать мне, что все заняты разделами, она присоединилась к кластеру и может общаться со всеми перечисленными брокерами и узлами Zk - и что в логах нет исключений Java?
Возможно, есть одна ключевая запись в журнале, которую я могу найти? Что-то вроде [GroupCoordinator ####]: Assignment received from leader for group X
? Но есть и несколько таких сообщений.
Подробнее
В настоящее время мы используем автоматизацию Chef для ящиков с состоянием и Kubernetes для наших контейнерных версий - все с рядом проверок работоспособности TCP-портов при запуске, когда порты доступны, перейдите на следующий узел.
Однако мы видели, что узлы готовы к своему порту - задолго до того, как они закончили догонять или перемещать разделы. Это проблема, потому что когда у нас установлен фактор реплики 3 и, скажем, 3 узла подряд перезапускаются, эти разделы могут быть потеряны, если данные будут получены в течение времени. Или другие партиалы, такие как только 1 из 3 доступных реплик, так что узел начинает реплицироваться на другие узлы - в то время как другие возвращаются (время этого кажется совершенно случайным, поскольку некоторые разделы используются гораздо чаще, чем другие). Или множество других условий, которые препятствовали его исправности, таких как исключения Java из-за отсутствия связи с Zk, истечения срока действия SSL-сертификатов, проблемы с сборщиком и т. Д.
Например, сегодня я отслеживаю журналы, когда все 50+ ReplicaFetcherThreads отключаются перед переходом на следующий узел. В этой попсе время составляет около 2-5 минут. Тем не менее, в другой поп, который может занять до 20 минут!
Конфигурация
Мы запускаем различные конфигурации, но большинство имеют следующие настройки (с различной настройкой):
controlled.shutdown.enable=true
controlled.shutdown.max.retries=3
controlled.shutdown.retry.backup.ms=5000
default.replication.factor=3
group.max.session.timeout.ms=60000
group.min.session.timeout.ms=10000
num.partitions=5
num.replica.fetchers=4
session.timeout.ms=30000
Kafka 0.10.2.1 на данный момент, так как сложно обновлять количество серверов и подписчиков, которые у нас есть (более 200+ через 1/2 десятка PoP). Однако, если кто-то может показать, что в более новых версиях есть какой-либо тип конечных точек работоспособности или состояния или способ запроса состояния сервера и вызова, занятого всеми разделами, мы предпримем усилия для обновления до этой версии.
Внешние инструменты?
Мы также запускаем Kafka Manager и Burrow в большинстве попсов. Возможно, у них есть API, который я могу запросить у них для полного состояния работоспособности определенного узла?
Бонус: отслеживание недостаточной репликации тем
Возможно, также проверьте темы / разделы, которые недостаточно реплицированы с помощью этих инструментов? И если пороговое значение падает слишком низко, сделайте паузу, пока счетчик реплик не восстановится, прежде чем продолжить повторный запуск.