部署 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 @ 2023-01-04 23:04  whyfate  阅读(124)  评论(0编辑  收藏  举报