如何用haproxy平衡Kafka胸带?

oipij1gg  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(604)

我有一个kafka集群,由3台运行在aws上的机器组成:kafka1到kafka3
我使用的是新款Kafka消费者(>0.8)。
我知道kafka客户机连接到一个kafka服务器,获取服务器元数据,然后直接连接到代理。
我想确保在代理失败的情况下,客户机仍然能够获取元数据。
为此,我有一个haproxy负载平衡器,配置如下:

listen kafka
      bind *:9092
      mode tcp
      balance roundrobin
      no option clitcpka
      option forceclose
      timeout check 5s
      server kafka1 kafka1.example.com:9092 check inter 3s fastinter 1s
      server kafka2 kafka2.example.com:9092 check inter 3s fastinter 1s
      server kafka3 kafka3.example.com:9092 check inter 3s fastinter 1s

其思想是,如果其中一个代理失败,它将从循环中移除,并从其他代理中获取元数据。它还允许我透明地向集群添加更多代理。
然而,这引起了我的Kafka客户的问题。pipelinedb直接拒绝使用主题,python的合流kafka库也是如此。Kafka卡特消费,但一段时间后开始给出错误:

% ERROR: Local: Broker transport failure: kafka.example.com:9092/bootstrap: Receive failed: Disconnected
% ERROR: Local: Broker transport failure: kafka.example.com:9092/bootstrap: Connection closed

我在网上找不到任何关于如何平衡kafka引导程序的信息。另一种方法是只配置一个具有多个a记录的dns条目,但是我遇到了一个代理关闭的问题。

jmp7cifd

jmp7cifd1#

只需将所有三个引导服务器指定为逗号分隔的列表。如果其中一个出现故障,它只会向下一个查询元数据。

相关问题