在 CentOS 上搭建 MongoDB 集群,常见有三种方式,最常用的是 Replica Set(副本集) 和 Sharded Cluster(分片集群)。下面我按从简单到生产级给你讲。
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 单节点 | 一台机器 | 测试 |
| Replica Set | 多节点复制 | 高可用 |
| Sharded Cluster | 分片 + 副本 | 大数据量 |
192.168.1.10 mongo1
192.168.1.11 mongo2
192.168.1.12 mongo3
# 1. 创建 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
# 2. 安装
yum install -y mongodb-org
# 3. 启动
systemctl start mongod
systemctl enable mongod
vi /etc/mongod.conf
核心配置:
net:
bindIp: 0.0.0.0
port: 27017
replication:
replSetName: rs0
重启:
systemctl restart mongod
mongo
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()
✅ 完成高可用集群
| 角色 | 数量 |
|---|---|
| mongos | 1+ |
| config | 3 |
| shard | 每分片 3 节点 |
mongos: 27017
config: 27019 (3台)
shard1: 27018 (3台)
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
config:
sharding:
clusterRole: configsvr
replication:
replSetName: configRepl
mongos:
sharding:
configDB: configRepl/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019
sh.addShard("shard1/192.168.1.10:27018,192.168.1.11:27018,192.168.1.12:27018")
启用分片:
sh.enableSharding("testdb")
sh.shardCollection("testdb.user", { _id: "hashed" })
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
setenforce 0
你可以告诉我:
我可以直接给你 一步步可执行命令版 或 docker-compose 版。