扩展HAProxy运行状况检查来监视MongoDB的主状态和次状态

使用HAProxy跟进有关MongoDB健康检查的问题

如何在HAProxy中构buildMongoDB健康检查?

目前的解决scheme,当重点是确定是否mongo响应,但我试图扩大function来跟踪基于数据库的主要或次要的状态进行跟踪。 我尝试了isMaster的变体,但没有成功。 在mongosniff或wireshark的MongoDB一侧,结果会出现查询parsing错误,并且没有任何响应返回到HAProxy主机。

使用Mongo Wire协议,是否有查询可用来获取给定的MongoDB服务器的状态,而不是只允许跟踪数据库响应的当前解决scheme?

我已经根据MongoDB运行状况检查问题( 如何在HAProxy中构build MongoDB运行状况检查? )和使用isMaster命令( https://docs.mongodb.com/manual/reference/command/ )中的指南创build了此tcp检查isMaster /#isMaster.ismaster )在上面的评论中,由Adam C提到:

tcp-check send-binary 3d00000001000000ffffffffd407000000000000746573742e24636d640000000000ffffffff170000000169734d617374657200000000000000f03f00 tcp-check expect binary 0869736d61737465720001 

发送的二进制文件是这个命令:

 mongo --host <IP> --port <port> --eval 'db.isMaster().ismaster' 

预期的二进制文件是响应文档的“ismaster”元素。 最重要的部分是结束值,如果是主分贝,则为01,如果是次分贝,则为00。

我使用了MongodDB 3.4.4和HAproxy 1.5.18。