Docker 部署 MongoDB 副本集实践

前言

相信很多前端同学在开发 Web 应用的过程中都会使用 MongoDB 数据库,而随着 Docker 技术的不断发展,使用 Docker 部署 MongoDB 也成为了一种趋势。本文旨在提供一个完整的 MongoDB 副本集在 Docker 容器中的部署过程,并带领大家完成 MongoDB 副本集的实践。

准备工作

在开始实践前,我们需要先准备一下环境:

  • 安装 Docker 工具箱
  • 安装 Docker Compose 工具

MongoDB 副本集简介

MongoDB 副本集是一个拥有多个副本节点的 MongoDB 部署,其中有一个节点为主节点(Primary),其他节点则为从节点(Secondary)。所有写操作均在主节点上执行,而读操作则可以在主节点和从节点都执行。在主节点发生宕机或者不可用的情况下,系统会自动将从节点中选举出一个作为新的主节点。

MongoDB 副本集的优点

  • 支持容错和高可用
  • 支持读写集群,提升读写性能
  • 支持数据备份和恢复

MongoDB 副本集的不足之处

  • 无法保证完全的实时性
  • 部分写操作需要大量资源
  • MongoDB 副本集配置较为复杂

MongoDB 副本集在 Docker 中的部署

MongoDB 在 Docker 中的部署方式有很多种,本文采用了 Docker Compose 来管理容器。在本次实践中,我们将使用一个 3 节点的 MongoDB 副本集,包括一个 Primary 节点和两个 Secondary 节点。

Docker Compose 文件

下面是 MongoDB 副本集在 Docker 中的部署配置文件,名为 docker-compose.yml。

上述配置文件一共定义了三个服务,即 mongo-primary、mongo-secondary-1 和 mongo-secondary-2,分别对应了三个 MongoDB 副本集节点。下面我们就逐一来解释一下三个服务的配置:

  • mongo-primary:该服务是 MongoDB 副本集的主节点,使用的镜像为官方的 mongo 镜像。该服务挂载了一个配置文件和一个数据卷,其中配置文件 mongo.conf 配置了 MongoDB 副本集的相关参数,数据卷 data 则用于存储 MongoDB 数据库的数据。
  • mongo-secondary-1 和 mongo-secondary-2:这两个服务是 MongoDB 副本集的从节点,使用的镜像同样为官方的 mongo 镜像。这两个服务和 mongo-primary 同样挂载了配置文件和数据卷,并且都在命令中指定了 --replSet "rs0" 参数,用于建立副本集。

配置文件

下面是上述所提到的 MongoDB 配置文件 mongo.conf 的内容:

该配置文件的作用是为 MongoDB 副本集提供相关参数的配置信息。在配置文件中,我们指定了 MongoDB 数据库的 log 和 pid 文件存储路径,以及数据库 bindIp、port 等信息,并且在最后指定了副本集的名称。

构建 MongoDB 副本集

在服务配置文件和配置文件都已经准备好的情况下,我们就可以开始构建 MongoDB 副本集了。打开终端,进入到 docker-compose.yml 所在的文件夹下,运行以下命令:

该命令会启动我们之前在 Docker Compose 文件中定义的三个服务,并且以后台模式运行。当所有服务都启动成功后,我们可以在命令行中输入以下命令,进入 mongo-primary 服务的容器中查看 MongoDB 副本集的状态:

如果所有节点都成功建立,输出结果如下:

在输出结果中,我们可以看到副本集的名称为 rs0,而且三个节点的状态均为 SECONDARY 或 PRIMARY,表示我们已经成功的部署了 MongoDB 副本集。

测试 MongoDB 副本集

在成功构建 MongoDB 副本集后,我们需要测试一下集群的读写性能。

MongoDB 副本集的读写操作测试

在 mongo-primary 节点所在的容器内,可以通过以下命令打开 MongoDB Shell:

我们可以在 MongoDB Shell 中先插入一些数据:

接着,在容器内打开另一个终端,分别在 mongo-secondary-1 和 mongo-secondary-2 节点所在的容器中使用以下命令进入 MongoDB Shell:

接下来,我们在三个容器的 MongoDB Shell 中分别执行下面的命令,验证读写操作是否生效。

在 mongo-primary 节点中:

在 mongo-secondary-1 和 mongo-secondary-2 节点中:

接下来,我们在 mongo-primary 节点中进行写操作,然后在另外两个节点中读取刚刚写入的数据,验证 MongoDB 副本集是否生效。

在 mongo-primary 节点中:

在 mongo-secondary-1 和 mongo-secondary-2 节点中:

可以看到,在 mongo-primary 节点中写入的数据已经成功同步到了其他节点。

总结

本文详细介绍了如何通过 Docker Compose 部署 MongoDB 副本集,并提供了配置文件和部署过程的详细说明。MongoDB 副本集在 Web 应用开发中起着重要的作用,通过学习本文,我们可以更加深入地理解和应用 MongoDB 数据库和 Docker 技术。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6535c8be7d4982a6ebd5c52d


纠错
反馈