0

在我的几个集群上,我看到 zookeeper 返回的主题列表与代理相比存在差异,即以下命令返回不同的(在代理的情况下更少)结果

kafka-topics.sh --zookeeper $zookeeper --list
kafka-topics.sh --bootstrap-server $broker --command-config $clientProperties --list

我已经在多个客户端版本中看到了这种行为,这让我认为问题出在服务器端,但我不知道根本原因是什么或如何解决它。

这给我带来了一个问题,因为我正在使用一些代码,这些代码使用代理进行 GET 操作,如列出主题,以及使用 zookeeper 进行 SET 操作(创建/更新主题)。如果代理未在列表中返回主题,则代码路径会导致针对 zookeeper 的 CREATE 操作,该操作将被拒绝(它将失败)。不幸的是,我不控制代码,所以我不能在那里应用修复。

尽管如此,zookeeper 中的主题列表肯定应该与代理中的列表相同吗?

我正在使用 Kafka (Amazon MSK) 版本 2.2.1

4

1 回答 1

0

感谢这篇文章中的建议。这是解释和解决方案:

命令“kafka-topics.sh --zookeeper”和“kafka-topics.sh --bootstrap-server”返回两个不同的输出,因为后者考虑了配置的 ACL,在这种情况下,阻止访问主题元数据. 因此,通过 zookeeper 的命令提供了完整的主题列表,而通过代理的命令只提供了未配置 ACL 的主题。

为了确保第二个命令按预期工作,您需要显式添加对“DESCRIBE”操作的受影响主题访问权限的 ACL 列表

(^^ 感谢 AWS Support 解决了这个问题)

于 2020-06-26T08:46:05.633 回答