kafka群集不可用检测(3个代理)

zy1mlcev  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(269)

我有一个带有3个代理的apachekafka集群,我想检测集群何时不再可用,以便将客户机连接切换到第二个复制集群(如下所述:如何使用kafka中的两个不同集群?)。
集群上的所有主题都有一个复制因子3,因此如果单个节点出现故障,集群中的所有数据都应可用。
在这种情况下,如果2个代理脱机,则集群可能被视为不可用。我正在使用confluent.kafka nuget包(https://www.nuget.org/packages/confluent.kafka/)创建.net客户端。但是,使用producer和consumer客户端功能,只能检测所有代理何时关闭(通过检查本地\u allbrokersdown错误代码)。
一种解决方案是让一个生产者在一个主题中连续生成消息,以便“heardbeat”集群。当复制因子为3时,我将特定主题的min.insync.replicas设置为2。根据规范,如果生产者使用ack=all,那么在尝试发布消息时,我应该会收到一个notenoughreplicas错误代码。
实际上,当两个代理脱机时,我的客户机应用程序只连接到剩下的一个代理,而这个代理不能自己创建集群。如果我在这个剩余的代理上使用kafkamanager,它仍然声明它已连接到另一个代理,并且该主题有2个同步副本。因此,.net客户端不会收到notenoughreplicas错误代码(只有来自其余联机代理的本地\u timedout错误代码)。这可能是这样设计的,以避免分裂的大脑。。。
有人知道我如何监视这样一个集群的可用性吗?在这个特定的情况下,当两个代理宕机时?
谢谢您!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题