Огляд:
Використайте наступну команду, щоб перевірити статус роботи Kafka. Наступним чином:
kafka.service Завантажено: завантажено (/usr/lib/systemd/system/kafka.service; Включений; Пресет продавця: вимкнено) Активно: невдано (Результат: код виходу) з середи 2021-09-22 14:43:11 CST; 1 година 43 хвилини тому Процес: 7363 ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties (code=exited, status=1/FAILURE) Основний PID: 7363 (код=вийшов, статус=1/ВІДМОВИ)
22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,295] WARN [ReplicaManager broker=1] Припиняю подачу реплік у dir /tmp/kafka-logs ( kafka.server.ReplicaManager) 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,298] WARNING [GroupCoordinator 1]: Не вдалося написати порожні метадані для групи KqBatchAna: Це неправильно узгоджуючий. (kafka.co... upCoordinator) 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,303] ІНФО [ReplicaFetcherManager на брокері 1] Видалено fetcher для розділів HashSet(__consumer_offsets-22, __ consumer_offsets-30, ...-8, __consumer 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,304] ІНФО [ReplicaAlterLogDirsManager на брокері 1] Видалено fetcher для розділів HashSet(__consumer_ Зсуви-22, __consumer_offsets... FSETS-8, __con 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,378] WARN [ReplicaManager broker=1] Брокер 1 зупинив fetcher для розділів __consumer_offsets-22,__ consumer_offsets-30,__consumer_... FSETS-21,__con 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,379] WARN Припинення подачі логів у dir /tmp/kafka-logs (kafka.log.LogManager) 22 вересня 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,386] ПОМИЛКА Брокер вимкнення через те, що всі редактори логів у /tmp/kafka-logs вийшли з ладу (kafka.log.LogManager) 22 вересня 14:43:11 devops02 systemd[1]: kafka.service: main process exited, code=exited, status=1/FAILURE 22 вересня 14:43:11 devops02 systemd[1]: Unit kafka.service увійшов у стан відмови. 22 вересня 14:43:11 devops02 systemd[1]: kafka.service не вдалося.
Hint: Some lines were ellipsized, use -l to show in full.
Перейдіть до каталогу журналів Kafka /usr/local/kafka/logs, щоб переглянути server.log log файли, наступним чином:
[2021-09-22 14:43:11,286] ПОМИЛКА Помилка під час прокату сегмента log для __consumer_offsets-8 у dir /tmp/kafka-logs (kafka.server.LogDirFailureChannel)
java.io.FileNotFoundException: /tmp/kafka-logs/__consumer_offsets-8/00000000000000000000.index (No such file or directory) на java.io.RandomAccessFile.open0(Native Method) на java.io.RandomAccessFile.open(RandomAccessFile.java:316) на java.io.RandomAccessFile. <init>(RandomAccessFile.java:243) на kafka.log.AbstractIndex.$anonfun$resize$1(AbstractIndex.scala:182) на kafka.log.AbstractIndex.resize(AbstractIndex.scala:175) на kafka.log.AbstractIndex.$anonfun$trimToValidSize$1(AbstractIndex.scala:241) на kafka.log.AbstractIndex.trimToValidSize(AbstractIndex.scala:241) на kafka.log.LogSegment.onBecomeInactiveSegment(LogSegment.scala:507) на kafka.log.Log.$anonfun$roll$8(Log.scala:2037) на kafka.log.Log.$anonfun$roll$8$adapted(Log.scala:2037) У Scala. Option.foreach(Option.scala:437) на kafka.log.Log.$anonfun$roll$2(Log.scala:2037) на kafka.log.Log.roll(Log.scala:2453) на kafka.log.Log.maybeRoll(Log.scala:1988) на kafka.log.Log.append(Log.scala:1263) на kafka.log.Log.appendAsLeader(Log.scala:1112) at kafka.cluster.Partition.$anonfun$appendRecordsToLeader$1(Partition.scala:1069) at kafka.cluster.Partition.appendRecordsToLeader(Partition.scala:1057) at kafka.server.ReplicaManager.$anonfun$appendToLocalLog$6(ReplicaManager.scala:958) на scala.collection.Iterator$$anon$9.next(Iterator.scala:575) на scala.collection.mutable.Growable.addAll(Growable.scala:62) на scala.collection.mutable.Growable.addAll$(Growable.scala:57) за адресою scala.collection.immutable.MapBuilderImpl.addAll(Map.scala:692) за адресою scala.collection.immutable.Map$.from(Map.scala:643) за адресою scala.collection.immutable.Map$.from(Map.scala:173) на scala.collection.MapOps.map(Map.scala:266) на scala.collection.MapOps.map$(Map.scala:266) на scala.collection.AbstractMap.map(Map.scala:372) at kafka.server.ReplicaManager.appendToLocalLog(ReplicaManager.scala:946) at kafka.server.ReplicaManager.appendRecords(ReplicaManager.scala:616) на kafka.coordinator.group.GroupMetadataManager.storeGroup(GroupMetadataManager.scala:325) на kafka.coordinator.group.GroupCoordinator.$anonfun$onCompleteJoin$1(GroupCoordinator.scala:1206) за адресою kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) на kafka.coordinator.group.GroupCoordinator.onCompleteJoin(GroupCoordinator.scala:1178) на kafka.coordinator.group.DelayedJoin.onComplete(DelayedJoin.scala:43) на kafka.server.DelayedOperation.forceComplete(DelayedOperation.scala:72) на kafka.coordinator.group.DelayedJoin.$anonfun$tryComplete$1(DelayedJoin.scala:38) на kafka.coordinator.group.GroupCoordinator.$anonfun$tryCompleteJoin$1(GroupCoordinator.scala:1172) at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17) за адресою kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) на kafka.coordinator.group.GroupCoordinator.tryCompleteJoin(GroupCoordinator.scala:1171) на kafka.coordinator.group.DelayedJoin.tryComplete(DelayedJoin.scala:38) на kafka.server.DelayedOperation.safeTryCompleteOrElse(DelayedOperation.scala:110) на kafka.server.DelayedOperationPurgatory.tryCompleteElseWatch(DelayedOperation.scala:234) на kafka.coordinator.group.GroupCoordinator.prepareRebalance(GroupCoordinator.scala:1144) на kafka.coordinator.group.GroupCoordinator.$anonfun$maybePrepareRebalance$1(GroupCoordinator.scala:1118) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) за адресою kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) на kafka.coordinator.group.GroupCoordinator.maybePrepareRebalance(GroupCoordinator.scala:1117) на kafka.coordinator.group.GroupCoordinator.removeMemberAndUpdateGroup(GroupCoordinator.scala:1156) на kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$3(GroupCoordinator.scala:498) на scala.collection.immutable.List.map(List.scala:246) на kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$2(GroupCoordinator.scala:470) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) за адресою kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) на kafka.coordinator.group.GroupCoordinator.handleLeaveGroup(GroupCoordinator.scala:467) at kafka.server.KafkaApis.handleLeaveGroupRequest(KafkaApis.scala:1659) at kafka.server.KafkaApis.handle(KafkaApis.scala:180) at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74) на java.lang.Thread.run(Thread.java:748) Причини помилок:Linux регулярно очищає файли в директорії /tmp, каталог файлів Kafka зберігається за замовчуванням/tmp/kafka-logsКаталог, що призводить до регулярного очищення, що призводить до аномальної роботи програми.
У CentOS 7 існує 3 системні сервіси, пов'язані з очищенням:
systemd-tmpfiles-setup.service :Create Volatile Files and Directories systemd-tmpfiles-setup-dev.service:Створити статичні вузли пристроїв у /dev systemd-tmpfiles-clean.service :Очищення тимчасових каталогів Існує також 3 пов'язані профілі, а саме:
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles.d/*.conf Використовуйте наступну команду, щоб переглянути журнали, пов'язані з tmpfiles:
Каталог TMP у/usr/lib/tmpfiles.d/tmp.confКонфігурація файлу показана на наступному рисунку:
# Цей файл є частиною systemd.
# # systemd — це вільне програмне забезпечення; Ви можете його розповсюджувати та/або модифікувати # відповідно до умов GNU Lesser General Public License, опублікованої # Фонд вільного програмного забезпечення; або версії 2.1 Ліцензії, або # (за вашим вибором) будь-яка пізніша версія.
# Див. tmpfiles.d(5) для деталей
# Очищати tmp каталоги окремо, щоб їх було легше перекривати v /tmp 1777 корінь 10d v /var/tmp 1777 корінь 30d
# Виключити маунтточки простору назв, створені за допомогою PrivateTmp=так x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
Рішення 1
Модифікувати конфігураційний файл Kafka /config/server.properties, щоб змінити конфігурацію log.dirs, наприклад:
Рішення 2
Додайте каталог виключень і відредагуйте файл: /usr/lib/tmpfiles.d/tmp.conf
(Кінець)
|