如何创buildMongoDB集群作为Docker容器

我可以使用下面的Docker命令在Mongo上运行单个实例

docker run -it –rm -d -p 27017:27017 –user mongodb mongo:3.4

但我找不到如何configurationconfiguration服务器和查询路由器,以及如何添加与复制碎片

提前致谢

我自己使用这个教程: https : //medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.mle6a8wmg

第0步:创build文件夹

创build文件夹(所有节点上都是本地的):

sudo mkdir -p /dockerlocalstorage/data/mongodb sudo mkdir -p /dockerlocalstorage/backup/mongodb 

第1步:创build密钥文件

以root用户身份创build密钥文件并给予正确的权限:

 sudo su cd /dockersharedstorage/config/mongodb/ openssl rand -base64 741 > mongodb-keyfile chmod 600 mongodb-keyfile sudo chown 999 mongodb-keyfile 

根据安装types,您可能需要使用/ dockerlocalstorage /来保存证书。 Mongodb会抱怨如果权限设置不正确(这可能很难实现让我们说一个CIFS挂载)

第3步:设置第一个节点

创buildmongodb容器没有auth / keyfile:

 docker run --name mongodb \ -v /dockerlocalstorage/data/mongodb:/data/db \ -v /dockersharedstorage/config/mongodb:/opt/keyfile \ --hostname="dock01" \ -p 27017:27017 \ -d mongo 

login容器:

 docker exec -it mongodb mongo 

创buildroot用户,不要忘记更改密码

 use admin db.createUser( { user: "admin", pwd: "PASSWORD", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); db.createUser( { user: "root", pwd: "PASSWORD", roles: [ { role: "root", db: "admin" } ] }); 

退出并取出容器

 exit docker stop mongodb docker rm mongodb 

第4步:启动节点

改变NODE_NR

 docker run \ -d \ --name mongodb \ -v /dockerlocalstorage/data/mongodb:/data/db \ -v /dockerlocalstorage/backup/mongodb:/data/backup \ -v /dockersharedstore/config/mongodb:/opt/keyfile \ --restart=always \ --hostname="dock01" \ -p 27017:27017 mongo \ --keyFile /opt/keyfile/mongodb-keyfile \ --replSet "SET_NAME" 

第5步:安装复制

连接到节点1:

 docker exec -it mongodb mongo use admin db.auth("root", "PASSWORD"); 

初始化复制集:

 rs.initiate() 

使用rs.conf()rs.status()检查副本集

添加其他人:

 rs.add("dock02:27017") rs.add("dock03:27017") 

第6步:设置mongodump

编辑crontab:

 sudo su crontab -l > tempcron 

在cron文件中回显新的cron

 echo "0 4 * * * docker exec -it mongodb mongodump -u root -p PASSWORD -o /data/backup/daily" >> tempcron echo "30 4 * * 5 docker exec -it mongodb mongodump -u root -p PASSWORD -o /data/backup/weekly" >> tempcron 

安装新的cron文件

 crontab tempcron rm tempcron exit 

你可以使用docker群模式,如果你想docker本地MongoDB群集(需要Docker> = 1.12)。

看看这个不错的教程 。 这将向您展示如何使用Docker复制configuration服务器来获取MongoDB群集。 基本上,步骤是:

  1. 创build多个虚拟机(使用docker-machine或任何你用来创build一个新的docker主机)
  2. 创buildswarm(多台机器的docker集群)
  3. 创build一个群集覆盖networking来处理所有的MongoDBstream量
  4. 在每个swarm节点上创build服务(这将在您的主机上创build您的mongodb容器)
  5. configuration您的mongodb副本集

这是一个工作,但值得,因为当你到达那里,你会在docker swarm上安排工具来编排你的mongodb集群。