kafka暴露给外部网络方法

olivee 3年前 ⋅ 1265 阅读

内外网都配置hosts,内网配置内部IP的hosts,外网配置外部IP的hosts

比如内网的配置的是:

10.0.1.11  kafka-hosts1
10.0.1.12  kafka-hosts2
10.0.1.13  kafka-hosts3

外网的配置是:

101.10.121.196  kafka-hosts1
101.10.121.197  kafka-hosts2
101.10.121.198  kafka-hosts3

在修改kafka的config/server.properties,把listeners和advertised.listeners改成hosts对应的主机名配置:

类似如下配置:

# 第一台服务配置
listeners=PLAINTEXT://kafka-hosts1:9092
advertised.listeners=PLAINTEXT://kafka-hosts1:9092
# 第二台服务配置
listeners=PLAINTEXT://kafka-hosts2:9092
advertised.listeners=PLAINTEXT://kafka-hosts2:9092
# 第三台服务配置
listeners=PLAINTEXT://kafka-hosts3:9092
advertised.listeners=PLAINTEXT://kafka-hosts3:9092

修改之后kafka内部能连,外网也能连到kafka

转载

https://www.cnblogs.com/xuliang666/p/11871389.html

参数说明

  • listeners listeners就是主要用来定义Kafka Broker的Listener的配置项。 是kafka真正bind的地址

  • advertised.listeners advertised.listeners参数的作用就是将Broker的Listener信息发布到Zookeeper中。 是暴露给外部的listeners,如果没有设置,会用listeners

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

  • listener.security.protocol.map 配置监听者的安全协议的,比如PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSLA

内外网分流示例

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:9092,INTERNAL://192.168.11.103:9093

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

外网访问使用:192.168.11.103:9092

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