温馨提示×

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 建议填写本机内网IP0.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/云备份)。
  • 维护与升级
    • 采用滚动升级策略;变更前备份与变更单;变更窗口内限流与回滚预案;对大集合分片前评估数据量与索引,避免热点与抖动。

0