node.js - 如何设置有效的mongo副本集

标签 node.js mongodb docker docker-machine mongodb-replica-set

我想研究一个场景,其中有多个处于复制模式的MongoDB,但在特殊情况下,只有一个工作。我的配置如下。

我在EC2实例上有一个MongoDB容器,我的命令是

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
}

我的问题是针对我的方案的此设置是否正确?如果正确,请您帮我解决。先感谢您

最佳答案

编辑

也许再次开始,有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)

我希望这有帮助。

关于node.js - 如何设置有效的mongo副本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572882/

相关文章:

node.js - VSCode 调试 (F5) React 应用程序给出 SyntaxError : Unexpected identifier

node.js - 蒙哥错误: Econnrefused

node.js - 使用 Google Compute Engine 连接到 Nodejs 中的 mongodb

docker - 使用图像查找 docker 容器?

javascript - Docker 不接受代理 api 服务器

node.js - 如何在 React/Redux 中显示来自 Node/Express 的自定义错误消息?

node.js - 为 RTBkit 使用 node.js 的投标代理

node.js - 来自共享相同引用的两个模式的 Mongoose 查询

docker - 无法建立连接,因为目标机器主动拒绝它。 "Kubernetes on Docker for Windows"

node.js - Hyperledger Fabric Node.js SDK : Issue with offline transaction signatures