如何在CentOS 7上一步步搭建MongoDB集群详细教程?

在当今数据驱动的时代,确保业务连续性和数据的高可用性是系统架构设计的核心,MongoDB作为一款流行的NoSQL数据库,其副本集集群功能为实现这一目标提供了强大而可靠的解决方案,本文将详细介绍如何在稳定且广泛应用的CentOS 7操作系统上,一步步搭建一个具备高可用特性的MongoDB副本集集群。

如何在CentOS 7上一步步搭建MongoDB集群详细教程?

环境准备

在开始部署之前,我们需要准备一个基础环境,一个标准的MongoDB副本集至少需要三个节点(可以是物理服务器或虚拟机),以确保在发生故障时能够进行自动选举和故障转移。

  • 服务器节点:三台已安装CentOS 7的干净服务器。
  • 网络配置:确保三台服务器之间网络互通,建议使用静态IP地址。
    • mongo1: 192.168.1.101
    • mongo2: 192.168.1.102
    • mongo3: 192.168.1.103
  • 用户权限:具备sudoroot权限的用户。
  • 防火墙与SELinux:为简化配置,可以先关闭防火墙和SELinux,生产环境则建议配置相应的端口访问策略。

安装与配置MongoDB

我们将通过MongoDB官方提供的Yum仓库来安装,这是最推荐的方式。

配置MongoDB Yum仓库

在三台服务器上,使用以下命令创建仓库配置文件 /etc/yum.repos.d/mongodb-org-5.0.repo

[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

安装MongoDB

执行Yum安装命令,安装MongoDB社区版及其相关工具:

sudo yum install -y mongodb-org

配置每个节点

这是搭建集群的关键一步,我们需要编辑每台服务器上的MongoDB配置文件 /etc/mongod.conf,核心在于启用复制功能并指定副本集名称。

如何在CentOS 7上一步步搭建MongoDB集群详细教程?

# 存储数据目录
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
# 日志文件路径
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
# 网络端口和绑定IP
net:
  port: 27017
  bindIp: 0.0.0.0  # 生产环境建议使用私有IP
# 复制集配置,这是集群的核心
replication:
  replSetName: "rs0"

注意replSetName 在所有节点上必须保持一致,这里我们命名为 rs0bindIp 设置为 0.0.0 允许任何IP访问,便于节点间通信,但在生产环境中应严格限制为集群内服务器的IP地址。

启动并启用MongoDB服务

在三台服务器上分别执行以下命令,启动MongoDB服务并设置其为开机自启:

sudo systemctl start mongod
sudo systemctl enable mongod

初始化副本集

当所有节点的MongoDB服务都启动后,我们需要选择一个节点(通常是第一个节点 mongo1)来初始化副本集。

mongo1 服务器上,连接到MongoDB shell:

mongosh

在shell中,执行 rs.initiate() 命令,并传入配置对象,定义副本集的成员:

rs.initiate({
   _id: "rs0",
   members: [
      { _id: 0, host: "192.168.1.101:27017" },
      { _id: 1, host: "192.168.1.102:27017" },
      { _id: 2, host: "192.168.1.103:27017" }
   ]
})

执行后,MongoDB会根据配置进行初始化,稍等片刻,您会看到命令行提示符从 > 变为 rs0 [direct: primary] test>,表示当前节点已成功选举为主节点(PRIMARY)。

验证集群状态

为了确认集群是否正常工作,可以在任意节点的MongoDB shell中执行 rs.status() 命令,返回的JSON信息中,members 数组会列出所有节点的状态,请关注 healthStr 字段,值应为 1(表示健康),以及 stateStr 字段,会显示一个 PRIMARY 和两个 SECONDARY
了副本集中成员的主要角色:

如何在CentOS 7上一步步搭建MongoDB集群详细教程?

角色 英文标识 描述
主节点 PRIMARY 处理所有客户端的写操作,并将数据变更同步到所有从节点,一个副本集中在任何时间点只有一个主节点。
从节点 SECONDARY 复制主节点的操作日志以保持数据同步,可以处理读请求(取决于客户端配置),在主节点故障时参与选举。
仲裁者 Arbiter 不存储数据,仅参与主节点选举,用于在成员数量为偶数时打破僵局,不推荐在高可用场景中使用。

至此,一个功能完备的MongoDB三节点副本集集群已在CentOS 7上成功搭建,它具备了数据冗余和自动故障转移能力,为上层应用提供了坚实的数据保障。


相关问答FAQs

Q1: 如果作为主节点的服务器宕机了,会发生什么?

A1: 副本集会自动进行故障转移,剩下的从节点会检测到主节点不可用,并发起一次选举,在选举过程中,集群暂时无法处理写请求,选举完成后,其中一个从节点会被提升为新的主节点,并开始接受写操作,整个故障转移过程通常是自动且快速的,对应用的影响极小。

Q2: 如何向一个已经存在的副本集中添加一个新的节点?

A2: 在新服务器上按照本文的步骤安装并配置好MongoDB,确保其 mongod.conf 中的 replSetName 与现有集群一致,然后启动该节点的MongoDB服务,连接到当前主节点的MongoDB shell,执行 rs.add("<新节点的IP:端口>") 命令。rs.add("192.168.1.104:27017"),MongoDB会自动将新节点加入集群,并开始进行数据同步。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 20:28
下一篇 2024-07-11 16:40

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信