温馨提示×

linux mongodb配置如何集群

小樊
47
2026-10-07 07:44:01
栏目: 云计算

在 Linux 下配置 MongoDB 集群,通常有三种常见架构:

  1. 副本集(Replica Set) —— 高可用(最常用)
  2. 分片集群(Sharded Cluster) —— 大数据水平扩展
  3. 单机多实例(测试用)

下面我按**生产最常用的「副本集」和「分片集群」**两种方式给你讲。


一、MongoDB 副本集(Replica Set)配置(推荐)

1. 环境准备

假设 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

2. 修改配置文件

编辑 /etc/mongod.conf(三台都改)

replication:
  replSetName: "rs0"

net:
  bindIp: 0.0.0.0
  port: 27017

⚠️ 生产环境 bindIp 建议只绑内网 IP

重启服务:

systemctl restart mongod

3. 初始化副本集

在 任意一台 执行:

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()

✅ 副本集完成


二、MongoDB 分片集群(Sharded Cluster)

适合 海量数据 + 高并发

架构组成

  • Config Server(配置服务器) ×3
  • Mongos(路由) ×1+
  • Shard(分片) ×2+(每个分片是副本集)

1. 配置 Config Server(3台)

/etc/mongod.conf:

sharding:
  clusterRole: configsvr
replication:
  replSetName: configRepl

启动并初始化副本集(同副本集步骤)


2. 配置 Shard(每个分片是副本集)

sharding:
  clusterRole: shardsvr
replication:
  replSetName: shard1

3. 启动 Mongos

mongos --configdb configRepl/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019

4. 添加分片

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")

5. 启用分片

sh.enableSharding("mydb")
sh.shardCollection("mydb.users", { user_id: 1 })

三、常见问题

1. 端口不通

firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload

2. 权限问题

生产环境必加:

security:
  authorization: enabled

3. 查看集群状态

sh.status()
rs.status()

四、总结建议

场景 推荐
高可用 副本集 ✅
大数据 分片集群
测试 单机多实例

如果你愿意,可以告诉我:

  • 你的 Linux 发行版
  • 是 测试还是生产
  • 数据量级别

我可以直接帮你写一份 完整可执行的配置文件 + 启动脚本。

0 踩