如何在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
下一篇 2025-10-04 20:31

相关推荐

  • centos启动程序

    在CentOS系统中,启动程序是系统运行中不可或缺的一环,以下将详细介绍如何在CentOS中启动程序,包括使用系统服务管理器如systemctl和service,以及手动启动程序的方法,使用systemctl启动程序systemctl是CentOS系统中用于管理系统和服务的一个强大的命令行工具,以下是如何使用s……

    2026-01-27
    004
  • 发送短信验证怎么发送_发送短信验证码

    要发送短信验证码,通常需要通过短信服务提供商的api接口。以下是发送短信验证码的一般步骤:,,1. 选择短信服务提供商并注册账号。,2. 获取api接入权限和相关密钥。,3. 根据提供商的api文档,使用http/https请求发送短信。,4. 在请求中包含必要的参数,如手机号、验证码内容等。,5. 处理api响应,确认短信是否成功发送。,,请根据具体服务提供商的指南操作,并确保合规性。

    2024-07-01
    0014
  • 如何获取适用于繁体中文市场的企业网站源码和后台系统?

    您提供的内容涉及繁体企业网站源码以及企业网站和APP的后台管理。这可能指的是一套用于搭建和管理繁体中文企业网站的源代码,同时包含网站和移动应用的后台管理系统。

    2024-08-08
    008
  • 分布式应用软件_方案概述

    分布式应用软件方案概述:通过多台计算机协同工作,实现高性能、高可用性和可扩展性的应用程序。}

    2024-06-23
    0016

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信