Последующий вопрос относительно проверки работоспособности MongoDB с помощью HAProxy
Как создать проверку работоспособности MongoDB в HAProxy?
Текущее решение работает хорошо, когда основное внимание уделяется определению того, отвечает ли mongo, но я пытаюсь расширить функциональность для отслеживания на основе статуса базы данных для первичной или вторичной. Я безуспешно пробовал варианты isMaster. На стороне MongoDB с mongosniff или wirehark результаты воспринимаются как ошибка синтаксического анализа запроса, и на хост HAProxy не отправляется никакой ответ.
Имеется ли доступный запрос для получения статуса данного сервера MongoDB при использовании проводного протокола Mongo вместо текущего решения, которое позволяет отслеживать только ответ базы данных?
Я создал эту проверку tcp, следуя руководству из вопроса проверки работоспособности MongoDB (Как создать проверку работоспособности MongoDB в HAProxy?) и используя команду isMaster (https://docs.mongodb.com/manual/reference/command/isMaster/#isMaster.ismaster) в mongodb, как упоминалось Адамом C в комментарии выше:
tcp-check send-binary 3d00000001000000ffffffffd407000000000000746573742e24636d640000000000ffffffff170000000169734d617374657200000000000000f03f00
tcp-check expect binary 0869736d61737465720001
Отправленный двоичный файл - это команда:
mongo --host <IP> --port <port> --eval 'db.isMaster().ismaster'
Ожидаемый двоичный файл - это элемент ismaster документа ответа. Важной частью является конечное значение, которое равно 01, если это первичный db, и 00, если он вторичный.
Я использовал MongodDB 3.4.4 и HAproxy 1.5.18.