What is advertised.listeners in Kafka?
Hi guys,
Today we gonna talk about Kafka Broker Properties.
More Specifically, advertised.listeners property. If you have seen the server.properties file in Kafka there are two properties with listener settings.
Today we gonna talk about Kafka Broker Properties.
More Specifically, advertised.listeners property. If you have seen the server.properties file in Kafka there are two properties with listener settings.
- #listeners=PLAINTEXT://:9092
- #advertised.listeners=PLAINTEXT://your.host.name:9092
why the hell we need two listeners for our broker?
usually, Kafka brokers talk to each other and register themselves in zookeeper using listeners property. So for all internal cluster communication happens over what you set in listeners property.
But if you have a complex network, for example, consider if your cluster is on the cloud which has an internal network and also external IP on which rest of the work can connect to your cluster, in that case, you have to set advertised.listeners property with {EXTERNAL_IP}://{EXTERNAL_PORT}.
For Example,
If Internal IP is 10.168.4.9 and port is 9092 and External IP is 35.196.212.10 and port is 3101 then your propert will look like ,
listeners=PLAINTEXT://10.168.4.9:9092 &
advertised.listeners = PLAINTEXT://
35.196.212.10:3101
listeners=PLAINTEXT://10.168.4.9:9092 &
advertised.listeners = PLAINTEXT://
35.196.212.10:3101
So broker will register this value in zookeeper and when the external world wants to connect to your Kafka Cluster they can connect over the network which you provide in “advertised. listeners” property.
Bonus Tip:
This is also true in case of Kafka running inside the Kubernetes Cluster. In that case, you might want to open NodePort on your worker node and provide node_ip and port as “advertised.listeners” to allow the outside world to communicate to Kafka cluster.
This is also true in case of Kafka running inside the Kubernetes Cluster. In that case, you might want to open NodePort on your worker node and provide node_ip and port as “advertised.listeners” to allow the outside world to communicate to Kafka cluster.
Comments
Post a Comment