docker 搭建mongodb集群(多机,启用auth)

 

集群的搭建,建议一开始就启用auth,后期启用太麻烦了,可能还造成容器启动失败等问题

 仲裁节点可有可无。

至少需要3个节点,可以是1主1丛1仲裁节点,也可以是1主2从(但不能是1主2仲裁,仲裁节点不备份数据,无法升为主节点)。

一主一从的Replica Set也可以部署,但是效果等同于Master/Slave集群,主节点挂掉后,从节点无法自动提升为主节点。

 

192.168.59.102:mongo-primary(主)

192.168.59.103:mongo-primary1(从)

192.168.59.104:mongo-primary2(从)

1、编辑三台服务器的/etc/hosts

 

2、创建mongo.key和mongo.conf文件(三台服务器都要创建)

创建目录

#mkdir /home/mongo/{key,conf,data}

#cd /home/mongo/key

#openssl rand -base64 756 > mongo.key

分配权限

chmod 400 mongo.key

一般的docker中的mong用户id是999
chown 999.999 mongo.key

将 mongo.key 文件发送到其它两台服务器上,用于复制集成员之间的验证。文件必须保持一致,否者验证失败

#cd /home/mongo/conf

#vi mongo.conf

添加信息,随便写写先,为了后期需要修改配置

security:
  keyFile: /home/mongo/conf/mongo.key

3、创建 mongo-primary
注意/data/db的映射,/data/db是存放数据库的目录,要自己根据实际情况映射
 #docker run -d --name m-p --network="host" -e MONGO_INITDB_ROOT_USERNAME=dmin -e MONGO_INITDB_ROOT_PASSWORD=123456 -v /home/mongo/key:/home/mongo/key  --keyFile /home/mongo/key/mongo.key -v /home/mongo/conf:/home/mongo/conf --config /home/mongo/conf/mongo.conf mongo --bind_ip localhost,192.168.59.102,test2 --replSet "mongo-rep" --auth 

4、创建mongo-secondary1 

注意/data/db的映射,/data/db是存放数据库的目录,要自己根据实际情况映射

#docker run -d --name m-s1 --network="host" -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 -v /home/mongo/key:/home/mongo/key/ --keyFile /home/mongo/key/mongo.key  -v /home/mongo/conf:/home/mongo/conf --config /home/mongo/conf/mongo.conf  mongo  --bind_ip localhost,192.168.59.103,test3 --replSet "mongo-rep" --auth
5、创建 mongo-secondary2
注意/data/db的映射,/data/db是存放数据库的目录,要自己根据实际情况映射
#docker run -d --name m-s2 --network="host" -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 -v /home/mongo/key:/home/mongo/key --keyFile /home/mongo/key/mongo.key  -v /home/mongo/conf:/home/mongo/conf --config /home/mongo/conf/mongo.conf  mongo  --bind_ip localhost,192.168.59.104,test4 --replSet "mongo-rep" --auth 
6、进入mongo客户端mongo-primary,进行集群配置

#docker exec -it m-p bash

#mongo

验证admin,因为开启了auth

>use admin

> db.auth("admin","123456");
1

>config = {_id:"mongo-rep", version:1, members:[{_id:0, host:"192.168.59.102:27017", priority:6}, {_id:1, host:"192.168.59.103:27017", priority:3}, {_id:2, host:"192.168.59.104:27017", priority:2}]}

 

 激活配置

>rs.initiate(config)

 

登录

m-s1 和 m-s2 

 

 

posted @ 2022-06-27 15:57  leihongnu  阅读(697)  评论(1编辑  收藏  举报