当前位置: 首页 > 知识库问答 >
问题:

在docker swarm中启动MongoDB副本集

柳杰
2023-03-14
version: "3.3"
services:
    cfg1-r1:
        image: mongo:3.2
        deploy:
            placement:
                constraints: [node.hostname == ram-ThinkPad-E470]
            restart_policy:
                condition: on-failure
        volumes:
            - /opt/mongoshard/tmp:/var/lib/mongodb
            - /opt/mongoshard/mongod.conf:/etc/mongod.conf
        networks:
            - mongoshard  
        command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]

    cfg2-r1:
        image: mongo:3.2
        deploy:
            placement:
                constraints: [node.hostname == prasanna-ThinkPad-E470]
            restart_policy:
                condition: on-failure
        volumes:
            - /opt/mongoshard/tmp:/var/lib/mongodb
            - /opt/mongoshard/mongod.conf:/etc/mongod.conf
        networks:
            - mongoshard
        command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]
networks:
    mongoshard:
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
net:
  port: 27017
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
{
        "ok" : 0,
        "errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
        "code" : 93,
        "codeName" : "InvalidReplicaSetConfig"
}

编辑:我认为问题是cfg1-r1和cfg2-r2服务不在同一网络中。当我部署堆栈文件时,会创建一个名为mongo_mongoshard(overlay)的网络,当我检查它时,它只显示cfg1-r1作为其容器列表中的容器。

共有1个答案

商琛
2023-03-14

您的网络必须处于覆盖模式,以便在多台主机之间共享专用网络:

docker network create --driver overlay --attachable mongoshard

然后在你的作曲中:

networks:
  mongoshard:
    external: true

为了副本作品,你需要添加至少两个成员:

rs.initiate({ _id: "rs0", members: [{ _id: 1, host: "cfg1-r1:27017" }, { _id: 2, host: "cfg1-r2:27017" }], settings: { getLastErrorDefaults: { w: "majority", wtimeout: 30000 }}});
 类似资料:
  • 我在中有一组选项卡,每个选项卡都包含自己的片段。当我尝试通过从该片段中启动一个新活动并使用方法时,我的应用程序强制关闭。 在四处寻找了一段时间后,我找到了一个名为startActivityFromFragment的方法的一两个引用,但在搜索了大约一个小时后,我找不到任何关于如何使用它或这是否是我应该使用的方法的解释或示例。 我想我要问的是,从一个活动启动一个新活动和从一个片段启动一个新活动之间是否

  • 我的服务器工作得很好,当我运行节点app.js.然而,我试图使用nodemer来运行我的服务器,它不启动。 npm start显示以下错误: 我的包裹。json: 我的app.js 我已经尝试过: 删除node_modules并运行npm安装 删除package-lock.json,运行npm缓存清理--force并运行npm安装 删除所有文件,重复安装过程 添加npm到路径 这个问题的其他解决方

  • 只读操作: 有没有办法有一个MongoDB副本集,但要使连接到的框上的MongoDB实例成为被查询的MongoDB? 我在AWS负载平衡器后面有三个EC2实例。 在每个EC2实例上运行MongoDB,它是副本集的一部分。 我在nodeJS上有expressendpoint,我连接到副本集,如下所示 我希望在MongoDB副本集的所有三个实例上均匀分布查询负载,而不是默认情况下将所有查询路由到定义了

  • 我想从配置文件中部署一个mongodb副本集,该副本集包含1个主副本和2个次副本,如下所示: 主节点的第一个配置文件 我也得到了同样的错误 我不知道我需要做什么esle配置来解决这个问题,请帮助我,非常感谢。

  • 本文向大家介绍CentOS 6.4创建Mongodb副本集,包括了CentOS 6.4创建Mongodb副本集的使用技巧和注意事项,需要的朋友参考一下 MongoDB是一个开源的non-SQL数据库引擎。 MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。 副本集可以使在节点发生故障时还能提供对您的数据的访问。 安装MongoDB 1.确保在副本集的每个成员设置好hostn

  • 我们有一个mongodb副本集,其中包含两个实例(127.0.0.1:27017-主要,127.0.0.1:27018-次要)和一个仲裁器(127.0.0.1:27019)。当我使用rs.steppdown(60)从主实例中退出时,它应该成为辅助实例,辅助实例应该成为主实例,所有写操作都应该在辅助实例中发生(退出后的主实例)。但在卸任后,我遇到了一个异常“无法将数据写入传输连接:远程主机强制关闭了