什么是Kafka Listener?KAFKA_LISTENERS等相关参数作用是什么?
Kafka监听参数说明与报错修复
报错原因
你启动时触发的报错是wurstmeister/kafka镜像的启动校验逻辑导致的:该镜像要求必须配置Kafka服务访问相关的监听参数,要么配置已弃用的KAFKA_ADVERTISED_HOST_NAME,要么配置新版的KAFKA_LISTENERS相关参数,你的配置中两类参数都缺失,因此启动失败。
两个核心参数说明
1. KAFKA_ADVERTISED_HOST_NAME(已弃用)
这是Kafka 0.10.x之前版本的参数,作用是指定Kafka服务对外暴露的主机名/IP地址,所有外部客户端和集群内其他Broker都会用这个地址和当前Kafka实例通信。该参数仅支持单地址配置,无法适配内网、外网多网络环境的访问需求,因此在新版本Kafka中已经完全弃用。
2. KAFKA_LISTENERS(新版推荐)
该参数是新版Kafka用来定义服务端监听地址的核心配置,除此之外还要搭配KAFKA_ADVERTISED_LISTENERS一起使用,两者的区别如下:
KAFKA_LISTENERS:定义Kafka服务端本地绑定的网卡地址,决定Kafka接收来自哪些网卡的请求,配置为0.0.0.0:9092就表示监听本机所有网卡的9092端口请求。KAFKA_ADVERTISED_LISTENERS:定义Kafka对外广播的访问地址,是外部客户端、集群其他Broker实际用来连接当前Kafka实例的地址,这个地址必须是访问方可正常连通的地址。
修复后的docker-compose.yml配置
你可以直接在原有配置的environment字段中新增监听相关参数即可,本地测试用的配置参考如下:
version: '2' services: zookeeper: image: wurstmeister/zookeeper:latest ports: - "2181:2181" kafka: image: wurstmeister/kafka:2.11-1.1.1 ports: - "9092:9092" links: - zookeeper environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' KAFKA_DELETE_TOPIC_ENABLE: 'true' # 新增监听配置 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
如果是部署在远程服务器上,只需要把KAFKA_ADVERTISED_LISTENERS中的127.0.0.1替换为服务器的公网IP或者可访问的域名即可。
内容的提问来源于stack exchange,提问作者whatspoppin
相关产品推荐
相关产品推荐

