如何创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群集。 基本上,步骤是:
- 创build多个虚拟机(使用
docker-machine
或任何你用来创build一个新的docker主机) - 创buildswarm(多台机器的docker集群)
- 创build一个群集覆盖networking来处理所有的MongoDBstream量
- 在每个swarm节点上创build服务(这将在您的主机上创build您的mongodb容器)
- configuration您的mongodb副本集
这是一个工作,但值得,因为当你到达那里,你会在docker swarm
上安排工具来编排你的mongodb集群。