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
】
4、创建mongo-secondary1
注意/data/db的映射,/data/db是存放数据库的目录,要自己根据实际情况映射
#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