MongoDB Linux版如何实现高可用性
导读:MongoDB Linux版高可用实现指南 一、总体架构选择 副本集 Replica Set:至少3 个节点(建议为奇数),通过自动故障切换保障服务连续性与数据冗余,是最基础、最常用且绝大多数业务首选的高可用形态。 分片集群 Sharde...
MongoDB Linux版高可用实现指南
一、总体架构选择
- 副本集 Replica Set:至少3 个节点(建议为奇数),通过自动故障切换保障服务连续性与数据冗余,是最基础、最常用且绝大多数业务首选的高可用形态。
- 分片集群 Sharded Cluster:在副本集基础上横向扩展,由多个分片(每个分片是副本集)、至少3 个配置服务器副本集与mongos 路由组成,既高可用又具备水平扩展能力,适合海量数据与高并发场景。
二、副本集快速落地步骤
- 安装与目录准备(三台为例):安装 MongoDB;创建数据与日志目录并设权(如:/var/lib/mongodb、/var/log/mongodb),创建专用系统用户(如:mongo),便于最小权限运行与安全管理。
- 配置副本集名称:编辑各节点配置文件(如:/etc/mongod.conf)启用复制集:
replication:
replSetName: “rs0” - 启动与自启:
sudo systemctl start mongod
sudo systemctl enable mongod - 初始化副本集:连接任一节点执行(示例为三节点):
mongo --host < node1_ip> :27017
rs.initiate({
_id: “rs0”,
members: [
{ _id: 0, host: “< node1_ip> :27017” } ,
{ _id: 1, host: “< node2_ip> :27017” } ,
{ _id: 2, host: “< node3_ip> :27017” }
]
} ) - 验证:rs.status() 查看成员角色与同步状态。
- 防火墙放行(CentOS 示例):
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload
三、分片集群部署要点
- 配置服务器副本集(CSRS):至少3 个以保存集群元数据,建议以副本集方式运行:
mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019
初始化:
mongo --host < cfg_ip> :27019
rs.initiate({ _id: “configReplSet”, configsvr: true, members: […] } ) - 启动 mongos 路由:
mongos --configdb configReplSet/< cfg_ip> :27019 --port 27018 - 分片(每个分片为副本集):在各分片节点启动 mongod(示例端口27017),并初始化各自副本集(如:shard1、shard2)。
- 接入分片与启用分片:
mongo --host < mongos_ip> :27018
sh.addShard(“< shard_name> /:27017,:27017,:27017”)
sh.enableSharding(“< database_name> ”)
sh.shardCollection(“< database_name> .< collection_name> ”, { “< shard_key> ”: 1 } )
四、高可用验证与日常运维
- 故障切换演练:在主节点所在机器执行 kill 或 systemctl stop mongod,随后在 mongo shell 观察 rs.status(),确认主从切换与数据同步恢复;必要时检查各节点日志(如:/var/log/mongodb/mongod.log)。
- 监控与告警:部署MongoDB Ops Manager或Prometheus + Grafana监控关键指标(连接数、复制延迟、队列、页面错误等),并配置阈值告警。
- 备份与恢复:例行使用mongodump/mongorestore做逻辑备份;生产环境建议使用Percona XtraBackup进行物理热备,并定期做恢复演练验证可用性。
五、Linux系统与安全加固建议
- 运行身份与目录权限:使用专用用户(如:mongo)运行 mongod,数据/日志目录属主设为该用户,最小权限原则。
- 网络与端口:仅开放必要端口(如:27017/mongod、27018/mongos、27019/configsvr),限制来源网段;跨机房/公网部署务必启用TLS/SSL加密通信。
- 认证与授权:启用SCRAM身份验证,按业务划分角色与权限;为运维、应用分配最小权限账户。
- 系统优化:关闭透明大页(THP)以减少内存与延迟抖动:
echo “never” > /sys/kernel/mm/transparent_hugepage/enabled
echo “never” > /sys/kernel/mm/transparent_hugepage/defrag - 服务管理:使用systemd托管 mongod/mongos,配置合理的 Restart=on-failure 与资源限制(如:LimitNOFILE、LimitNPROC)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB Linux版如何实现高可用性
本文地址: https://pptw.com/jishu/755807.html
