MongoDB 集群部署
MongoDB 集群部署
环境
系统:CentOS 7
主机 | 端口 | 角色 |
---|---|---|
192.168.93.100 | 27017 | master |
192.168.93.101 | 27017 | slave |
192.168.93.102 | 27017 | arditer |
镜像拉取
docker pull mongo:4.4
挂载目录
# 配置文件地址 mkdir -p /data/mongodb/configdb # db 存放地址 mkdir -p /data/mongodb/db
创建配置文件
vi /data/mongodb/configdb/mongod.conf
mongod.conf
net: port: "27017" # 启动端口 bindIp: "0.0.0.0 " # 允许连接的 IP systemLog: logAppend: "true" # 重新启动 mongodb 的时候日志拼接在以前的日志文件上 security: keyFile: "/data/configdb/mongodb-keyfile" # 路径是容器映射到宿主机的路径 authorization: "enabled" # 开启客户端连接认证,disabled 关闭授权 replication: replSetName: "mongo_rs"
生成 keyfile 文件
openssl rand -base64 745 > /data/mongodb/configdb/mongodb-keyfile chmod 400 /data/mongodb/configdb/mongodb-keyfile # 一个节点生成后,复制到另外两个节点对应的位置 scp mongodb-keyfile root@192.168.93.101:/data/mongodb/configdb/ scp mongodb-keyfile root@192.168.93.102:/data/mongodb/configdb/
启动容器
# -i 保持容器的标准输入打开 docker run -di \ -p 27017:27017 \ -v /data/mongodb/configdb:/data/configdb \ -v /data/mongodb/db:/data/db \ mongo:4.4 -f /data/configdb/mongod.conf
添加主节点副本集
# 进入主节点 docker exec -it ea0ed200a28f mongo admin # 添加主节点副本集 rs.initiate({ _id: "mongo_rs", members: [{ _id: 0, host: "192.168.93.100:27017" }] });
添加超户
# 进入主节点 docker exec -it ea0ed200a28f mongo admin # 添加超户 db.createUser({ user: "admin", pwd: "123456", roles: [{ role: "root", db: "admin" }] });
添加其它副本集
# 进入主节点 docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin rs.add("192.168.93.101:27017"); rs.addArb("192.168.93.102:27017");
添加普通账号
# 进入主节点 docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin # 创建并切换至 test 数据库 use test; # 添加普通账号 db.createUser({ user: "lsy", pwd: "123456", roles: [{ role: "readWrite", db: "test" },{ role: "dbAdmin", db: "test" },{ role: "userAdmin", db: "test" }] });
查看集群状态
# 进入主节点 docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin use admin; rs.status();
参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通