部署 mongodb replica set

1. 环境

  1. mongodb 6.0
  2. docker

2. 步骤

  1. 创建用于副本集认证的keyfile
# 创建文件
openssl rand -base64 756 > mongodb.key
# 修改文件权限
chown 999:999 mongodb.key
chmod 400 mongodb.key
  1. 创建mongodb配置文件
replication:
  replSetName: rs0

security:
  # 先禁用认证
  # authorization: enabled
  keyFile: /etc/mongodb.key
net:
  bindIpAll: true
# 修改文件权限
chown 999:999 mongodb.conf
chmod 400 mongodb.conf
  1. 部署mongodb
    由于只是测试所以不映射数据库文件
docker run -d --name rs01 -p 17017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf

docker run -d --name rs02 -p 27017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf

docker run -d --name rs03 -p 37017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf
  1. 初始化副本集
# 进入容器
docker exec -it rs01 /bin/bash
# 连接mongo
mongosh
# 使用admin
use admin
# 初始化集群,host建议用域名,而非ip。
rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "www.whyfate.com:17017" },
      { _id: 1, host: "www.whyfate.com:27017" },
      { _id: 2, host: "www.whyfate.com:37017" }
   ]
})
# 创建管理员
db.createUser(
   {
     user: "whyfate",
     pwd: passwordPrompt(),
     roles: [ { role: "root", db: "admin" } ]
   }
)

这里偷懒用了root用户,正式环境参考mongodb角色大全
5. 修改配置文件,启用认证,重启程序。
6. 连接字符串
mongodb://whyfate:123456@www.whyfate.com:17017,www.whyfate.com:27017,www.whyfate.com:37017/test?replicaSet=rs0&authSource=admin

posted @   whyfate  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-01-04 关于 keepalived+nginx 出现的问题的思考
2021-01-04 ubuntu 18.04 设置静态 ip 之 24
点击右上角即可分享
微信分享提示