温馨提示×

centos mongodb如何配置集群

小樊
44
2026-10-17 12:26:36
栏目: 云计算

在 CentOS 上配置 MongoDB 集群,通常有三种常见形态:

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

下面我以 CentOS 7/8 + MongoDB 6.x 为例,重点讲 副本集集群配置(生产推荐),并补充分片集群结构。


一、环境准备

1. 节点规划(示例)

主机名 IP 角色
mongo1 192.168.1.11 Primary
mongo2 192.168.1.12 Secondary
mongo3 192.168.1.13 Secondary

副本集至少 3 个节点(奇数防止脑裂)


二、安装 MongoDB(所有节点)

# 创建 repo
cat > /etc/yum.repos.d/mongodb.repo <<EOF
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF

yum install -y mongodb-org

三、配置副本集(核心)

1. 修改配置文件

编辑 /etc/mongod.conf

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

net:
  bindIp: 0.0.0.0
  port: 27017

replication:
  replSetName: rs0

replSetName 所有节点必须一致


2. 启动 MongoDB

systemctl enable mongod
systemctl start mongod

防火墙:

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

四、初始化副本集(只需在一台执行)

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

五、验证集群

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

在从节点:

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

六、分片集群(简要结构)

适合 TB 级数据

角色组成

  • Config Server(3台)
  • Mongos(路由,2台+)
  • Shard(副本集 × N)

架构示例

Client
  ↓
Mongos
  ↓
Config Server
  ↓
Shard1 (ReplicaSet)
Shard2 (ReplicaSet)

如需要我可以给你 完整分片集群 YAML 配置 + 启动命令


七、常见问题

1. 脑裂?

✅ 使用奇数节点(3 / 5)

2. 从节点不可写?

✅ MongoDB 默认从节点只读

3. 认证怎么加?

security:
  authorization: enabled
  keyFile: /etc/mongo-keyfile

八、生产建议

  • 使用 副本集 + 认证
  • 数据盘用 SSD
  • 定期 mongodump
  • 监控:mongostat / Prometheus

如果你愿意,可以告诉我: ✅ CentOS 版本
✅ MongoDB 版本
✅ 是否要 分片 / 鉴权 / 公网

我可以给你 一对一配置文件

0 踩