- 首页 >
- 问答 >
-
云计算 >
- MongoDB在Linux上的集群配置方法是什么
MongoDB在Linux上的集群配置方法是什么
小樊
36
2025-12-30 05:42:01
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
- 接入分片与启用分片
- 连接 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/云备份)。
- 维护与升级
- 采用滚动升级策略;变更前备份与变更单;变更窗口内限流与回滚预案;对大集合分片前评估数据量与索引,避免热点与抖动。