在 Debian 上部署 MongoDB 集群,通常指三种模式之一:
下面我以 Debian 11/12 + MongoDB 7.x 为例,分别说明副本集和分片集群的部署方式。
sudo apt update
sudo apt install -y curl gnupg
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/debian $(lsb_release -cs)/mongodb-org/7.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y mongodb-org
| 节点 | IP |
|---|---|
| node1 | 192.168.1.11 |
| node2 | 192.168.1.12 |
| node3 | 192.168.1.13 |
编辑 /etc/mongod.conf(所有节点)
net:
bindIp: 0.0.0.0
port: 27017
replication:
replSetName: rs0
⚠️ 生产环境建议 bindIp 改为具体 IP
sudo systemctl enable mongod
sudo systemctl start mongod
mongo
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.11:27017" },
{ _id: 1, host: "192.168.1.12:27017" },
{ _id: 2, host: "192.168.1.13:27017" }
]
})
查看状态:
rs.status()
| 角色 | 节点 |
|---|---|
| Config Server | 3 台 |
| Shard | 每组 3 台(副本集) |
| Mongos | 1~2 台 |
sharding:
clusterRole: configsvr
replication:
replSetName: cfgrs
初始化:
rs.initiate({
_id: "cfgrs",
configsvr: true,
members: [...]
})
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
sharding:
configDB: cfgrs/192.168.1.21:27019,192.168.1.22:27019,192.168.1.23:27019
启动:
mongos --config /etc/mongos.conf
sh.addShard("shard1/192.168.1.31:27018,192.168.1.32:27018,192.168.1.33:27018")
sudo ufw allow 27017
sudo ufw allow 27019
not master → 没初始化副本集node not reachable → 防火墙 / bindIp 错误could not find member → IP 不一致如果你愿意,我可以:
你打算用哪种集群?