当前位置: 首页 > news >正文

Kafka外网访问

文章目录

    • 一、背景
    • 二、需求
    • 三、调研
    • 四、配置内外网访问

一、背景

kafka机器只有内网IP,没有绑定外网网卡,但是可以在防火墙或通过其他有公网IP的设备上进行公网IP+端口的映射。

二、需求

kafka集群端口映射后,可以通过外网IP+端口进行数据生产和消费。一帮情况下,只配置9092端口,即使映射到公网,外部也无法访问,因为kafka需要修改其他配置,开启外部访问端口。

三、调研

一般情况下,kafka的listeners参数配置为127.0.0.1或本地IP地址,只能本地访问,无法通过外部网络访问。且如果在防火墙上进行外网端口映射,就会出现如下报错:

$ ./kafka-console-producer.sh --broker-list 公网IP:39092 --topic test1-topic
>hello
[2023-06-26 15:03:19,708] ERROR Error when sending message to topic test1-topic with key: null, value: 5 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Topic test1-topic not present in metadata after 60000 ms.$ ./kafka-console-consumer.sh --bootstrap-server 公网IP:39092 --topic test1-topic --from-beginning
[2023-06-26 15:04:25,078] WARN [Consumer clientId=consumer-console-consumer-58924-1, groupId=console-consumer-58924] Connection to node 2147483429 (/192.168.0.218:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

就算配置了公网映射,默认情况下,生产、消费数据还是会和机器的本地IP进行通信,不会通过公网IP进行通信。

四、配置内外网访问

  1. 停止kafka、zk
  2. 修改kafka配置文件

(单机版)

$ vim /data/kafka/config/server.properties
listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://192.168.0.217:29092 
advertised.listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://公网IP:29092
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT# 详解
# 定义内部、外部两个监听器,其中EXTERNAL是内部和外部网络之间的映射,在外网IP没有绑定到网卡的情况下,如果绑定到主机网卡,这里就必须填写外网IP
listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://192.168.0.217:29092 
# 定义kafka集群向外界公开的监听地址,其中EXTERNAL是外部网络直接访问的kafka集群地址
advertised.listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://公网IP:29092
# 定义kafka brokers之间使用INTERNAL监听器进行通信
inter.broker.listener.name=INTERNAL
# 定义INTERNAL、EXTERNAL监听器都使用明文协议进行通信
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

(集群版)

# 注意:
1. 集群配置内外网访问,公网的端口需要配置不同的端口,否则会冲突
2. 一台配置重启后,接着配置重启下一台# 节点1
listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://192.168.0.217:19092 
advertised.listeners=INTERNAL://192.168.0.217:9092,EXTERNAL://公网IP:19092
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT# 节点2
listeners=INTERNAL://192.168.0.218:9092,EXTERNAL://192.168.0.218:19093 
advertised.listeners=INTERNAL://192.168.0.218:9092,EXTERNAL://公网IP:19093
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT# 节点3
listeners=INTERNAL://192.168.0.219:9092,EXTERNAL://192.168.0.219:19094 
advertised.listeners=INTERNAL://192.168.0.219:9092,EXTERNAL://公网IP:19094
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
  1. 启动zk、kafka
  2. 验证

通过公网ip+端口的方式,向测试topic中写入数据、消费数据

$ ./kafka-console-producer.sh --bootstrap-server 公网IP:29092 --topic test1-topic
$ ./kafka-console-consumer.sh --bootstrap-server 公网IP:29092 --topic test1-topic --from-beginning
http://www.lryc.cn/news/279684.html

相关文章:

  • Vant2组件库van-list+Toast下拉加载滚动条回顶问题
  • 使用 C++/WinRT 创作 API
  • C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行
  • QT中线程的退出分析
  • 进程的创建
  • day-08 构造限制重复的字符串
  • Java锁的分类
  • SQL-分组查询
  • HBase 基础
  • android 11添加系统api供app使用
  • im6ull学习总结(三-3)freetype
  • 基于OpenCV的谷物颗粒识别
  • Aloha 机械臂的学习记录3——AWE:Pycharm运行代码记录
  • 开源协议概览
  • 分布式缓存
  • BSC/平衡记分卡
  • 论文阅读_训练大模型用于角色扮演
  • v-if控制div内容显示,克隆这个div但是v-if没有效果
  • flutter的状态管理学习
  • 开源免费虚拟化KVM的部署及其虚拟机资源变更、快照、克隆等常见运维操作
  • 阿里云git clone超时报错解决方法
  • 力扣刷题-二叉树-合并二叉树
  • 了解JavaScript 加密、混淆和生成签名
  • Go语言的指针(深度解析)
  • HTB-SAU
  • AI创新之美:AIGC探讨2024年春晚吉祥物龙辰辰的AI绘画之独特观点
  • Linux的SSH服务
  • MySQL连续案例续集
  • 【STM32读取HX711的函数】
  • MATLAB对数据隔位抽取和插值的几种方法