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-783581.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模板网!

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

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

相关文章

  • kafka 内网外网映射问题

    背景:公司内部 kafka 要与外部单位的系统通过公网联调,公司运维做了映射后网络还是不通 原因:kafka 返回的是 listeners=PLAINTEXT://192.168.1.10:9092 的地址,外部公司访问不到公司内部的地址。 解决方案: listeners 配置一个域名,外部公司的系统的服务器配置该域名到公网的映

    2024年02月05日
    浏览(35)
  • kafka安装配置(包含内外网设置)

    这里使用的kafka安装包:kafka_2.13-3.4.0.tgz kafka版本2.2+的版本,已经不需要依赖zookeeper来查看、创建topic,新版本使用--bootstrap-server替换老版本的--zookeeper-server。  配置完内网可以正常得去消费或者添加kfka数据 如果配置了advertised.listeners就无法正常访问消费 因为我的外网通讯虽然

    2024年02月06日
    浏览(31)
  • kafka连接外网加密内网不加密的配置方式_kafka_server_jaas

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新Linux运维全套学习资料》,

    2024年04月22日
    浏览(29)
  • 记录一次kafka内网向外网提供服务问题解决

    发现还是无法连接,当时考虑到与之前搭建复用的部分只有zk了,然后就重新搭建了一个单节点的zk,将kafka配置改为新搭建的单节点zk后,网络居然通啦,问题解决.

    2024年02月10日
    浏览(53)
  • Kafka公网访问

    kafka机器只有内网IP,没有绑定外网网卡,但是可以在防火墙或通过其他有公网IP的设备上进行公网IP+端口的映射。 kafka集群端口映射后,可以通过外网IP+端口进行数据生产和消费。一帮情况下,只配置9092端口,即使映射到公网,外部也无法访问,因为kafka需要修改其他配置,

    2024年01月23日
    浏览(35)
  • 【Spring连载】使用Spring访问 Apache Kafka(十九)----Apache Kafka Streams支持

    从1.1.4版本开始,Spring for Apache Kafka为Kafka Streams提供了非常好的支持。要从Spring应用程序中使用它,kafka-streams jar必须存在于类路径中。它是Spring for Apache Kafka项目的一个可选依赖项,不会自动下载。 参考Apache Kafka Streams文档建议使用该API的方法如下: 因此,我们有两个主要组

    2024年02月20日
    浏览(32)
  • 通过Java client访问Kafka

    1. Install Kafka 1) download kafka binary from https://kafka.apache.org/downloads 2) extract binary 2. Start Kafka 1) start zookeeper in daemon mode 2) start kafka server in daemon mode 3. Test Kafka 1) create a topic 2) producer events 3) consumer events 4. Access Kafka from Java client 1) download kafka client binary from https://jar-download.com/artifacts

    2024年02月05日
    浏览(35)
  • C++项目中访问kafka的方法

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

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

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

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

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

    2024年02月01日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包