kafka 서버 기동을 위해 'zookeeper 서버 기동' -> 'kafka 서버 기동' -> 'kafka 서버에 요청'을 하는 중 'TimeoutException'이 발생하여 해결한 내용입니다.
(사용된 kafka 버전은 kafka_2.13-2.7.0 버전입니다.)
Zookeeper 및 Kafka 서버 기동
//zookeeper server 기동
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
//kafka server 기동
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
다음 실행 명령을 통해 zookeeper 서버가 port 2181으로 구동된 것을 확인하였고, kafka 서버 역시 port 9092 번으로 started 된 것을 확인하였는데요.
Topic 목록 확인
//topic 목록 확인
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
해당 실행 명령을 통해 topic 목록을 요청했을 때 아래와 같이 TimeoutException이 발생하였습니다.
> ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
Error while executing topic command : Call(callName=listTopics, deadlineMs=1672451631007, tries=1, nextAllowedTryMs=1672451631108) timed out at 1672451631008 after 1 attempt(s)
[2022-12-31 10:53:51,016] ERROR org.apache.kafka.common.errors.TimeoutException: Call(callName=listTopics, deadlineMs=1672451631007, tries=1, nextAllowedTryMs=1672451631108) timed out at 1672451631008 after 1 attempt(s)
Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: listTopics
(kafka.admin.TopicCommand$)
INFO Registered broker 0 at path /brokers/ids/0 with addresses: PLAINTEXT://218.xx.137.xx:9092, czxid (broker epoch): 98 (kafka.zk.KafkaZkClient)
원인을 파악하기 위해 kafka server가 기동 된 로그를 살펴보던 중 'PLAINTEXT://218.xx.137.xx:9092'라는 부분을 발견했는데요.
kafka 서버가 기동은 되었지만 localhost:9092로 접근할 수 있도록 허용되지 않은 것 같았습니다.
kafka timeoutException 해결 방법
//kafka_2.13-2.7.0 > config > server.properties file
listeners=PLAINTEXT://localhost:9092
해결 방법은 kafka 서버를 기동 할 때 사용되는 server.properties 파일에 위와 같은 옵션을 추가하는 것인데요.
해당 옵션을 추가한 후 kafka 서버를 다시 기동 하게 되면 로그에서 'PLAINTEXT://localhost:9092'로 변경된 것을 확인할 수 있으며, 이후 카프카 서버에 요청을 했을 때 TimeoutException이 발생하지 않는 것을 확인할 수 있었습니다.
kafka server 재기동이 안될 때
추가로 kafka 서버 재기동이 안 되는 경우에는 server.properties 파일에서 'log.dirs='에 지정된 경로를 찾을 수 있는데요.
해당 경로 폴더에 존재하는 meta.properties 파일을 삭제한 후 다시 기동 하면 정상적으로 기동 할 수 있습니다.
< 참고 자료 >
'Programming > Message Queue' 카테고리의 다른 글
RabbitMQ 개념과 구조 정리 (Exchange Type, Dispatch 등) (0) | 2023.10.12 |
---|---|
Apache Kafka 주요 개념 정리 (Cluster, Topic, Producer, Consumer) (0) | 2023.01.15 |