在 CentOS 上搭建 MongoDB 集群,通常有几种常见方式,最主流的是 副本集(Replica Set) 和 分片集群(Sharded Cluster)。下面我分别给你讲,先从最常用、最推荐的 副本集 开始。
3 台 CentOS 服务器:
192.168.1.10 mongo1
192.168.1.11 mongo2
192.168.1.12 mongo3
# 添加 MongoDB YUM 源
cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/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
# 启动
systemctl enable mongod
systemctl start mongod
CentOS 7 把
redhat/8改成redhat/7
编辑 /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
security:
authorization: enabled
重启:
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: 192.168.1.20
config: 192.168.1.21~23
shard1: 192.168.1.30~32
shard2: 192.168.1.40~42
sharding:
clusterRole: configsvr
replication:
replSetName: configRepl
初始化:
rs.initiate({
_id: "configRepl",
members: [
{_id:0, host:"192.168.1.21:27019"},
{_id:1, host:"192.168.1.22:27019"},
{_id:2, host:"192.168.1.23:27019"}
]
})
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
分别初始化 shard1 / shard2
sharding:
configDB: configRepl/192.168.1.21:27019,192.168.1.22:27019,192.168.1.23:27019
启动:
mongos -f /etc/mongos.conf
sh.addShard("shard1/192.168.1.30:27018,192.168.1.31:27018,192.168.1.32:27018")
sh.addShard("shard2/192.168.1.40:27018,192.168.1.41:27018,192.168.1.42:27018")
sh.enableSharding("testdb")
sh.shardCollection("testdb.user", { uid: "hashed" })
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
bindIp 不要只写 127.0.0.1authorization| 场景 | 推荐 |
|---|---|
| 小中型业务 | 副本集 |
| 单节点压力大 | 副本集 |
| TB 级以上 | 分片集群 |
| 高可用 | 副本集 |
如果你愿意,可以告诉我:
我可以直接帮你 写一套可执行的部署方案或脚本。