前提
3台节点都安装好mongo
集群:
1台primary
1台secondary
1台ARBITER(做监控的,实际没有数据)
配置步骤
生成keyFile,主节点操作
openssl rand -base64 745 > /data/mongo/keyfile
chmod 400 /data/mongo/keyfile
chown -R mongod:mongod /data/mongo/keyfile
把这个keyfile同步到其他两个节点的 ~/mongodb/keyfile/ 文件夹中
scp /data/mongo/keyfile root@20.0.0.3:/data/mongo/
scp /data/mongo/keyfile root@20.0.0.4:/data/mongo/
增加三个节点mongod.conf文件中security部分:
security:
keyFile: "/data/mongo/keyfile"
authorization: enabled
增加三个节点mongod.conf文件中副本集群名称:
replication:
oplogSizeMB: 500
replSetName: myrs
依次启动主节点, 从节点和仲裁节点的mongod后台进程:
#设置mongod密码设置密码
> use admin
switched to db admin
> db.createUser({user:"admin",pwd:"123456",roles:["root"]})
Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
初始化步骤:
配置副本集_id要与mongodb.conf文件中的replSetName一致,就是集群名称;priority 参数的值决定了选举中该节点的优先级。priority值越高,优先级越高。
cfg={ _id:"node",members:[{_id:0,host:'20.0.0.5:27017',priority:2},{_id:1,host:'20.0.0.3:27017',priority:1},{_id:2,host:'20.0.0.4:27017',arbiterOnly:true}] };
根据变量配置集群;返回ok表明初始化正确。
rs.initiate(cfg) // 初始化副本集,配置成功:"ok" : 1
{ "ok" : 1 }
查看集群状态
rs.status() // 查看副本集状态,确认主节点
配置副本集Connection String URI
副本集实例Connection String URI连接示例,nacos配置修改对应的应用
spring.data.mongodb.uri=mongodb://password@xxxxxx:27017,xxxxxx:27017/xxxx_db?replicaSet=e2mongo
replicaSet=e2mongo
其中 "e2mongo"是集群名称;购买云上服务请使用云提供的Connection String