Mongo副本节点与docker

时间:2016-04-22 06:41:46

标签: node.js mongodb docker

我使用docker image https://hub.docker.com/_/mongo/设置了一个带有docker的Mongo主节点。 现在我希望仅使用docker在我当前的设置中添加副本节点。 有人可以帮我吗?

3 个答案:

答案 0 :(得分:3)

您可以查看" Deploy a MongoDB Cluster in 9 steps Using Docker"等指南,但这涉及多个工作泊坞服务器。

它使用密钥文件密钥文件在internal authentication的所有节点(openssl rand -base64 741 > mongodb-keyfile)上使用。
这允许创建一个管理员用户,然后添加副本服务器:

docker run \
--name mongo \
-v /home/core/mongo-files/data:/data/db \
-v /home/core/mongo-files:/opt/keyfile \
--hostname="node1.example.com" \
--add-host node1.example.com:${node1} \
--add-host node2.example.com:${node2} \
--add-host node3.example.com:${node3} \
-p 27017:27017 -d mongo:2.6.5 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--replSet "rs0"

在每个副本上,您启动然后检查配置:

 rs.initiate()
 rs.conf()

返回节点1,声明副本:

rs0:PRIMARY> rs.add("node2.example.com")
rs0:PRIMARY> rs.add("node3.example.com")

答案 1 :(得分:0)

使用docker解决此问题有很多步骤:

  1. 切换到db admin
  2.   

    使用管理员

    1. 创建新网站管理员用户
    2. .and()
                .csrf().disable();
      
      1. 创建新的root用户
      2.   

        db.createUser({         用户:" siteRootAdmin",         密码:"密码",         角色:[{role:" root",db:" admin" }]});

        1. 我们现在可以启动副本集:
        2. db.createUser( {
                   user: "siteUserAdmin",
                   pwd: "password",
                   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
                 });
          
          1. 验证初始副本&检查配置:
          2.    rs.initiate()
                {
                         "info2" : "no configuration explicitly specified -- making one",
                         "me" : "node1.example.com:27017",
                         "info" : "Config now saved locally.  Should come online in about a minute.",
                         "ok" : 1
                }
            

答案 2 :(得分:0)

我构建了一个为复制和分片集群提供env变量的映像: khezen/mongo

副本集自动初始化。