我们正在尝试使用Java客户端从Kafka集群中使用。群集位于Jump主机后面,因此唯一的访问方法是通过SSH隧道。但是我们无法读取,因为一旦使用者获取元数据,它将使用原始主机连接到代理。可以覆盖此行为吗?我们可以要求Kafka Client不使用元数据吗?
最佳答案
据我所知。
我需要做类似事情时使用的技巧是:
/etc/hosts
文件,以便将代理n的广告主机名解析为虚拟接口(interface)n的ip。 Es。
卡夫卡经纪人:
虚拟接口(interface):
隧道:
ssh -L 192.168.1.1:9092:broker1.mykafkacluster:9092 jumphost
ssh -L 192.168.1.2:9092:broker1.mykafkacluster:9092 jumphost
/etc/hosts
:如果您像这样配置系统,则应该可以访问Kafka集群中的所有代理。
注意:如果您将Kafka代理配置为发布ip地址而不是主机名,则该过程仍然可以进行,但是您需要为虚拟接口(interface)配置与代理发布的IP地址相同的虚拟接口(interface)。
关于apache-kafka - 通过SSH隧道从Kafka群集中消费,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45854168/