0

Я хотел бы изучить сценарий, в котором есть несколько MongoDB в режиме реплики, но в специальном случае работает только один. Моя конфигурация похожа на следующую.Как установить действительный репликатор mongo

У меня есть контейнер MongoDB на экземпляре EC2, моя команда

sudo docker run \ 
--name mongo \ 
-v /home/core/mongo-files/data:/data/db \ 
-p 27018:27017 -d mongo:3.2.1 \ 
--smallfiles \ 
--replSet "rs0" 

то у меня есть 2 приложения развиваемого Nodejs, которые используют эту базу данных. Они соединяются с этой соединительной строкой:

uri: 'mongodb://192.168.0.100:27018/testmongo?replicaSet=rs0'

К сожалению, одно из моих приложений работает хорошо, а другое нет. Сообщение об ошибке при попытке подключения базы данных является

MongoDB connection error: MongoError: no valid replicaset members found

У меня есть статус проверки, выполнив эти команды rs.slaveOk(), rs.status() то у меня есть этот

rs0:PRIMARY> rs.status() 
{ 
    "set" : "rs0", 
    "date" : ISODate("2016-09-19T11:50:59.947Z"), 
    "myState" : 1, 
    "term" : NumberLong(2), 
    "heartbeatIntervalMillis" : NumberLong(2000), 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "02aaebd39d4b:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 1194663, 
      "optime" : { 
       "ts" : Timestamp(1474285564, 1), 
       "t" : NumberLong(2) 
      }, 
      "optimeDate" : ISODate("2016-09-19T11:46:04Z"), 
      "electionTime" : Timestamp(1473091196, 1), 
      "electionDate" : ISODate("2016-09-05T15:59:56Z"), 
      "configVersion" : 1, 
      "self" : true 
     } 
    ], 
    "ok" : 1 
} 

Мой вопрос, если эта установка для моего сценария является правильным или нет ? Если это правильно, не могли бы вы помочь мне исправить это. Спасибо заранее

+0

Первое, что я хотел бы проверить, это то, что один элемент работает в списке посещений приложений. Если другие члены, которые в настоящее время опущены/удалены из набора, являются единственными в списке посещений, то ваше приложение не сможет найти набор. –

+0

, так что мои настройки неправильные? должен ли я создать больше контейнеров для манго (скажем, 3 экземпляра), тогда я закрыл и сохранил один? – Bryan

+1

Можете ли вы разместить строки подключения к приложениям? Нам нужно будет убедиться, что они понимают, есть ли проблема с семенниками. –

ответ

0

Edited

Может снова начать есть 3 ступени для запуска реплики

1) начиная экземпляры mongod в качестве реплики

mongod --port 27018 --replSet rs0 --dbpath /home/core/mongo-files/data:/data/db1 --logpath your/log/path --smallfiles --fork --logappend 
mongod --port 27017 --replSet rs0 --dbpath /home/core/mongo-files/data:/data/db2 --logpath your/log/path --smallfiles --fork --logappend 

2) Подключитесь к mongodb и инициируйте реплику и штрафа в mongods включены в качестве реплики

rs.initiate(
    { 
     _id: "rs0", 
members: [ 
     { _id: 0, host : "Your.Machine's.LocalHost:27017" }, 
     { _id: 1, host : "Your.Machine's.LocalHost:27018" } 
     ] 
    } 
) 

3) фактически инициирует реплику с командой ниже.

rs.initiate(rs0) 

Надеюсь, это поможет.

+0

да я сделал это, результат 'rs0: PRIMARY> rs.status()', есть член – Bryan

+0

Я отредактировал комментарий выше, я не уверен, что это поможет, но я надеюсь, что это так. –