我们如何在防火墙/代理后面配置 kafka 生产者?

Posted

技术标签:

【中文标题】我们如何在防火墙/代理后面配置 kafka 生产者?【英文标题】:How can we configure kafka producer behind a firewall/proxy? 【发布时间】:2017-12-31 00:56:41 【问题描述】:

我们在 AWS 上安装了一个单节点 kafka。我们能够在这个环境中运行 kafka 生产者和消费者。但是,当我们的客户尝试(在 AWS 环境之外)向我们的 kafka 代理发送消息时,他们的消息卡在了防火墙上。

所以客户端 kafka 生产者设置在防火墙/代理后面,我们的客户端在绕过代理后如何通过 kafka 发送消息。

【问题讨论】:

【参考方案1】:

首先检查问题确实是客户端防火墙问题,并且与不正确的代理设置(例如使用私有 AWS IP 作为广告侦听器)或 AWS 安全规则(不允许外部计算机连接到端口 9092/9093)无关。最简单的检查方法是从没有防火墙的外部主机发布自己。

接下来检查他们是否允许端口 9092(或您用于 Kafka 的任何端口)上的 TCP 连接通过他们的客户端防火墙。

如果无法在防火墙中打开此端口,那么您可以考虑将数据发送到端口 80 或 443 上的 TCP 代理(如 haproxy),因为这些帖子通常是打开的。

如果这仍然不起作用,请考虑使用 HTTP(S) 代理(如 Confluent REST 代理)进行发布,因为它使用标准 HTTP(S) 端口和协议,可以穿越大多数客户端防火墙。

【讨论】:

我们能够在没有防火墙的情况下成功地从外部主机发布数据。你能解释一下我们如何将数据发送到端口 80 或 443 上的 TCP 代理(如 haproxy) 与此类似,但侦听(绑定)到端口 80 或 443,然后在后端连接到 9092 ***.com/questions/45216724/…,但是您必须在 kafka server.properties 配置文件中设置广告的侦听器端口成为haproxy的ip和端口 我们可以在将消息发布到 kafka 代理时设置任何代理设置吗? 不确定你在问什么。 Producer 必须像 Kafka 服务器一样指向 Haproxy 服务器 所以我们应该在 kafka producer 和 kafka Broker 之间创建一个 HAproxy 服务器,对吧?

以上是关于我们如何在防火墙/代理后面配置 kafka 生产者?的主要内容,如果未能解决你的问题,请参考以下文章

如何在企业防火墙后面使用 cygwin

Kafka 如何在代理之间分配主题分区

即使我在生产者配置中指定了压缩类型,kafka 代理也没有压缩我更大的消息

kafka常用生产者消费者配置

确保已使用 REST 代理从 Kafka 主题读取所有消息

Prometheus 如何刮取 Kafka 主题?