Recensione:
Usa il seguente comando per controllare lo stato di esecuzione di Kafka. Come segue:
kafka.service Caricato: caricato (/usr/lib/systemd/system/kafka.service; Abilitato; Preset vendor: disabilitato) Attivo: fallito (Risultato: codice di uscita) da mered 2021-09-22 14:43:11 CST; 1h 43 min fa Processo: 7363 ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties (code=exited, status=1/FAILURE) PID principale: 7363 (codice=uscito, stato=1/FALLIMENTO)
22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,295] WARN [ReplicaManager broker=1] Smetto di servire repliche in dir /tmp/kafka-logs ( kafka.server.ReplicaManager) 22 settembre 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,298] WARN [GroupCoordinator 1]: Non è riuscito a scrivere metadati vuoti per il gruppo KqBatchAna: Questo non è il corretto coordinatore. (kafka.co... upCoordinator) 22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,303] INFO [ReplicaFetcherManager sul broker 1] Rimosso il recupero per le partizioni HashSet(__consumer_offsets-22, __ consumer_offsets-30, ...-8, __consumer 22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,304] INFO [ReplicaAlterLogDirsManager sul broker 1] Rimosso il recupero per le partizioni HashSet(__consumer_ offset-22, __consumer_offsets... fsets-8, __con 22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,378] WARN [ReplicaManager broker=1] Il broker 1 ha fermato il recupero per le partizioni __consumer_offsets-22,__ consumer_offsets-30.__consumer_... fsets-21,__con 22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,379] WARN Cessazione di fornire i log in dir/tmp/kafka-logs (kafka.log.LogManager) 22 Set 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,386] ERRORE Cleardown broker perché tutti i dirigenti dei log in /tmp/kafka-logs sono falliti (kafka.log.LogManager) Set 22 14:43:11 devops02 systemd[1]: kafka.service: main process exited, code=exited, status=1/FAILURE 22 settembre 14:43:11 devops02 systemd[1]: Unità kafka.service è entrata in stato di guasto. 22 settembre 14:43:11 devops02 systemd[1]: kafka.service fallito.
Hint: Some lines were ellipsized, use -l to show in full.
Vai alla directory di log di Kafka /usr/local/kafka/logs per visualizzare i file di log server.log, come segue:
[2021-09-22 14:43:11,286] ERRORE Errore durante la registrazione del segmento di log per __consumer_offsets-8 in dir/tmp/kafka-logs (kafka.server.LogDirFailureChannel)
java.io.FileNotFoundException: /tmp/kafka-logs/__consumer_offsets-8/00000000000000000000.index (No such file or directory) at java.io.RandomAccessFile.open0(Metodo nativo) su java.io.RandomAccessFile.open(RandomAccessFile.java:316) su java.io.RandomAccessFile. <init>(RandomAccessFile.java:243) a kafka.log.AbstractIndex.$anonfun$resize$1(AbstractIndex.scala:182) a kafka.log.AbstractIndex.resize(AbstractIndex.scala:175) a kafka.log.AbstractIndex.$anonfun$trimToValidSize$1(AbstractIndex.scala:241) a kafka.log.AbstractIndex.trimToValidSize(AbstractIndex.scala:241) a kafka.log.LogSegment.onBecomeInactiveSegment(LogSegment.scala:507) a kafka.log.Log.$anonfun$roll$8(Log.scala:2037) a kafka.log.Log.$anonfun$roll$8$adapted(Log.scala:2037) Alla Scala. Option.foreach(Option.scala:437) a kafka.log.Log.$anonfun$roll$2(Log.scala:2037) a kafka.log.Log.roll(Log.scala:2453) a kafka.log.Log.maybeRoll(Log.scala:1988) a kafka.log.Log.append(Log.scala:1263) a kafka.log.Log.appendAsLeader(Log.scala:1112) su kafka.cluster.Partition.$anonfun$appendRecordsToLeader$1(Partition.scala:1069) su kafka.cluster.Partition.appendRecordsToLeader(Partition.scala:1057) at kafka.server.ReplicaManager.$anonfun$appendToLocalLog$6(ReplicaManager.scala:958) su scala.collection.Iterator$$anon$9.next(Iterator.scala:575) su scala.collection.mutable.Growable.addAll(Growable.scala:62) su scala.collection.mutable.Growable.addAll$(Growable.scala:57) su scala.collection.immutable.MapBuilderImpl.addAll(Map.scala:692) su scala.collection.immutable.Map$.from(Map.scala:643) su scala.collection.immutable.Map$.from(Map.scala:173) su scala.collection.MapOps.map(Map.scala:266) su scala.collection.MapOps.map$(Map.scala:266) su scala.collection.AbstractMap.map(Map.scala:372) at kafka.server.ReplicaManager.appendToLocalLog(ReplicaManager.scala:946) su kafka.server.ReplicaManager.appendRecords(ReplicaManager.scala:616) su kafka.coordinator.group.GroupMetadataManager.storeGroup(GroupMetadataManager.scala:325) su kafka.coordinator.group.GroupCoordinator.$anonfun$onCompleteJoin$1(GroupCoordinator.scala:1206) su kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) su kafka.coordinator.group.GroupCoordinator.onCompleteJoin(GroupCoordinator.scala:1178) su kafka.coordinator.group.DelayedJoin.onComplete(DelayedJoin.scala:43) su kafka.server.DelayedOperation.forceComplete(DelayedOperation.scala:72) su kafka.coordinator.group.DelayedJoin.$anonfun$tryComplete$1(DelayedJoin.scala:38) su kafka.coordinator.group.GroupCoordinator.$anonfun$tryCompleteJoin$1(GroupCoordinator.scala:1172) at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17) su kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) su kafka.coordinator.group.GroupCoordinator.tryCompleteJoin(GroupCoordinator.scala:1171) su kafka.coordinator.group.DelayedJoin.tryComplete(DelayedJoin.scala:38) su kafka.server.DelayedOperation.safeTryCompleteOrElse(DelayedOperation.scala:110) su kafka.server.DelayedOperationPurgatory.tryCompleteElseWatch(DelayedOperation.scala:234) su kafka.coordinator.group.GroupCoordinator.prepareRebalance(GroupCoordinator.scala:1144) su kafka.coordinator.group.GroupCoordinator.$anonfun$maybePrepareRebalance$1(GroupCoordinator.scala:118) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) su kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) su kafka.coordinator.group.GroupCoordinator.maybePrepareRebalance(GroupCoordinator.scala:1117) su kafka.coordinator.group.GroupCoordinator.removeMemberAndUpdateGroup(GroupCoordinator.scala:1156) su kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$3(GroupCoordinator.scala:498) su scala.collection.immutable.List.map(List.scala:246) su kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$2(GroupCoordinator.scala:470) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) su kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) su 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) at java.lang.Thread.run(Thread.java:748) Cause dell'errore:Linux pulisce regolarmente i file nella cartella /tmp, la cartella file kafka è memorizzata di default/tmp/kafka-logsil che comportava una pulizia regolare della directory, causando un funzionamento anomalo del programma.
Sotto CentOS 7, ci sono 3 servizi di sistema relativi alla pulizia:
systemd-tmpfiles-setup.service :Crea file e directory volatili systemd-tmpfiles-setup-dev.service:Crea nodi statici di dispositivi in /dev systemd-tmpfiles-clean.service :Pulizia delle directory temporanee Ci sono anche 3 profili correlati, come segue:
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles.d/*.conf Usa il seguente comando per visualizzare i log relativi ai tmpfile:
Directorio tmp in/usr/lib/tmpfiles.d/tmp.confLa configurazione del file è la mostrata nella figura seguente:
# Questo file fa parte di systemd.
# # SystemD è software libero; Puoi ridistribuirlo e/o modificarlo # secondo i termini della GNU Lesser General Public License come pubblicato da # la Free Software Foundation; o la versione 2.1 della Licenza, oppure # (a tua scelta) Qualsiasi versione successiva.
# Vedi tmpfiles.d(5) per i dettagli
# Liberare separatamente le directory tmp, per renderle più facili da sovrascrivere V /TMP 1777 radice 10d v /var/tmp 1777 radice radice 30d
# Escludi i punti di montaggio dello spazio dei nomi creati con PrivateTmp=sì x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
Soluzione 1
Modifica il file di configurazione di Kafka /config/server.properties per modificare la configurazione dei log.dirs, ad esempio:
Soluzione 2
Aggiungi una cartella di esclusione e modifica il file: /usr/lib/tmpfiles.d/tmp.conf
(Fine)
|