在 CentOS 上配置 MongoDB 集群,通常有三种常见形态:
下面我以 CentOS 7/8 + MongoDB 6.x 为例,重点讲 副本集集群配置(生产推荐),并补充分片集群结构。
| 主机名 | IP | 角色 |
|---|---|---|
| mongo1 | 192.168.1.11 | Primary |
| mongo2 | 192.168.1.12 | Secondary |
| mongo3 | 192.168.1.13 | Secondary |
副本集至少 3 个节点(奇数防止脑裂)
# 创建 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
编辑 /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所有节点必须一致
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 级数据
Client
↓
Mongos
↓
Config Server
↓
Shard1 (ReplicaSet)
Shard2 (ReplicaSet)
如需要我可以给你 完整分片集群 YAML 配置 + 启动命令
✅ 使用奇数节点(3 / 5)
✅ MongoDB 默认从节点只读
security:
authorization: enabled
keyFile: /etc/mongo-keyfile
mongodumpmongostat / Prometheus如果你愿意,可以告诉我:
✅ CentOS 版本
✅ MongoDB 版本
✅ 是否要 分片 / 鉴权 / 公网
我可以给你 一对一配置文件