У нас есть репликационный набор с двумя серверами в строке подключения, с параметром secondPreferred. В случае простоя вторичного сервера мы хотим, чтобы MongoDB автоматически подключался к первичному. Это хорошо работает в «нормальных» случаях простоя, однако, похоже, MongoClient всегда подключается к обоим членам репликации. Даже если он сначала подключается к первому вторичному устройству, он также подключается к первичному, что необходимо только для запросов на обновление.
Проблема заключается в том, что у первичного сервера истекло время ожидания соединения: веб-сайт пытается установить соединение в течение 60 секунд, прежде чем он продолжает обслуживать вторичный сервер. Также это кажется бесполезными накладными расходами.
Я не проверял это, но я думаю, что то же самое с primaryPreferred.
Можно ли изменить это поведение?
Конфигурация:
PHP MongoClient 1.5.7
Connection string: mongodb://192.168.1.24:27017,192.168.1.25:27017'
Parameters:
readPreference: secondaryPreferred
replicaSet: dnm
Servers: primary, secondary, arbiter
Задача ещё не решена.
Других решений пока нет …