MongoDB在Linux上的集群配置方法是什么
导读:MongoDB在Linux上的集群配置方法 一、方案选型与架构要点 常见两种形态: 副本集 Replica Set:提供高可用与自动故障转移,最少3个节点(推荐奇数),适合绝大多数业务场景作为起点。 分片集群 Sharded Clust...
MongoDB在Linux上的集群配置方法
一、方案选型与架构要点
- 常见两种形态:
- 副本集 Replica Set:提供高可用与自动故障转移,最少3个节点(推荐奇数),适合绝大多数业务场景作为起点。
- 分片集群 Sharded Cluster:用于水平扩展与海量数据,由Shard(分片)、Config Server(配置服务器)、Mongos(路由)组成;自MongoDB 3.4起,Config Server 必须为副本集;自MongoDB 3.6起,每个 Shard 也建议/必须为副本集。
二、副本集快速部署步骤
- 准备与安装
- 至少准备3台 Linux 主机,安装相同版本的 MongoDB(如4.4+);确保节点间网络互通与时间同步(NTP);防火墙放行27017端口。
- 配置每个节点的 mongod.conf(示例)
- storage.dbPath、systemLog.path 按实际目录配置;net.bindIp 建议填写本机内网IP或0.0.0.0(生产请限制来源);replication.replSetName 三节点保持一致。
- 示例要点:
- storage.dbPath: /var/lib/mongodb
- systemLog.path: /var/log/mongodb/mongod.log
- net.port: 27017;net.bindIp: 0.0.0.0(或内网IP)
- replication.replSetName: rs0
- 启动与开机自启
- systemctl 方式:sudo systemctl start mongod & & sudo systemctl enable mongod
- 初始化副本集
- 连接任一节点:mongo --host --port 27017
- 在 mongo shell 执行:
- rs.initiate({ _id: “rs0”, members: [ { _id: 0, host: “:27017” } , { _id: 1, host: “:27017” } , { _id: 2, host: “:27017” } ] } )
- 验证与读写
- rs.status() 查看角色与健康;应用连接串示例:mongodb://IP1:27017,IP2:27017,IP3:27017/?replicaSet=rs0
- 如需从节点读:在连接或驱动中设置读偏好 readPreference=secondaryPreferred。
三、分片集群部署步骤
- 组件与端口规划(示例)
- Config Server 副本集(3节点):端口27019,dbPath 指向 configdb 数据目录
- Shard 副本集(每个分片3节点):端口如27018,dbPath 指向各分片数据目录
- Mongos 路由(2+实例):端口27017,不存数据,指向 Config Server 副本集
- 部署与初始化
- 启动 Config Server(三节点)
- mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019
- 连接任一配置节点初始化:
- rs.initiate({ _id: “configReplSet”, configsvr: true, members: [ { _id: 0, host: “:27019” } , { _id: 1, host: “:27019” } , { _id: 2, host: “:27019” } ] } )
- 启动并初始化各 Shard 副本集(示例)
- mongod --shardsvr --replSet shard1ReplSet --dbpath /data/shard1 --port 27018
- 连接分片节点初始化(略,同副本集步骤)
- 启动 Mongos(可在多台机器部署多个实例)
- mongos --configdb configReplSet/:27019,:27019,:27019 --port 27017
- 启动 Config Server(三节点)
- 接入分片与启用分片
- 连接 Mongos:mongo --port 27017
- 添加分片:sh.addShard(“shard1ReplSet/< S1_HOST> :27018,< S1_HOST> :27019,< S1_HOST> :27020”)
- 启用数据库分片:sh.enableSharding(“mydb”)
- 为集合指定分片键:sh.shardCollection(“mydb.mycoll”, { shardKey: 1 } )(请结合查询模式谨慎选择分片键)
- 验证
- sh.status() 查看集群拓扑、分片分布与均衡状态。
四、生产环境关键注意事项
- 安全
- 启用认证与授权(SCRAM 或 x.509)、TLS/SSL 加密传输、网络加固(仅放通必要端口与来源IP)、最小权限与密钥管理。
- 高可用与拓扑
- 副本集节点数≥3且为奇数;跨机架/可用区部署;避免单机上运行多个主节点;为关键业务配置优先级/隐藏/延迟等成员角色以优化故障域与读负载。
- 监控与备份
- 部署监控(如 mongostat/mongotop、Prometheus Exporter)、日志集中与审计;定期备份(文件系统快照、mongodump/逻辑备份或 Ops Manager/云备份)。
- 维护与升级
- 采用滚动升级策略;变更前备份与变更单;变更窗口内限流与回滚预案;对大集合分片前评估数据量与索引,避免热点与抖动。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux上的集群配置方法是什么
本文地址: https://pptw.com/jishu/783962.html
