Kafka 설정 실수로 인 broker 이슈 정리

Zerodin·2022년 12월 27일
0

Kafka

목록 보기
3/3

아키텍쳐 구성

  • 3개의 zookeeper, 3개의 Kafka로 앙상블을 이루도록 구성.
  • 각 Kafka, zookeeper들은 hostname을 작성 후 이를 기준으로 설정이 이루어져 있다.
  • 현재 기준으로는 단순히 broker의 replication 테스트와 producer & consumer의 기능 동작을 테스트 하기 위해 최소한의 설정만 적용되어 있다.
  • replication은 3개로 설정하였고 topic 자동 등록이 활성화 되어 있는 상태에서 테스트를 진행하였다.

broker 장애 발생

  • 우선 정상적으로 Kafka가 작동하고 있는지 확인을 하기 위해 간단한 topic 등록을 시도했다.

sh kafka-topics.sh --bootstrap-server kafka01:9092,kafka02:9092,kafka03:9092 --replication-factor 3 --partitions 3 --topic 20221227_test01 --create

  • 분명 broker 가 3개가 되어야 하는데 1개만 잡힌다.

  • 각 kafka의 상태를 체크해보니 다음과 같다

    • kafka01
    • kafka02
    • kafka03
  • 3번을 제외한 1,2번은 정상적으로 서비스가 올라오지 못한것으로 보인다.

  • 1,2번 broker에 대한 설정이 먼가 이슈가 있을 것으로 예측하고 설정파일을 확인해보니 아래와 같은 부분이 의심스러웠다.

check point 1 : broker ID

  • Kafka 클러스터 내의 broker 리스트는 Zookeeper가 관리하므로 설정 파일에는 다른 broker에 대한 정보를 입력할 필요 없이 자신의 broker ID만 명시해 주면 된다.

  • 별도의 파일에 인스턴스의 ID를 명시해야 하는 Zookeeper와는 달리 Kafka는 설정 파일의 broker.id라는 항목에 인스턴스의 ID를 아래와 같이 명시하면 된다.

  • 우선 broker id 설정값을 확인해 보았다.

    • kafka01
      broker.id=1
    • kafka02
      broker.id=2
    • kafka03
      broker.id=3

각각 1,2,3으로 설정되있었고 id 문제는 아닌것으로 판단된다.

check point 2 : listeners 설정

  • 두번째 예상항목인 listeners 설정과 advertised.listeners 설정을 확인해보았다.

    • kafka01
      listeners=PLAINTEXT://:9092
      advertised.listeners=PLAINTEXT://kafka01:9092
    • kafka02
      listeners=PLAINTEXT://:9092
      advertised.listeners=PLAINTEXT://kafka02:9092
    • kafka03
      listeners=PLAINTEXT://:9092
      advertised.listeners=PLAINTEXT://kafka03:9092
  • 여기도 별다른 설정상의 이슈가 발견되지 않았다.

check point 3 : zookeeper 설정

이번에는 zookeeper connect 관련 부분을 살펴봤다.

  • kafka01

    zookeeper.connect=zk01:2181,zk02:2181,zk03:2181/kafka01_znode

  • kafka02

    zookeeper.connect=zk01:2181,zk02:2181,zk03:2181/kafka02_znode

  • kafka03

    zookeeper.connect=zk01:2181,zk02:2181,zk03:2181/kafka03_znode

  • zookeeper와 연동을 위하여 zookeeper.connect라는 항목에 Zookeeper 인스턴스들의 정보를 입력한다. 그런데 설정을 보니 전부 각각 다른 인스턴스 정보가 설정되어 있었다.

  • 이것때문에 클러스터 안에 있는 각 kafka broker들이 연결이 안되고 있을 것으로 의심이 되었고 broker들의 zookeeper.connect설정을 아래와 같이 일괄 변경했다

  • kafka01, kafka02, kafka03 공통으로 설정.

    zookeeper.connect=zk01:2181,zk02:2181,zk03:2181/node

  • 설정을 변경후 1번 kafka 부터 restart를 시도후 상태를 확인 해보았다.

    sudo systemctl restart kafka-server.service
    sudo systemctl status kafka-server.service

또 다른 error, meta.properties 이슈

  • zookeeper connect 경로 변경으로 인해 기존에 있던 클러스터 ID정보가 유효하지 않아 문제가 되는 것으로 보였다.

  • meta.properties 를 삭제후 kafka를 재실행시켜 다시 생성해서 이를 해결해보려 했다.

    • kafka01
    • kafka02
    • kafka03
  • 3대의 kafka 상태가 정상으로 올라온 것이 확인 되었다.

topic 생성

  • kafka01에서 test keyword용 topic을 생성해봤다.
    • kafka01
  • 정상적으로 topic이 생성되었다.

topic 목록조회를 통한 생성 확인

  • topic 리스트를 조회하여 생성이 정말 되었는지 확인해보자.

    • kafka01
  • 나머지 02, 03번에서도 topic list가 조회가 되는지 확인해보자.

    • kafka02
    • kafka03
  • 이제 broker 3대가 정상적으로 연동되고 replication이 되고 있는 것을 확인 할 수 있었다.

  • 다음 단계는 생성된 topic기준으로 프로듀서와 컨슈머 작동을 확인해보도록 하자.

profile
멈추지 않는 사람이 되고 싶어요!

0개의 댓글