如何在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)
热舞的头像热舞
Mac通过SSH连接CentOS服务器时登录失败怎么解决?
上一篇 2025-10-04 20:28
虚拟主机开通后下一步该做什么?
下一篇 2025-10-04 20:31

相关推荐

  • 分答网站_网站备份

    分答网站是一个知识分享平台,用户可以在这里提问、回答问题,获取知识和经验。网站备份是指将网站上的数据和文件进行复制和存储,以防止数据丢失或损坏。

    2024-07-20
    009
  • 防止服务器攻击_漏洞攻击

    确保服务器安全,定期更新补丁,使用防火墙和入侵检测系统。限制访问权限,加密敏感数据,进行安全审计和漏洞扫描。

    2024-07-15
    0018
  • CentOS下SVN主从库同步,svnsync配置的详细步骤是什么?

    在 CentOS 系统中,对 Subversion (SVN) 仓库进行同步是保障数据安全、实现负载均衡和异地容灾的关键操作,通过同步,我们可以创建一个源仓库的完整镜像,确保在主库出现问题时,能够快速切换到备用库,本文将详细介绍在 CentOS 环境下使用 svnsync 工具实现 SVN 仓库同步的完整流程……

    2025-10-04
    007
  • CentOS如何修改云服务器yum源?详细步骤是什么?

    在CentOS系统中,修改软件源(Repository)是提升系统更新效率、确保软件包下载速度的重要操作,默认情况下,CentOS使用官方源,但由于网络环境或地理位置差异,国内用户访问官方源时可能存在速度慢、连接失败等问题,替换为国内镜像源成为更优选择,本文将详细介绍CentOS修改云源的步骤、注意事项及相关配……

    2025-11-03
    0026

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信