Kafka公网访问

这篇具有很好参考价值的文章主要介绍了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中写入数据、消费数据文章来源地址https://www.toymoban.com/news/detail-816624.html

$ ./kafka-console-producer.sh --bootstrap-server 公网IP:29092 --topic test1-topic
$ ./kafka-console-consumer.sh --bootstrap-server 公网IP:29092 --topic test1-topic --from-beginning

到了这里,关于Kafka公网访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++项目中访问kafka的方法

    提纲 1、c++访问kafka的函数库librdkafka 2、安装 3、封装KafkaConsumer和KafkaProducer 4、问题解决 librdkafka的项目地址是https://github.com/edenhill/librdkafka。 librdkafka是一个用C实现的kafka协议,提供了生产者、消费者和管理客户端。它在设计消息发送的时候,重点考虑了可靠性和高性能。 目

    2024年02月07日
    浏览(37)
  • Kafka如何配置内外网多ip访问

    近日在云虚拟机上搭建kafka测试集群(kafka版本2.8.2),由于云虚拟机只配置了内网网卡,在配置kafka的config/server.properties时,将listeners配置为内网IP+端口。这样Kafka在内网是可以访问成功的。 为了可以在办公网进行数据测试,对云虚拟机增加了外网地址映射。例如映射8.8.8.8

    2024年02月02日
    浏览(30)
  • Kafka如何处理存储实现上的并发访问问题

    Kafka 是一个分布式的消息队列,主要使用文件系统存储消息数据,支持发布订阅模式以及处理流式数据。在多个 Topic 和 Partition 存储操作时,会产生并发访问和数据冲突等问题。 Kafka 存储方案的设计需要选择相关技术,并实现相应的机制来解决多个 Topic 和 Partition 的存储操作

    2024年02月12日
    浏览(44)
  • 【Spring连载】使用Spring访问 Apache Kafka(三)----接收消息

    当你使用消息监听器容器,你必须提供一个监听器接收数据。现在有8个受支持的接口做为消息监听器。见以下代码: MessageListener:,当使用自动提交或者容器管理的提交方法之一时,使用MessageListener接口处理从kafka consumer的poll方法收到的单个ConsumerRecord实例。 AcknowledgingMes

    2024年02月01日
    浏览(42)
  • Kerberos安全认证-连载12-Kafka Kerberos安全配置及访问

    目录 1. Kafka配置Kerberos 2. 客户端操作Kafka ​​​​​​​3. Java API操作Kafka 4. StructuredStreaming操作Kafka 5. Flink 操作Kafka 技术连载系列,前面内容请参考前面连载11内容:​​​​​​​​​​​​​​Kerberos安全认证-连载11-HBase Kerberos安全配置及访问_IT贫道的博客-CSDN博客 Kafk

    2024年02月12日
    浏览(54)
  • docker-compose部署kafka服务时如何同时允许内外网访问?

    最近在学习kafka相关知识,需要搭建自己的kafka环境。综合考虑后决定使用docker-compose来管理维护这个环境。 Bitnami的yml文件就很不错,这里直接拿来用了。 下载或创建上述yml文件后,启动: 服务启动后,可以进入容器访问kafka服务 使用我们的java客户端连接上述docker容器中的

    2024年02月08日
    浏览(42)
  • 实战指南限时推出,阿里限产Kafka从实战到源码手册,上线即受热捧,访问量破万

    在当前的招聘季节中,我收到了许多关于Kafka的问题,可以看出Kafka在近两年的市场需求中呈现出水涨船高的趋势。 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。它是一个分布式的、支持分区的、多副本的消息系统,可以处理消费者在网站中的所有动

    2024年01月17日
    浏览(36)
  • aws-msk-托管kafka集群的简单使用(VPC内部访问:无验证和SASL认证)

    1.使用控制台创建即可 根据实例类型创建需要至少15分以上,可以提前创建好ec2实例和Secrets Manager,一会会使用到 2. 创建Secrets Manager (使用无认证时请跳过) 官方文档:https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/msk-password.html 必须以AmazonMSK_前缀,并且不能使用默认加密方式

    2024年02月09日
    浏览(38)
  • pve组网实现公网访问pve,访问电脑,访问pve中的openwrt同时经过openwrt穿透主路由地址nginx全公网访问最佳办法测试研究...

    一台路由器 做主路由 工控机 装pve虚拟机 虚拟机里面装一个openwrt, 外网可以直接访问pve,可以访问pve里的openwrt 一台主机 可选择连 有4个口,分别eth0,eth1,eth2,eth3 pve有管理口 这个情况下 ,没有openwrt 直接电脑和pve管理口连在一起就能进pve管理界面 假设pve 的管理口味eth0 openwrt中

    2024年02月13日
    浏览(38)
  • 公网SSH远程访问家中的树莓派[无公网IP]

    转载自cpolar极点云的文章:无公网IP,从公网SSH远程访问家中的树莓派 本篇文章主要讲解树莓派+cpolar组合的作用,可以实现: 如何在 Raspberry Pi 中启用 SSH 如何通过 SSH 连接到 Raspberry Pi设备 如何远程在任何地点访问家中的树莓派 在使用树莓派 (Raspberry Pi) 可以做的所有事情中

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包