温馨提示×

Debian如何集群MongoDB

小樊
46
2026-07-07 02:42:01
栏目: 云计算

Debian 上部署 MongoDB 集群,通常指 副本集(Replica Set)分片集群(Sharded Cluster)。下面我按 生产常用方式 给你一个清晰、可操作的说明。


一、MongoDB 集群类型说明

类型 说明 适用场景
单机 单节点 测试
副本集 多节点 + 自动故障转移 生产推荐
分片集群 数据水平拆分 大规模数据

大多数生产环境:副本集即可
超大规模:分片 + 副本集


二、环境准备(推荐)

1️⃣ 系统

  • Debian 11 / 12
  • 多台服务器(至少 3 台)

示例:

node1  192.168.1.10
node2  192.168.1.11
node3  192.168.1.12

2️⃣ 主机名 & 时间同步

hostnamectl set-hostname node1
apt install -y ntp

三、安装 MongoDB(所有节点)

1️⃣ 导入 MongoDB 官方 GPG

curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg

2️⃣ 添加 MongoDB 源

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

3️⃣ 安装

apt update
apt install -y mongodb-org

四、配置副本集(Replica Set)

1️⃣ 修改配置文件(所有节点)

编辑:

nano /etc/mongod.conf

关键配置:

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: "rs0"

replSetName 必须一致


2️⃣ 启动 MongoDB

systemctl enable mongod
systemctl start mongod

3️⃣ 初始化副本集(只在主节点执行)

进入 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 即成功


五、验证高可用

1️⃣ 主节点写入

use test
db.test.insertOne({a:1})

2️⃣ 从节点读取

rs.secondaryOk()
db.test.find()

六、分片集群(Sharded Cluster)简述

组件

组件 作用
Config Server 存储元数据
Shard 数据分片
Mongos 路由

架构示例

mongos → config server → shard1 / shard2

⚠️ 不建议新手直接上分片,除非:

  • 数据 > TB 级
  • 并发极高

七、生产建议(非常重要)

✅ 至少 3 节点副本集
✅ 使用 XFS 文件系统
✅ 关闭 透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

✅ 设置 ulimit

ulimit -n 64000

✅ 开启 认证

security:
  authorization: enabled

八、常见问题

❓ 节点无法加入副本集

  • 防火墙
  • bindIp 没设置
  • 时间不同步

❓ Debian 官方源没有 MongoDB?

✅ MongoDB 不在 Debian 官方源,必须用官方源


九、我可以继续帮你

你可以直接告诉我: 1️⃣ 要 副本集还是分片
2️⃣ Debian 版本
3️⃣ 几台机器
4️⃣ 是否要 认证 / TLS

我可以给你 完整生产级配置文件 + 架构图

0