kafka配置内外网分流
问题描述:
kafka服务处在内网, 客户端在外网, 客户端通过网闸端口映射连接内网的kafka, 这种情况下实际无法连接上kafka。
客户端第一次通过外网ip端口连接上kafka,会查询broker信息,kafka会返回内网的ip信息, 这样客户端在第二次重新连接broker时就会连接失败。
修复方法1:域名解析,例如客户端和服务端都域名kafka_1, 服务端kafka_1对应内网ip, 客户端kafka_1对应外网ip, kafka配置listeners=PLAINTEXT://kafka_1:9092
修复方法2:kafka配置内外网分流
骤修改kakfa配置文件config/server.properties
1、 修改listeners,这里配置本机kafka的监听地址
listeners=INSIDE://内网ip:9091,OUTSIDE://外网ip:9092
修改前 |
listeners= PLAINTEXT://10.12.56.22:9092 |
修改后 |
listeners= INSIDE://10.12.56.22:9091, OUTSIDE://163.177.247.244:9092 |
2、修改advertised.listeners, 这里的配置是用于告知其他broker和客户端本机的监听地址,
advertised.listeners和listeners保持一致。
advertised.listeners=INSIDE://内网ip:9091,OUTSIDE://外网ip:9092
修改前 |
advertised.listeners = PLAINTEXT://10.12.56.22:9092 |
修改后 |
advertised.listeners= INSIDE://10.12.56.22:9091, OUTSIDE://163.177.247.244:9092 |
3、新增listener.security.protocol.map,这是监听器名称和安全协议之间的映射关系集合,PLAINTEXT表示明文。
修改后 |
listener.security.protocol.map=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT |
4、新增inter.broker.listener.name配置,注释掉security.inter.broker.protocol配置,二者不能同时配置。inter.broker.listener.name用于broker之间通信的listener名称。
修改前 |
security.inter.broker.protocol=PLAINTEXT |
修改后 |
#security.inter.broker.protocol=PLAINTEXT inter.broker.listener.name=INSIDE |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~