我可以使用以下Docker命令在Mongo上运行单个实例
docker run -it --rm -d -p 27017:27017 --user mongodb mongo:3.4
但我无法了解如何配置Config Server和查询路由器以及如何使用Replication添加分片
提前致谢
我自己使用本教程:https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.mle6a8wmg
创建文件夹(在所有节点上本地):
sudo mkdir -p /dockerlocalstorage/data/mongodb
sudo mkdir -p /dockerlocalstorage/backup/mongodb
sudo mkdir -p /dockersharedstorage/config/mongodb/
Run Code Online (Sandbox Code Playgroud)
以root用户身份创建密钥文件并提供正确的权限:
sudo su
cd /dockersharedstorage/config/mongodb/
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
sudo chown 999 mongodb-keyfile
Run Code Online (Sandbox Code Playgroud)
根据安装类型,您可能需要使用/ dockerlocalstorage /来保留证书.如果权限设置不正确,Mongodb会抱怨(这可能更难实现,比如cifs mount)
在没有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
Run Code Online (Sandbox Code Playgroud)
登录到容器:
docker exec -it mongodb mongo
Run Code Online (Sandbox Code Playgroud)
创建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" } ]
});
Run Code Online (Sandbox Code Playgroud)
退出并删除容器
exit
docker stop mongodb
docker rm mongodb
Run Code Online (Sandbox Code Playgroud)
改变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"
Run Code Online (Sandbox Code Playgroud)
连接到节点1:
docker exec -it mongodb mongo
use admin
db.auth("root", "PASSWORD");
Run Code Online (Sandbox Code Playgroud)
初始化复制集:
rs.initiate()
Run Code Online (Sandbox Code Playgroud)
检查副本集:rs.conf()或rs.status()
添加其他人:
rs.add("dock02:27017")
rs.add("dock03:27017")
Run Code Online (Sandbox Code Playgroud)
编辑crontab:
sudo su
crontab -l > tempcron
Run Code Online (Sandbox Code Playgroud)
将新的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
Run Code Online (Sandbox Code Playgroud)
安装新的cron文件
crontab tempcron
rm tempcron
exit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6988 次 |
| 最近记录: |