【问题标题】:how to change Kafka broker list ip如何更改 Kafka 代理列表 ip
【发布时间】:2018-06-21 07:39:27
【问题描述】:

我有 3 个 Kafka 代理运行在一个隔离的网络区域,我的客户端无法直接连接它们,所以我必须使用 VIP(虚拟 ip)来连接代理。

例如:

我的经纪人的 IP 是:10.5.1.5, 10.5.1.6, 10.5.1.7,

我的 VIP 的 ip 是:200.100.1.5, 200.100.1.6, 200.100.1.7,他们是一对一配对的。

所以当我将bootstrap列表指定为200.100.1.5时,集群响应我混合的VIP和Broker ip,例如:10.5.1.5, 10.5.1.6, 200.100.1.5, 200.100.1.6 ...,那么连接失败,因为我的程序无法到达broker的ip,只能到​​达贵宾。

我目前的配置如下,它同时响应IP和VIP:

listeners=INTERNAL://:9092,EXTERNAL_PLAINTEXT://:8080

advertised.listeners=EXTERNAL_PLAINTEXT://200.100.1.5:8080,INTERNAL://10.5.1.5:9092

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT

inter.broker.listener.name=INTERNAL

请问如何让 Kafka 只响应 VIP 列表。

我已经找到答案了,可能是这样的:

advertised.listeners=PLAINTEXT://200.100.1.5:8080
listeners=PLAINTEXT://10.5.1.5:9092
And remove the listener.security and inter.broker.

【问题讨论】:

  • 您的虚拟 IP 是在托管 kafka 的节点内实现的,还是在一些外部代理/路由器内实现的?即你的第一个 kafka 节点是否知道它在 200.100.1.5 上?

标签: apache-kafka


【解决方案1】:

您可以使用名为 advertised.listeners 的代理设置告诉您的代理在其对客户端的响应中包含不同的 IP/主机名。

advertised.listeners:

监听器发布到 ZooKeeper 供客户端使用(如果不同) 比listeners 配置属性。在 IaaS 环境中,这可能 需要不同于代理绑定的接口。如果 如果未设置,则将使用 listeners 的值。不像 listeners 发布 0.0.0.0 元地址无效。

在您的示例中,对于您可以拥有的第一个经纪人:

advertised.listeners=PLAINTEXT://200.100.1.5:9092
listeners=PLAINTEXT://10.5.1.5:9092

【讨论】:

  • 为此更改生产者代码是一个非常糟糕的主意。如果你这样做,只有你被黑的客户端才能连接到你的集群。我列出的代理设置正是为此而设计的。
  • 如果您看到异常,请在此处粘贴。我发布的 sn-p 只是一个示例,这两个设置的确切值取决于您的配置,但使用它们,您可以实现您的要求。请花时间阅读advertised.listenerslisteners 的文档并了解它们的工作原理。
  • 你的问题还不清楚。您说您的客户连接良好,但与哪个听众 EXTERNAL_PLAINTEXTINTERNAL ?我猜您希望您的客户在 8080 上使用 EXTERNAL_PLAINTEXT,而在 9092 上的 INTERNAL 上只有代理间流量。您能确保您的客户确实连接到 8080 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2021-05-04
相关资源
最近更新 更多