通过ssh隧道从kafka集群消费

1wnzp6jl  于 2021-06-07  发布在  Kafka
关注(0)|答案(4)|浏览(701)

我们正在尝试使用java客户机从kafka集群消费。集群位于跳转主机后面,因此访问的唯一方法是通过ssh隧道。但我们无法读取,因为一旦使用者获取元数据,它就会使用原始主机连接到代理。这种行为能被推翻吗?我们可以要求Kafka客户机不要使用元数据吗?

rqmkfv5c

rqmkfv5c1#

对我来说最好的办法就是 kafkatunnel (https://github.com/simple-machines/kafka-tunnel). 很有魅力。

nfg76nw0

nfg76nw02#

如果代理播发主机名,则实际上不必添加虚拟接口来通过ssh隧道访问代理。在中添加一个hosts条目就足够了 /etc/hosts 并将隧道绑定到添加的名称。
假设 broker.kafkacluster 是代理的advised.hostname: /etc/hosts :
127.0.2.1 broker.kafkacluster
隧道: ssh -L broker.kafkacluster:9092:broker.kafkacluster:9092 <brokerhostip/name>

jvidinwx

jvidinwx3#

试试这样的换向:

sshuttle -r user@host broker-1-ip:port broker-2-ip:port broker-3-ip:port

当然,代理列表取决于播发的侦听器代理设置。

bybem2ql

bybem2ql4#

据我所知不是。
当我需要做类似的事情时,我使用的技巧是:
为每个kafka代理设置一个虚拟接口
打开到每个代理的隧道,以便代理n绑定到虚拟接口n
配置您的 /etc/hosts 文件,以便将broker n的播发主机名解析为虚拟接口n的ip。
锿。
Kafka经纪人:
broker1(广告名为broker1.mykafkacluster)
broker2(广告名为broker2.mykafkacluster)
虚拟接口:
veth1(192.168.1.1)
veth2(192.168.1.2)
隧道:
经纪人1: ssh -L 192.168.1.1:9092:broker1.mykafkacluster:9092 jumphost 经纪人2:
ssh -L 192.168.1.2:9092:broker1.mykafkacluster:9092 jumphost /etc/hosts :
192.168.1.1代理1.mykafkacluster
192.168.1.2经纪人2.mykafkacluster
如果您这样配置您的系统,您应该能够访问kafka集群中的所有代理。
注意:如果您将kafka代理配置为播发ip地址而不是主机名,则该过程仍然可以工作,但您需要使用代理播发的相同ip地址配置虚拟接口。

相关问题