centos mongodb集群搭建方法

CentOS下MongoDB集群搭建指南(副本集与分片集群)MongoDB集群分为**副本集(Replica Set)和分片集群(Sharded Cluster)**两种常见模式。副本集通过数据冗余实现高可用,分片集群通过水平分片提升数据处理能力。以下是CentOS系统下的详细搭建步骤:一、准备工作系统要求:CentOS 7及以上版本,所有节点时间同步(建议使用NTP服务)。依赖安装:确保系

CentOS下MongoDB集群搭建指南(副本集与分片集群)

MongoDB集群分为**副本集(Replica Set)分片集群(Sharded Cluster)**两种常见模式。副本集通过数据冗余实现高可用,分片集群通过水平分片提升数据处理能力。以下是CentOS系统下的详细搭建步骤:

一、准备工作

  1. 系统要求:CentOS 7及以上版本,所有节点时间同步(建议使用NTP服务)。
  2. 依赖安装:确保系统已安装wgetvim等基础工具。
  3. 网络配置:所有节点之间网络互通,关闭防火墙或开放MongoDB默认端口(27017、27018、27019等)。
    sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
    sudo firewall-cmd --reload
    

二、安装MongoDB

在所有集群节点上执行以下步骤安装MongoDB:

  1. 添加MongoDB官方YUM源
    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. 安装MongoDB
    sudo yum install -y mongodb-org
    
  3. 启动服务并设置开机自启
    sudo systemctl start mongod
    sudo systemctl enable mongod
    

三、搭建副本集集群(高可用)

副本集是MongoDB的核心高可用方案,至少需要3个节点(1主2从)。

1. 配置每个节点的mongod.conf

编辑/etc/mongod.conf,添加以下配置(以节点1为例,节点2、3需修改portdbPath):

storage:
  dbPath: /var/lib/mongo/node1  # 数据存储路径
  journal:
    enabled: true
systemLog:
  destination: file
  path: /var/log/mongodb/node1.log  # 日志路径
  logAppend: true
net:
  bindIp: 0.0.0.0  # 允许所有IP连接
  port: 27017  # 节点端口
replication:
  replSetName: rs0  # 副本集名称(所有节点必须一致)

2. 创建数据目录并启动服务

sudo mkdir -p /var/lib/mongo/node1
sudo chown -R mongod:mongod /var/lib/mongo/node1
sudo systemctl start mongod
sudo systemctl enable mongod

3. 初始化副本集

连接到任意节点(如节点1),执行初始化命令:

mongo --host 192.168.1.10 --port 27017  # 替换为节点1的IP

在Mongo shell中输入:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.1.10:27017" },  # 节点1
    { _id: 1, host: "192.168.1.11:27017" },  # 节点2
    { _id: 2, host: "192.168.1.12:27017" }   # 节点3
  ]
})

4. 验证副本集状态

rs.status()

正常状态应显示所有节点为SECONDARY(从节点)或PRIMARY(主节点)。

四、搭建分片集群(水平扩展)

分片集群适用于大规模数据存储,由配置服务器(Config Server)分片服务器(Shard)、**路由服务器(mongos)**三部分组成。

1. 配置配置服务器(3节点)

配置服务器存储集群元数据,必须为副本集。

  • 编辑mongod.conf(每个节点):
    storage:
      dbPath: /var/lib/mongo/configdb  # 数据路径
    systemLog:
      destination: file
      path: /var/log/mongodb/configdb.log
      logAppend: true
    net:
      bindIp: 0.0.0.0
      port: 27019  # 配置服务器端口
    sharding:
      clusterRole: configsvr  # 指定为配置服务器角色
    
  • 启动服务
    sudo systemctl start mongod
    sudo systemctl enable mongod
    
  • 初始化副本集
    mongo --host 192.168.1.10 --port 27019
    

    输入:

    rs.initiate({
      _id: "configReplSet",
      configsvr: true,
      members: [
        { _id: 0, host: "192.168.1.10:27019" },
        { _id: 1, host: "192.168.1.11:27019" },
        { _id: 2, host: "192.168.1.12:27019" }
      ]
    })
    

2. 配置分片服务器(3节点/分片)

分片服务器存储实际数据,每个分片建议为副本集。

  • 编辑mongod.conf(每个分片节点,如分片1的节点1):
    storage:
      dbPath: /var/lib/mongo/shard1  # 数据路径
    systemLog:
      destination: file
      path: /var/log/mongodb/shard1.log
      logAppend: true
    net:
      bindIp: 0.0.0.0
      port: 27018  # 分片端口
    sharding:
      clusterRole: shardsvr  # 指定为分片角色
    
  • 启动服务
    sudo systemctl start mongod
    sudo systemctl enable mongod
    

3. 配置路由服务器(mongos)

mongos是应用与集群的接口,负责请求路由。

  • 编辑mongos.conf
    systemLog:
      destination: file
      path: /var/log/mongodb/mongos.log
      logAppend: true
    net:
      bindIp: 0.0.0.0
      port: 27017  # mongos端口
    sharding:
      configDB: configReplSet/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019  # 配置服务器副本集
    
  • 启动服务
    mongos -f /etc/mongos.conf
    

4. 添加分片到集群

连接到mongos,执行以下命令:

mongo --host 192.168.1.10 --port 27017

输入:

sh.addShard("shard1/192.168.1.20:27018,192.168.1.21:27018,192.168.1.22:27018")  # 替换为分片1的节点IP

5. 启用数据库和集合分片

  • 启用数据库分片
    sh.enableSharding("mydatabase")  # 替换为目标数据库
    
  • 对集合分片(需指定分片键,如id字段):
    use mydatabase
    db.mycollection.createIndex({ id: 1 })  # 创建索引(分片键必须有索引)
    sh.shardCollection("mydatabase.mycollection", { id: 1 })  # 分片集合
    

6. 验证集群状态

sh.status()

正常状态应显示配置服务器、分片服务器、路由服务器均已连接,且分片键配置正确。

五、常见问题排查

  1. 连接失败:检查防火墙是否开放对应端口,节点IP是否可达。
  2. 副本集初始化失败:确保所有节点配置一致,且至少3个节点。
  3. 分片集群无法添加分片:确认配置服务器副本集已初始化,mongos配置正确。

通过以上步骤,即可在CentOS系统上搭建MongoDB副本集或分片集群,满足高可用或水平扩展需求。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1447155.html

(0)
派派
上一篇 2025-11-05
下一篇 2025-11-05

发表回复

登录后才能评论