在 Debian 上部署 MongoDB 集群,通常指 副本集(Replica Set) 或 分片集群(Sharded Cluster)。下面我按 生产常用方式 给你一个清晰、可操作的说明。
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 单机 | 单节点 | 测试 |
| 副本集 | 多节点 + 自动故障转移 | 生产推荐 |
| 分片集群 | 数据水平拆分 | 大规模数据 |
✅ 大多数生产环境:副本集即可
✅ 超大规模:分片 + 副本集
示例:
node1 192.168.1.10
node2 192.168.1.11
node3 192.168.1.12
hostnamectl set-hostname node1
apt install -y ntp
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" \
> /etc/apt/sources.list.d/mongodb-org.list
apt update
apt install -y mongodb-org
编辑:
nano /etc/mongod.conf
关键配置:
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: "rs0"
✅ replSetName 必须一致
systemctl enable mongod
systemctl start mongod
进入 mongo shell:
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" }
]
})
查看状态:
rs.status()
✅ 看到 PRIMARY + SECONDARY 即成功
use test
db.test.insertOne({a:1})
rs.secondaryOk()
db.test.find()
| 组件 | 作用 |
|---|---|
| Config Server | 存储元数据 |
| Shard | 数据分片 |
| Mongos | 路由 |
mongos → config server → shard1 / shard2
⚠️ 不建议新手直接上分片,除非:
✅ 至少 3 节点副本集
✅ 使用 XFS 文件系统
✅ 关闭 透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
✅ 设置 ulimit
ulimit -n 64000
✅ 开启 认证
security:
authorization: enabled
✅ MongoDB 不在 Debian 官方源,必须用官方源
你可以直接告诉我:
1️⃣ 要 副本集还是分片
2️⃣ Debian 版本
3️⃣ 几台机器
4️⃣ 是否要 认证 / TLS
我可以给你 完整生产级配置文件 + 架构图 ✅