Mongodb学习笔记(一) 使用docker进行Mongodb集群的安装部署

Mongodb集群的安装部署

参考资料:
https://linux.cn/article-4832-1-rel.html

1. 准备工作

在三台虚拟机安装docker,并且关闭防火墙:

yum –y install docker
systemctl disabled firewalld
vi /etc/selinux/config
    SELINUX=disabled

2.将节点的IP地址配置到所有的服务器上面,每一台服务器(节点)执行如下命令:

export node1=10.10.10.27
export node2=10.10.10.23
export node3=10.10.10.50

在这里插入图片描述

3.为每个节点创建密钥文件。在主节点上面执行如下的命令,在这个教程中,所有的东西都放在“/home/core”文件夹中:

mkdir -p /home/core
cd /home/core
openssl rand -base64 741 >mongodb-keyfile
chmod 600 mongodb-keyfile
sudo chown 999 mongodb-keyfile

4.将home/core下刚生成的密钥文件复制到其余节点的同样的位置:

scp -r /home/core root@10.10.10.23:/home
scp -r /home/core root@10.10.10.50:/home

5.在主节点上使用docker查询、拉取MongoDB的镜像并运行:

docker search mongodb
docker pull mongodb
docker run --name=yk-mongo \
            -v /home/core/mongo-files/data:/data/db \
            -v /home/core/mongo-files:/opt/keyfile \
             --hostname="node1" \
             -p 27017:27017 \
             -d docker.io/mongo \
             --smallfiles

6.在主节点上启动刚运行的MongoDB容器,并进入一个交互式的shell环境:

docker exec -it yk-mongo bash
mongo

7.在主节点上切换到admin用户并创建一个新的site admin用户:

use admin
db.createUser( { 
user: "yk-mongodb",
pwd: "Seadee123qwe",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]});

若创建成功则会看到返回的成功信息。
再创建一个root用户:

db.createUser( {  
user: "yk-root-mongodb",
pwd: "Seadee123qwe ", roles: [ { role: "root",  db: "admin"  } ]});

若创建成功则会看到返回的成功信息。
在这里插入图片描述

8.退出mongo环境及yk-mongo容器:

exit
exit

停掉并删除yk-mongo容器;

docker stop yk-mongo
docker rm yk-mongo

9.在主节点上使用秘钥启动yk-mongo容器:

首先生成/home/keyfile文件夹:

mkdir /home/keyfile

启动容器:

docker run --name=yk-mongo \
                 -v /home/core/mongo-files/data:/data/db \
                 -v /home/core/mongo-files:/opt/keyfile \
                 -v /home/keyfile:/opt/keyfile/mongodb-keyfile \
                 --hostname="node1" \
                 --add-host node1:10.10.10.27 \
                 --add-host node2:10.10.10.23 \
                 --add-host node3:10.10.10.50 \
                 -p 27017:27017 -d docker.io/mongo \
                 --smallfiles \
                 --replSet "rs0" 

10.在主节点上进入yk-mongo容器并进入mongo环境:

docker exec -it yk-mongo bash
mongo

换到admin用户:

use admin

做身份验证:

db.auth("yk-root-mongodb", "Seadee123qwe")

开启副本集:

rs.initiate()

在这里插入图片描述

11.验证已经初始化的副本集的配置:

rs.conf()

在这里插入图片描述

12.在其他两个节点上启动yk-mongo容器:

首先在两个节点上生成/home/keyfile文件夹:

mkdir /home/keyfile
docker run --name=yk-mongo \
                 -v /home/core/mongo-files/data:/data/db \
                 -v /home/core/mongo-files:/opt/keyfile \
                 -v /home/keyfile:/opt/keyfile/mongodb-keyfile \
                 --hostname="node2" \
                 --add-host node1:10.10.10.27 \
                 --add-host node2:10.10.10.23 \
                 --add-host node3:10.10.10.50 \
                 -p 27017:27017 -d docker.io/mongo \
                 --smallfiles \
                 --replSet "rs0" 
docker run --name=yk-mongo \
                  -v /home/core/mongo-files/data:/data/db \
                  -v /home/core/mongo-files:/opt/keyfile \
                  -v /home/keyfile:/opt/keyfile/mongodb-keyfile \
                  --hostname="node3" \
                  --add-host node1:10.10.10.27 \
                  --add-host node2:10.10.10.23 \
                  --add-host node3:10.10.10.50 \
                  -p 27017:27017 -d docker.io/mongo \
                  --smallfiles \
                   --replSet "rs0"

在这里插入图片描述

13.在主节点上,按回车键,可以看到下面的提示:“rs0:PRIMARY”。这是因为这个节点是副本集“rso”的主节点。

现将其他节点加入MongoDB集群:

rs.add("node2")
rs.add("node3")

在这里插入图片描述
验证其它两个节点是否正确的加到这个副本集当中:

rs.status()

在这里插入图片描述
现在已经建立了一个MongoDB集群。以后可以按照需要在任何时刻添加节点到这个集群上。也可以关闭其中的一个节点(包括主节点),然后观察一个另外一个节点重新变成了主节点。由于这些数据都被写在了本机文件系统当中,所以重启任何一个节点都不是什么大问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值