본문 바로가기
Data PipeLine/Kafka

[Kafka] 카프카 시작 시 주키퍼 id 충돌 이슈

by 연습장이 2024. 2. 28.
728x90
반응형

상황

  전사 전기 장비 관련하여 점검이 있어 모든 테스트 PC가 재부팅됨. 주키퍼와 브로커는 자동 재시작처리하지 않아 수동으로 시작하려고 했더니 에러 발생

에러 내용

[2024-02-13 14:34:40,718] ERROR Error while creating ephemeral at /brokers/ids/3, node already exists and owner '144143570463227906' does not match current session '216389134594146305' (kafka.zk.KafkaZkClient$CheckedEphemeral)
[2024-02-13 14:34:40,723] ERROR [KafkaServer id=3] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode = NodeExists
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:126)
        at kafka.zk.KafkaZkClient$CheckedEphemeral.getAfterNodeExists(KafkaZkClient.scala:1904)
        at kafka.zk.KafkaZkClient$CheckedEphemeral.create(KafkaZkClient.scala:1842)
        at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1809)
        at kafka.zk.KafkaZkClient.registerBroker(KafkaZkClient.scala:96)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:308)
        at kafka.Kafka$.main(Kafka.scala:109)

보면 주키퍼가 관리하는 카프카 브로커 노드들 중에 3번 노드가 이미 있어서 브로커가 뜨고 있지 못한 상태임. 즉, 물고 있는 브로커 노드 정보를 삭제해줘야 함. 여기서 중요한건

  • 한 5분 내로 주키퍼가 자동으로 삭제해줌
  • 급할 경우 수동으로 삭제해줘야함. cdc는 실시간성 서비스이므로 5분도 사실상 사치임

조치 방법

# 우선 주키퍼 클라이언트가 어딨는지 찾음
find / -name "zookeeper-shell.sh"

# 클라이언트에 접속
$KAFKA_HOME/bin/zookeeper-shell.sh localhost:2181

# 삭제 대상 ids 확인
ls /brokers/ids
[3]

# 수동 삭제 진행
delete /borkers/ids/3

# 삭제 정상 여부 확인
ls /brokers/ids

# 카프카 브로커 다시 올림
$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

728x90
반응형