Это не основной вопрос, просто спрашивая о кластере монго. На мой взгляд, это не дубликат. У меня есть кластер mongodb с 3 узлами, и мой URL-адрес представляет собой что-то вроде следующих строк в файле конфигурации PlayFramework.
mongodb.uri = "mongodb://mongodb1:27017,mongodb2:27017,mongodb3:27017/myproj"
По умолчанию, когда реплика настроена, все операции чтения и записи происходят только на основном сервере, и это то, что я хочу. Однако я хочу, чтобы чтение шло к вторичному, когда не осталось основного, то есть когда 2 узла выходят из строя, не останется основного и только один дополнительный.
Я не хочу изменять свой код для достижения этого для каждого запроса на чтение. Я пробовал следующее на вторичном узле, но это не помогает
db.getMongo().setReadPref('primaryPreferred')
Что именно мне нужно сделать, чтобы это сработало?
primaryPreferred
предпочтение чтения (с необязательнымmaxStalenessSeconds
в MongoDB 3.4+) — это то, что вам нужно. Однако вам необходимо установить этот параметр с точки зрения драйвера или приложения (т. е. в конфигурации или приложении PlayFramework). Установка предпочтения чтения в оболочкеmongo
влияет только на текущий сеанс оболочки. - person Stennie   schedule 06.07.2017replicaSet=...
(который должен соответствовать настроенному имени набора реплик), поэтому вы, вероятно, получаете прямое подключение к первому указанному хосту, а не подключение набора реплик с отработкой отказа. Какой драйвер и версию MongoDB вы используете и какую версию Play Framework? Для получения дополнительной информации о формате и параметрах строки подключения MongoDB см.: docs.mongodb.com/ руководство/ссылка/строка-подключения. - person Stennie   schedule 06.07.2017replicaSet
— это имя/_id набора реплик, которые должны быть общими для всех членов одного набора: docs.mongodb.com/manual/reference/replica-configuration/. Список членов набора реплик, который вы указываете в строке подключения, — это начальный список, используемый для обнаружения текущей конфигурации набора реплик (но только если вы подключаетесь в режиме набора реплик, указав имяreplicaSet
). Можете ли вы подтвердить версии используемых вами драйверов PlayFramework и MongoDB? Это упростит проверку того, что мы говорим об одной и той же конфигурации. - person Stennie   schedule 06.07.2017