首页主机资讯CentOS MongoDB集群搭建步骤是什么

CentOS MongoDB集群搭建步骤是什么

时间2025-12-11 22:14:04发布访客分类主机资讯浏览1164
导读:CentOS 上搭建 MongoDB 集群的两种常见方式 副本集 Replica Set:用于高可用与数据冗余,至少 3 个节点(生产建议),应用直连任一节点即可,内部自动故障切换。适合大多数业务起步与中小规模场景。 分片集群 Shard...

CentOS 上搭建 MongoDB 集群的两种常见方式

  • 副本集 Replica Set:用于高可用与数据冗余,至少 3 个节点(生产建议),应用直连任一节点即可,内部自动故障切换。适合大多数业务起步与中小规模场景。
  • 分片集群 Sharding:用于水平扩展,由 mongos 路由Config Server 配置服务器(建议 3 节点副本集)、多个 **Shard 分片(每个分片为副本集)**组成,适合大数据量或高并发场景。

一、准备与通用配置

  • 系统要求:CentOS 7/8/Stream,时间同步(如 chrony),SELinux 建议为 permissive 或按策略放行,防火墙开放相应端口。
  • 安装 MongoDB(YUM 方式,示例为 4.4,可按需调整版本):
    1. 导入公钥并添加仓库
      sudo rpm --import https://www.mongodb.org/static/pgp/server-4.4.asc
      echo “[mongodb-org-4.4]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc” | sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo
    2. 安装并启动
      sudo yum install -y mongodb-org
      sudo systemctl start mongod & & sudo systemctl enable mongod
  • 防火墙放行(示例端口 27017):
    sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent & & sudo firewall-cmd --reload
  • 基础配置要点(/etc/mongod.conf):
    net.bindIp: 0.0.0.0(或指定内网 IP)
    replication.replSetName: rs0(副本集名称,集群内一致)
    日志与数据目录保持默认或按需自定义,注意目录权限为 mongod:mongod

二、搭建副本集 Replica Set(3 节点示例)

  • 步骤
    1. 在 3 台机器上编辑 /etc/mongod.conf,加入:
      replication:
      replSetName: rs0
    2. 重启服务:sudo systemctl restart mongod
    3. 任选一台连接并初始化:
      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” }
      ]
      } )
    4. 验证:rs.status(),应看到 PRIMARY/SECONDARY 状态正常。
  • 说明
    • 生产建议 3 个数据节点;如为资源受限环境可加 **Arbiter(仲裁者)**提供投票但不存数据,注意仲裁节点不要与数据节点同机。
    • 客户端连接字符串示例:mongodb://< node1_ip> ,< node2_ip> ,< node3_ip> :27017/?replicaSet=rs0。

三、搭建分片集群 Sharding(最小可用示例)

  • 架构与端口规划(示例)
    • Config Server 副本集:3 节点,端口 27019,clusterRole: configsvr
    • Shard1/2/3 副本集:每分片 3 节点,端口 27018/27019/27020,clusterRole: shardsvr
    • mongos 路由:2 实例对外服务,端口 27017,configDB 指向 Config 副本集
  • 部署步骤
    1. 部署并初始化 Config Server 副本集(3 节点)
      • 配置示例:
        sharding:
        clusterRole: configsvr
        net:
        port: 27019
        bindIp: 0.0.0.0
        storage:
        dbPath: /var/lib/mongo/configdb
      • 启动后在 mongo --port 27019 中:
        rs.initiate({
        _id: “configReplSet”,
        configsvr: true,
        members: [
        { _id: 0, host: “cfg1:27019” } ,
        { _id: 1, host: “cfg2:27019” } ,
        { _id: 2, host: “cfg3:27019” }
        ]
        } )
    2. 部署 每个分片为副本集(以 Shard1 为例,3 节点)
      • 配置示例:
        sharding:
        clusterRole: shardsvr
        net:
        port: 27018
        bindIp: 0.0.0.0
        storage:
        dbPath: /var/lib/mongo/shard1
      • 启动后在对应端口 mongo 中初始化副本集(如 rs.initiate({ _id:“shard1”, members:[…]} ))。
    3. 启动 mongos(建议 2 个实例做高可用)
      • 命令示例:
        mongos --configdb configReplSet/cfg1:27019,cfg2:27019,cfg3:27019 --port 27017 --bind_ip 0.0.0.0
    4. 连接 mongos 添加分片
      • mongo --port 27017
        sh.addShard(“shard1/sh1a:27018,sh1b:27018,sh1c:27018”)
        sh.addShard(“shard2/sh2a:27019,sh2b:27019,sh2c:27019”)
        sh.addShard(“shard3/sh3a:27020,sh3b:27020,sh3c:27020”)
    5. 启用数据库与集合分片
      • sh.enableSharding(“mydb”)
      • sh.shardCollection(“mydb.mycol”, { “shardKey”: 1 } )(请结合查询模式选择分片键)
    6. 验证
      • sh.status() 查看集群概况;mongostat/mongotop 监控负载。
  • 说明
    • 生产强烈建议 Config Server 为 3 节点副本集;每个 Shard 为 3 节点副本集mongos 可部署 2+ 实例避免单点。
    • 客户端连接 mongos 的 27017 端口 即可,无需直连分片。

四、验证与运维要点

  • 健康检查
    • 副本集:rs.status()、rs.isMaster()
    • 分片集群:sh.status()、mongostat、mongotop、日志(/var/log/mongodb/mongod.log)
  • 安全建议(可选但强烈推荐)
    • 启用 鉴权:创建管理员用户,启用 --auth;分片集群在 mongos 上创建用户并下发到各分片。
    • 网络:仅开放内网端口,限制来源 IP;密钥文件用于分片间内部认证(keyFile)。
  • 备份与恢复
    • 副本集:mongodump/mongorestore、文件系统快照或 Ops Manager/Atlas 备份。
    • 分片集群:通过 mongos 执行备份,确保一致性窗口。
  • 常见排错
    • 节点无法加入副本集:核对 replSetName 一致网络互通防火墙/SELinuxbindIp时间同步
    • 分片不均衡:检查 balancer 是否开启、分片键选择是否合理、chunk 分布。
    • mongos 路由异常:核对 configDB 地址与副本集名称、各分片健康状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS MongoDB集群搭建步骤是什么
本文地址: https://pptw.com/jishu/769851.html
CentOS MongoDB如何进行网络优化 如何确保CentOS MongoDB数据持久化

游客 回复需填写必要信息