3

我正在尝试设置一个代理服务器(在 java 中首选),它可以将我的连接流传递给 kafka 代理。

Client (Consumer/Producer) <--> [PROXY SERVER] <--> Kafka Broker

我的用例是使用来自 kafka 的数据,但配置参数应该代理到 kafka 代理。

例如bootstrap.servers=xx.xx.xx.xx:9091, topic=<encrypted-topic>

端口 9091 是代理服务器,我将主题解密为原始主题并将连接流传递给 kafka。

代理层的工作是检查加密的主题是否存在于主题的内存映射中,如果是,则解密该主题并连接到 kafka 代理。

4

1 回答 1

0

您可以在 kafka 集群前使用 HAproxy 作为代理。

listen kafka
    bind *:8888
    mode tcp
    balance roundrobin
    server  kafka1 127.0.0.1:8881 check
    server  kafka2 127.0.0.1:8883 check
    server  kafka3 127.0.0.1:8885 check   

listen kafka1
    bind *:8881
    mode tcp
    server  kafka1  10.10.0.1:45677 check

listen kafka2
    bind *:8883
    mode tcp
    server  kafka1 10.10.0.2:45677 check

listen kafka3
    bind *:8885
    mode tcp
    server  kafka1 10.10.0.3:45677 check

上面是一个 3 节点的 kafka 集群。客户端只需将 LBs ip:8888 设置为 boostrap 服务器。然后客户端将以编程方式获取有关 lb_iP:8881 ,lb_iP:8883,lb_iP:8885 的元数据,并相应地创建相应的引导服务器连接路径。
通过这种方式,我们可以对底层的真实代理 ips 和端口进行修改,而无需客户端更改配置。
参考:ssl 设置指南 谢谢

于 2022-01-16T06:26:11.337 回答