centos

centos mongodb集群搭建方法

小樊
34
2025-11-05 17:56:16
栏目: 云计算

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节点)

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

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

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

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

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

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. 启用数据库和集合分片

6. 验证集群状态

sh.status()

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

五、常见问题排查

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

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

0
看了该问题的人还看了