복습:
다음 명령어를 사용하여 Kafka의 실행 상태를 확인하세요. 다음과 같습니다:
카프카.서비스 loaded: loaded (/usr/lib/systemd/system/kafka.service; 사용; 벤더 프리셋: 비활성화) 활성화: 실패 (결과: 종료 코드) 2021-09-22 수요일 14:43:11 CST부터 시작됨; 1시간 43분 전 Process: 7363 ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties (code=exited, status=1/FAILURE) 주요 PID: 7363 (코드=종료, 상태=1/실패)
9월 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) 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,298] WARN [GroupCoordinator 1]: 그룹 KqBatchAna의 빈 메타데이터 작성에 실패함: 이건 올바르지 않습니다 조정자. (kafka.co... up코디네이터) 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,303] 정보 [ReplicaFetcherManager의 브로커 1] 파티션 HashSet(__consumer_offsets-22, __)에 대한 fetcher를 제거했습니다 consumer_offsets-30, ...-8, __consumer 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,304] 정보 [ReplicaAlterLogDirsManager on broker 1] 파티션 HashSet(__consumer_ 페처 제거 오프셋-22, __consumer_offsets... FSETS-8, __con 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,378] WARN [ReplicaManager broker=1] 브로커 1이 파티션 __consumer_offsets-22,__에 대한 fetcher를 멈췄습니다. consumer_offsets-30,__consumer_... fsets-21,__con 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,379] WARN director /tmp/kafka-logs (kafka.log.LogManager)에서 로그 제공 중단 9월 22일 14:43:11 devops02 kafka-server-start.sh[7363]: [2021-09-22 14:43:11,386] 오류 /tmp/kafka-logs의 모든 로그 디렉터리가 실패하여 브로커가 종료됩니다 (kafka.log.LogManager) 9월 22일 14:43:11 devops02 systemd[1]: kafka.service: main process exited, code=exited, status=1/FAILURE 9월 22일 14:43:11 devops02 systemd[1]: 유닛 kafka.service가 실패 상태에 들어갔습니다. 9월 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 로그 파일을 다음과 같이 확인하세요:
[2021-09-22 14:43:11,286] __consumer_offsets-8 로그 세그먼트를 굴릴 때 /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(네이티브 메서드) 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) 스칼라에서. 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(기록 스칼라: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) at scala.collection.Iterator$$anon$9.next(Iterator.scala:575) at scala.collection.mutable.Growable.addAll(Growable.scala:62) at scala.collection.mutable.Growable.addAll$(Growable.scala:57) scala.collection.immutable.MapBuilderImpl.addAll(Map.scala:692) at 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) at kafka.coordinator.group.GroupMetadataManager.storeGroup(GroupMetadataManager.scala:325) at kafka.coordinator.group.GroupCoordinator.$anonfun$onCompleteJoin$1(GroupCoordinator.scala:1206) at kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) at kafka.coordinator.group.GroupCoordinator.onCompleteJoin(GroupCoordinator.scala:1178) kafka.coordinator.group.DelayedJoin.onComplete(DelayedJoin.scala:43) kafka.server.DelayedOperation.forceComplete(DelayedOperation.scala:72) at kafka.coordinator.group.DelayedJoin.$anonfun$tryComplete$1(DelayedJoin.scala:38) at kafka.coordinator.group.GroupCoordinator.$anonfun$tryCompleteJoin$1(GroupCoordinator.scala:1172) at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17) at kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) at kafka.coordinator.group.GroupCoordinator.tryCompleteJoin(GroupCoordinator.scala:1171) kafka.coordinator.group.DelayedJoin.tryComplete(DelayedJoin.scala:38) kafka.server.DelayedOperation.safeTryCompleteOrElse(DelayedOperation.scala:110) at kafka.server.DelayedOperationPurgatory.tryCompleteElseWatch(DelayedOperation.scala:234) at kafka.coordinator.group.GroupCoordinator.prepareRebalance(GroupCoordinator.scala:1144) at kafka.coordinator.group.GroupCoordinator.$anonfun$maybePrepareRebalance$1(GroupCoordinator.scala:1118) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) at kafka.coordinator.group.GroupCoordinator.maybePrepareRebalance(GroupCoordinator.scala:1117) at kafka.coordinator.group.GroupCoordinator.removeMemberAndUpdateGroup(GroupCoordinator.scala:1156) at kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$3(GroupCoordinator.scala:498) scala.collection.immutable.List.map(List.scala:246) at kafka.coordinator.group.GroupCoordinator.$anonfun$handleLeaveGroup$2(GroupCoordinator.scala:470) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at kafka.coordinator.group.GroupMetadata.inLock(GroupMetadata.scala:227) at 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) 오류 원인:리눅스는 정기적으로 /tmp 디렉터리의 파일을 정리합니다, 카프카 파일 디렉터리는 기본적으로 저장됩니다/tmp/kafka-logs이로 인해 정기적으로 정리되어 비정상적인 프로그램 동작이 발생했습니다.
CentOS 7 하에는 정리와 관련된 3가지 시스템 서비스가 있습니다:
systemd-tmpfiles-setup.service :휘발성 파일 및 디렉터리 생성 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 소규모 공공 사용 허가서 조건에 따라 발행되었습니다 # 자유 소프트웨어 재단; 라이선스 버전 2.1 또는 # (선택하신 경우) 나중에 어떤 버전이든 가능합니다.
# 자세한 내용은 tmpfiles.d(5)를 참조하세요
# TMP 디렉터리를 따로 정리해서 더 쉽게 덮어쓰기 쉽게 하세요 V /TMP 1777 어근 10d V /var/TMP 1777 어근 30d
# PrivateTmp=yes로 생성된 네임스페이스 마운트포인트 제외 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
예를 들어, 카프카의 구성 파일 /config/server.properties를 수정하여 log.dirs 구성을 수정하세요:
해결책 2
제외 디렉터리를 추가하고 파일을 편집하세요: /usr/lib/tmpfiles.d/tmp.conf
(끝)
|