Kafka 클러스터를 구축하고 나서 보통 kafka-console-producer.sh와 kafka-console-consumer.sh를 이용하여
Kafka 클러스터가 정상적으로 구축되었는지 확인하곤 합니다.
kafka-console-producer.sh와 kafka-console-consumer.sh를 통해서 정상적으로 메시지를 생성하고 소비하는 것을 확인했지만
정작 다른 장비(또는 네트워크)에 있는 Logstash의 output 또는 직접 API를 이용하여 개발한 Producer / Consumer에서
Kafka 클러스터와 통신을 하지 못하는 경우에는 다음과 같은 사항을 확인해보기 바랍니다.
요즘은 Docker나 클라우드 서비스를 사용하면서 Kafka가 구동되고 있는 장비가 Floating IP를 가지고 있는 경우가 있습니다.
- Floating IP란?
Public 네트워크에서 Instance에 접속하기 위해서 할당된 IP라고 할 수 있습니다.
즉, Public 네트워크에서는 Floating IP를 통해 해당 Instance에 접근하지만 ifconfig 등을 통해 IP를 확인해보면
Floating IP를 가진 네트워크 인터페이스가 보이지 않습니다.
여기에서 문제가 발생하는 원인이 있습니다.
server.properties의 listeners=PLAINTEXT://0.0.0.0:9092로 설정했지만 다른 네트워크에서 접근하지 못하는 현상이 발생합니다.
그럴때는 추가로 advertised.listeners=PLAINTEXT://YOUR_FLOATING_IP:9092를 통해
다른 Producer / Consumer에게 FLOATING_IP로 접속할 수 있도록 알려주어야 합니다.
참고로, advertised.host, advertised.name 설정을 통한 방법은 0.10.x 버전 부터 deprecated 되었습니다.
'OpenSource > Kakfa' 카테고리의 다른 글
kafka-topics.sh 파라미터 설명 (1) | 2018.02.19 |
---|