当前位置: 首页 > 知识库问答 >
问题:

如何生成从公共计算机到专用网络上的Kafka安装的消息?

姜兴业
2023-03-14

我的Kafka服务器运行的系统有两个NIC,一个具有公共IP(135.220.23.45),另一个具有私有IP(192.168.1.14)。私有网卡连接到总共由7台机器组成的子网(地址均为192.168.1.xxx)。Kafka已作为使用HDP的服务安装,并使用zookeeper.connect=192.168.1.14:2181和listeners=plaintext://192.168.1.14:6667配置。我已经使用[bin/kafka-console-consumer.sh--bootstrap-server 192.168.1.14:6667--topic test--from-beginition]在承载kafka服务器的系统上启动了一个使用者。

当我在专用子网上的任何机器上启动生产者(使用[bin/kafka-console-producer.sh--broker-list 192.168.1.14:6667--topic test])时,使用者通常会接收到消息。

我想在公共系统上启动生产者,并通过在kafka服务器上运行的消费者接收消息。我认为这可以通过IP伪装和将所有外部请求转发到135.220.23.45:15501(我选择15501接收kafka消息)到192.168.1.14:6667来实现。为此,我在Firewalld上设置了此端口转发规则:[port=15501:proto=tcp:toport=6670:toaddr=192.168.1.14]。

但是,这似乎不起作用,因为当我使用[bin/kafka-console-producer.sh--broker-list 135.220.23.45:15501-topic]在外部系统上启动一个生产者时,消费者无法接收到消息。

我尝试了侦听器和Advertised.listeners的不同kafka配置设置,但都不起作用。任何帮助都将不胜感激。

共有1个答案

东方旺
2023-03-14

您需要为您的内部和外部通信定义不同的端点,以便使其工作。按照目前的配置,当您连接到135.220.23.45:15501时,Kafka会回复“请在192.168.1.14:6667与我通话,从外部无法到达,从那里到外面的一切都失败了。

在KIP-103中,Kafka被扩展以满足这些场景,它允许您定义多个端点。完全披露,我还没有尝试过这个,但是沿着下面的路线至少应该让你开始正确的道路。

advertised.listeners=EXTERNAL://135.220.23.45:15501,INTERNAL://192.168.1.14:6667
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT

更新:

null

# internal ip: 172.31.61.130
# external ip: 184.72.211.109

listeners=INTERNAL://:9092,EXTERNAL_PLAINTEXT://:9094
advertised.listeners=INTERNAL://172.31.61.130:9092,EXTERNAL_PLAINTEXT://184.72.211.109:9094
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT
inter.broker.listener.name=INTERNAL

null

# Create topic 
kafka-topics --create --topic testtopic --partitions 9 --replication-factor 3 --zookeeper 127.0.0.1:2181

# Produce messages from internal machine
[ec2-user@ip-172-31-61-130 ~]$ kafka-console-producer --broker-list 127.0.0.1:9092 --topic testtopic                                                                                                               
>internal1
>internal2
>internal3

# Produce messages from external machine
➜  bin ./kafka-console-producer --topic testtopic --broker-list 184.72.211.109:9094
external1
external2
external3

# Check topic
[ec2-user@ip-172-31-61-130 ~]$ kafka-console-consumer --bootstrap-server 172.31.52.144:9092 --topic testtopic --from-beginning
external3
internal2
external1
external2
internal3
internal1
 类似资料:
  • 问题内容: 我需要知道JDK在我的计算机上的位置。 在cmd中运行时,它将版本显示为“ 1.6.xx”。要在我尝试使用的计算机上查找此SDK的位置,但仅显示“ JAVA_HOME”(因为我的环境变量中未设置“ JAVA_PATH”变量)。 问题答案: 如果你使用的是Linux / Unix / Mac OS X: 尝试这个: 应该输出确切的位置。 之后,你可以自己设置环境变量。 在我的计算机上(M

  • 本节部分知识点来自《计算机网络(第 7 版)》 计算机网络体系结构: 各层作用及协议 分层 作用 协议 物理层 通过媒介传输比特,确定机械及电气规范(比特 Bit) RJ45、CLOCK、IEEE802.3(中继器,集线器) 数据链路层 将比特组装成帧和点到点的传递(帧 Frame) PPP、FR、HDLC、VLAN、MAC(网桥,交换机) 网络层 负责数据包从源到宿的传递和网际互连(包 Pack

  • 计算机网络.md

  • 概述 IP 数据报格式 IP 地址编址方式 1. 分类 2. 子网划分 3. 无分类 地址解析协议 ARP 网际控制报文协议 ICMP 1. Ping 2. Traceroute 虚拟专用网 VPN 网络地址转换 NAT 路由器的结构 路由器分组转发流程 路由选择协议 1. 内部网关协议 RIP 2. 内部网关协议 OSPF 3. 外部网关协议 BGP 概述 因为网络层是整个互联网的核心,因此应当

  • OSI 层 功能 应用层 网络进程到应用程序。针对特定应用规定各层协议、时序、表示等,进行封装 。在端系统中用软件来实现,如HTTP等 表示层 数据表示形式,加密和解密,把机器相关的数据转换成独立于机器的数据。规定数据的格式化表示 ,数据格式的转换等 会话层 主机间通讯,管理应用程序之间的会话。规定通信时序 ;数据交换的定界、同步,创建检查点等 传输层 在网络的各个节点之间可靠地分发数据包。所有传

  • HTTP最强资料大全