繁体   English   中英

如何将MongoDB集群创建为Docker容器

[英]How to Create MongoDB cluster as Docker Containers

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

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

但是我找不到如何配置配置服务器和查询路由器以及如何通过复制添加分片的方法

提前致谢

我本人使用了本教程: https : //medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.mle6a8wmg

步骤0:建立资料夹

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

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

步骤1:创建密钥文件

以root用户身份创建密钥文件并提供正确的权限:

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

根据安装类型,您可能需要使用/ dockerlocalstorage /来保存证书。 如果权限设置不正确,Mongodb将会抱怨(如果说CIF挂载可能很难实现)

步骤3:设置第一个节点

创建不带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

登录到容器:

docker exec -it mongodb mongo

创建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
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 native mongodb集群(需要Docker> = 1.12),则可以使用docker swarm模式

一下这个不错的教程 这将向您展示如何使用Docker获取mongodb集群,并使用Config Server复制该集群。 基本上,这些步骤是:

  1. 创建多个虚拟机(使用docker-machine或用于创建新docker主机的任何设备)
  2. 创建集群(多台机器的Docker集群)
  3. 创建一个群集覆盖网络来处理所有mongodb流量
  4. 在每个群集节点上创建服务(这将在主机上创建mongodb容器)
  5. 配置您的mongodb副本集

这是一项工作,但值得,因为到那里时,您将在docker swarm上拥有工具来编排mongodb集群。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM