引言
MongoDB作为流行的NoSQL数据库,在生产环境中通常需要搭建集群来保证高可用性和数据冗余。本文将详细介绍如何在CentOS系统上搭建MongoDB集群(Replica Set),帮助您构建稳定可靠的数据库架构。
什么是MongoDB集群
MongoDB集群主要通过Replica Set(副本集)实现。副本集是一组维护相同数据集的MongoDB实例,其中包含一个主节点(Primary)和多个从节点(Secondary)。当主节点故障时,从节点会自动选举新的主节点,确保服务不中断。
准备工作
在开始搭建之前,请确保满足以下条件:
- 操作系统:CentOS 7.x 或更高版本
- MongoDB版本:建议使用5.0或更高版本
- 服务器数量:至少3台服务器(用于组建高可用集群)
- 网络:服务器之间网络互通,防火墙已开放相应端口
- 权限:具有root或sudo权限的用户
详细安装步骤
1. 配置MongoDB仓库
在每台服务器上执行以下命令,创建MongoDB yum仓库:
cat > /etc/yum.repos.d/mongodb-org-5.0.repo << EOF
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF
2. 安装MongoDB
在每台服务器上安装MongoDB:
sudo yum install -y mongodb-org
安装完成后,不要立即启动MongoDB服务。
3. 配置MongoDB实例
编辑配置文件 /etc/mongod.conf,关键配置项如下:
# 网络配置
net:
port: 27017
bindIp: 0.0.0.0 # 允许远程访问
# 复制集配置
replication:
replSetName: "rs0" # 副本集名称
# 安全配置(可选)
security:
authorization: enabled
keyFile: /opt/mongodb/keyfile # 用于内部认证
4. 启动MongoDB服务
在每台服务器上启动MongoDB:
sudo systemctl start mongod
sudo systemctl enable mongod
5. 初始化副本集
连接到任意一台服务器的MongoDB:
mongo --host <服务器IP> --port 27017
在MongoDB shell中执行初始化命令:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.101:27017" },
{ _id: 1, host: "192.168.1.102:27017" },
{ _id: 2, host: "192.168.1.103:27017" }
]
})
6. 验证集群状态
使用以下命令检查副本集状态:
rs.status()
正常情况下,应该看到一个主节点(stateStr: “PRIMARY”)和两个从节点(stateStr: “SECONDARY”)。
常见问题及解决方案
问题1:节点无法加入集群
原因:防火墙未开放27017端口,或SELinux阻止了连接。
解决:
# 开放端口
sudo firewall-cmd --permanent --add-port=27017/tcp
sudo firewall-cmd --reload
# 临时关闭SELinux
sudo setenforce 0
问题2:选举失败
原因:节点数量不足或网络分区。
解决:确保至少3个节点在线,检查网络连接。
问题3:数据不同步
原因:从节点落后主节点太多。
解决:
// 在从节点上执行
db.getMongo().setSecondaryOk()
性能优化建议
- 使用SSD存储:SSD能显著提升MongoDB的读写性能
- 合理配置内存:确保WiredTiger缓存大小不超过物理内存的50%
- 监控工具:使用MongoDB Cloud Manager或Prometheus + Grafana监控集群状态
- 定期备份:使用
mongodump定期备份数据
安全配置
生产环境务必启用安全认证:
- 创建管理员用户
- 配置keyFile用于节点间认证
- 启用TLS/SSL加密传输
- 限制网络访问(配置防火墙规则)
总结
在CentOS上搭建MongoDB集群并不复杂,关键在于正确配置副本集和确保节点间的网络通信。通过本文的步骤,您可以快速搭建一个高可用的MongoDB集群。记得在生产环境中启用安全认证,并定期监控集群状态。
如有问题,欢迎在评论区留言讨论!
本文更新于2026年,适用于CentOS 7/8和MongoDB 5.0+版本