이슈
카프카가 Failed to clean up log for __consumer_offsets 에러를 발생시키고, 몇 분 뒤에 Shutdown broker because all log dirs in 에러를 남기고 비정상 종료되는 현상이다.
공식 이슈
https://issues.apache.org/jira/browse/KAFKA-6188
https://github.com/apache/kafka/pull/6403
공식 이슈로 올라온 것은 2017년 11월 버전 1.0.1이고, 2018년 8월 버전 2.0부터는 패치되었다고 한다.
하지만 21년 6월 버전 2.6까지도 계속 발생하는 것으로 봐서는 아직까지 해결되지 않은 것으로 판단된다.
원인
카프카는 data를 retention 주기만큼 보관하고 있다가 이후 삭제한다. 이때 Cleaner가 동작하게 되는데, 삭제해야 하는 데이터의 로그 파일이 존재하지 않을 경우 위와 같은 에러가 발생한다.
처음 이슈가 발생했을 때 Windows에서만 발생하는 이슈라고 하였지만, 현재는 여러 OS에서 발생하고 있다.
어떤 개발자가 말하기로는, 카프카의 데이터 로깅 위치(log.dirs)를 변경할 경우 발생한다고 한다. 하지만 디폴트 설정으로 사용한 개발자도 해당 이슈가 발생한다고 한다.
아직 까지 정확한 원인과 이슈 해결이 되지 않았다.
해결
많은 사람들이 가장 많이 해결한 방법으로는 kafka의 data 경로에 모든 파일을 삭제하면 된다.
server.properties 파일에 아래 설정 경로에 있는 데이터를 모두 삭제하면 된다. (카프카 토픽에 저장했던 데이터들이 모두 삭제된다.)
log.dirs=/home/kafka/kafka/logs
하지만 이렇게 해도 되지 않을 경우, 다음으로는 주키퍼의 data 파일을 삭제한다.
zookeeper.properties 파일에 아래 설정 경로에 있는 데이터를 모두 삭제하면 된다. (카프카 토픽 자체가 모두 삭제된다.)
dataDir=/home/kafka/kafka/zookeeper
이렇게 해도 되지 않을 경우, 재설치를 추천한다.
'서버 > Kafka' 카테고리의 다른 글
[KAFKA] Consumer 메시지 중복 처리 (0) | 2021.12.06 |
---|