kafka listeners和advertised配置

线上问题:

因为第三方要对接我们的kafka结果数据一直无法进来,经过排查发现是hostname解析没有配置。

第三方提示要我们配置advertised.listeners,由此进行了相关的资料整理学历

kafka版本:kafka_2.11-2.3.0

kafka配置listeners

# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://:9092

kafka配置advertised

# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
#advertised.listeners=PLAINTEXT://your.host.name:9092

 

listeners

listeners就是主要用来定义Kafka Broker的Listener的配置项。

advertised.listeners

advertised.listeners参数的作用就是将Broker的Listener信息发布到Zookeeper中

 

下面演示现象:

第一种情况:

默认都不配置

zookeeper查看kafka地址:

ddc3b69577b60d56b543838844d56cab.jpeg

默认是hostname,如果第三方需要对接。需要配置hostname

kafka创建topic

cdb1e806880555d6762882cb727b7e74.png

 

5e2c930ba7f662a11b1eab7eca509d39.jpeg

 

 添加主机hosts访问正常

192.168.11.103 xuliang-PC

e81028e2d61a4caea1e6aa756ea3e74d.png

 

 第二种情况

配置 listeners=PLAINTEXT://192.168.11.103:9092

默认advertised.listeners也是 192.168.11.103:9092

afcabb2347a1dfa90e0bb904ce85eb6d.png

 

 此时访问要通过:bin/kafka-topics.sh --list --bootstrap-server 192.168.11.103:9092

第三种情况:

配置如下:

f0edbe1a950e4856327007ba702d475f.png

 

 

14736f596721a84bfd6a2888285a9316.png

 

第四种情况:

配置如下:

3f600278b673d85da0102c69f59f1e86.png

 

 

e309b1a00fe899c3d91b96cd8480d4b5.png

 

 监听地址:

6e0e3032b922e45e1524e6f21010a998.png

 

 内外网分流:

listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT
listeners=EXTERNAL://192.168.11.103:9092,INTERNAL://192.168.11.103:9093
inter.broker.listener.name=INTERNAL
#advertised.listeners=EXTERNAL://192.168.11.103:9094,INTERNAL://192.168.11.103:9093

 

d9f35891720eeaef4ab30702f642f64c.png

[zk: localhost:2181(CONNECTED) 8] get /brokers/ids/0

{"listener_security_protocol_map":{"EXTERNAL":"PLAINTEXT","INTERNAL":"PLAINTEXT"},"endpoints":["EXTERNAL://192.168.11.103:9092","INTERNAL://192.168.11.103:9093"],

"jmx_port":-1,"host":"192.168.11.103",

"timestamp":"1573920483772","port":9092,"version":4}

 内网访问可以使用:192.168.11.103:9093

外网访问使用:192.168.11.103:9092

这在kafka部署到kubernetes时候就很有用了

 

listeners

listeners就是主要用来定义Kafka Broker的Listener的配置项。

advertised.listeners

advertised.listeners参数的作用就是将Broker的Listener信息发布到Zookeeper中

inter.broker.listener.name

inter.broker.listener.name:专门用于Kafka集群中Broker之间的通信

listener.security.protocol.map

配置监听者的安全协议的,比如PLAINTEXTSSLSASL_PLAINTEXTSASL_SSL

 

新版本kafka product 和consumer访问集群方式:

 

xuliang@xuliang:/usr/local/kafka_2.11-2.3.0$ bin/kafka-console-producer.sh --broker-list 192.168.11.103:9092 --topic test
>this is a test
xuliang@xuliang:/usr/local/kafka_2.11-2.3.0$ 0$ bin/kafka-consoconsumer.sh --bootstrap-server  192.168.11.103:9092 --from-beginning --topic test
this is  a test
this is a test

 

总结:

 

listeners

是kafka真正bind的地址

 

advertised.listeners

是暴露给外部的listeners,如果没有设置,会用listeners

 

参考:kafka listeners和advertised配置 - 时光依然轻擦 - 博客园

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值