[英]How to Create MongoDB cluster as Docker Containers
I can able to run single instance on Mongo using the following Docker command 我可以使用以下Docker命令在Mongo上运行单个实例
docker run -it --rm -d -p 27017:27017 --user mongodb mongo:3.4 docker run -it --rm -d -p 27017:27017 --user mongodb mongo:3.4
But I can't find out how to configure Config Server and Query Router and also how add shards with Replication 但是我找不到如何配置配置服务器和查询路由器以及如何通过复制添加分片的方法
Thanks in Advance 提前致谢
I used this tutorial myself: https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.mle6a8wmg 我本人使用了本教程: https : //medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.mle6a8wmg
create folders (local on all nodes): 创建文件夹(在所有节点上都是本地的):
sudo mkdir -p /dockerlocalstorage/data/mongodb
sudo mkdir -p /dockerlocalstorage/backup/mongodb
sudo mkdir -p /dockersharedstorage/config/mongodb/
create keyfile as root user and give correct permissions: 以root用户身份创建密钥文件并提供正确的权限:
sudo su
cd /dockersharedstorage/config/mongodb/
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
sudo chown 999 mongodb-keyfile
Depending on the mount type you might need to use /dockerlocalstorage/ to keep the certs. 根据安装类型,您可能需要使用/ dockerlocalstorage /来保存证书。 Mongodb will complain if the permissions are not set correctly (which could be harder to achieve on lets say a cifs mount) 如果权限设置不正确,Mongodb将会抱怨(如果说CIF挂载可能很难实现)
create mongodb container without auth/keyfile: 创建不带auth / keyfile的mongodb容器:
docker run --name mongodb \
-v /dockerlocalstorage/data/mongodb:/data/db \
-v /dockersharedstorage/config/mongodb:/opt/keyfile \
--hostname="dock01" \
-p 27017:27017 \
-d mongo
log in to container: 登录到容器:
docker exec -it mongodb mongo
create root users, dont forget to change the passwords 创建root用户,不要忘记更改密码
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 and remove the container 退出并取出容器
exit
docker stop mongodb
docker rm mongodb
change NODE_NR : 更改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"
connect to node 1: 连接到节点1:
docker exec -it mongodb mongo
use admin
db.auth("root", "PASSWORD");
initialize the replication set: 初始化复制集:
rs.initiate()
Check the replica set with: rs.conf()
or rs.status()
使用以下命令检查副本集: rs.conf()
或rs.status()
add others: 添加其他人:
rs.add("dock02:27017")
rs.add("dock03:27017")
edit crontab: 编辑crontab:
sudo su
crontab -l > tempcron
echo new cron into cron file 将新的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
install new cron file 安装新的cron文件
crontab tempcron
rm tempcron
exit
You could use docker swarm mode if you want docker native mongodb cluster (Docker >= 1.12 needed). 如果要使用docker native mongodb集群(需要Docker> = 1.12),则可以使用docker swarm模式 。
Have a look at this nice tutorial . 看一下这个不错的教程 。 This will show you how to get a mongodb cluster with docker, replicated with Config Server. 这将向您展示如何使用Docker获取mongodb集群,并使用Config Server复制该集群。 Basically, the steps are: 基本上,这些步骤是:
docker-machine
or whatever you use to create a new docker host) 创建多个虚拟机(使用docker-machine
或用于创建新docker主机的任何设备) This is a bit of work, but worth it, as when you get there, you'll have tools on docker swarm
to orchestrate your mongodb cluster. 这是一项工作,但值得,因为到那里时,您将在docker swarm
上拥有工具来编排mongodb集群。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.