首页主机资讯centos mongodb集群搭建方法

centos mongodb集群搭建方法

时间2025-11-06 01:04:03发布访客分类主机资讯浏览915
导读:CentOS下MongoDB集群搭建指南(副本集与分片集群) MongoDB集群分为**副本集(Replica Set)和分片集群(Sharded Cluster)**两种常见模式。副本集通过数据冗余实现高可用,分片集群通过水平分片提升数据...

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副本集或分片集群,满足高可用或水平扩展需求。

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


若转载请注明出处: centos mongodb集群搭建方法
本文地址: https://pptw.com/jishu/743556.html
centos mongodb版本升级注意事项 centos mongodb权限设置技巧

游客 回复需填写必要信息