在 Linux 下配置 MongoDB 集群,通常有三种常见架构:
下面我按**生产最常用的「副本集」和「分片集群」**两种方式给你讲。
假设 3 台 Linux 服务器:
192.168.1.10 (primary)
192.168.1.11 (secondary)
192.168.1.12 (secondary/arbiter)
每台都安装 MongoDB(以 Ubuntu 为例):
sudo apt update
sudo apt install -y mongodb-org
编辑 /etc/mongod.conf(三台都改)
replication:
replSetName: "rs0"
net:
bindIp: 0.0.0.0
port: 27017
⚠️ 生产环境 bindIp 建议只绑内网 IP
重启服务:
systemctl restart mongod
在 任意一台 执行:
mongosh
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.10:27017" },
{ _id: 1, host: "192.168.1.11:27017" },
{ _id: 2, host: "192.168.1.12:27017", arbiterOnly: true }
]
})
查看状态:
rs.status()
✅ 副本集完成
适合 海量数据 + 高并发
/etc/mongod.conf:
sharding:
clusterRole: configsvr
replication:
replSetName: configRepl
启动并初始化副本集(同副本集步骤)
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
mongos --configdb configRepl/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019
mongosh --port 27017
sh.addShard("shard1/192.168.1.20:27018,192.168.1.21:27018")
sh.addShard("shard2/192.168.1.30:27018,192.168.1.31:27018")
sh.enableSharding("mydb")
sh.shardCollection("mydb.users", { user_id: 1 })
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
生产环境必加:
security:
authorization: enabled
sh.status()
rs.status()
| 场景 | 推荐 |
|---|---|
| 高可用 | 副本集 ✅ |
| 大数据 | 分片集群 |
| 测试 | 单机多实例 |
如果你愿意,可以告诉我:
我可以直接帮你写一份 完整可执行的配置文件 + 启动脚本。