返回

用Docker构建基于MongoDB的主从集群

见解分享

我们处在一个以数据为中心的时代,而数据库是数据管理和访问的基石。MongoDB 作为最流行的 NoSQL 数据库之一,因其高性能、可扩展性和灵活性的优点而备受青睐。

在生产环境中,高可用性和数据冗余至关重要。主从集群架构通过引入一个或多个从节点来镜像主节点上的数据,为 MongoDB 提供了这些关键特性。本文将指导您使用 Docker 构建一个基于 MongoDB 的主从集群。

Docker 简介

Docker 是一种容器化平台,允许您在隔离的环境中运行应用程序。Docker 容器是轻量级的、可移植的,并且包含运行特定应用程序所需的所有代码、运行时、系统工具、库和设置。使用 Docker,您可以在不同的环境中一致地部署和管理应用程序,而无需担心兼容性问题。

构建 MongoDB 主从集群

要构建基于 MongoDB 的 Docker 主从集群,我们需要执行以下步骤:

1. 创建 Docker 网络

首先,我们需要创建一个 Docker 网络,以便我们的容器可以相互通信。为此,请运行以下命令:

docker network create mongo-net

2. 运行 MongoDB 主容器

接下来,我们将运行 MongoDB 主容器。为此,请运行以下命令:

docker run -d \
--name mongo-primary \
--network mongo-net \
-p 27017:27017 \
mongo:3.4

此命令执行以下操作:

  • 创建一个名为 mongo-primary 的 MongoDB 容器。
  • 将容器连接到 mongo-net 网络。
  • 将容器的 27017 端口映射到主机的 27017 端口,以便我们可以从主机访问数据库。
  • 使用 MongoDB 3.4 镜像运行容器。

3. 运行 MongoDB 从容器

现在,让我们运行一个或多个 MongoDB 从容器。为此,请运行以下命令:

docker run -d \
--name mongo-replica1 \
--network mongo-net \
-e MONGO_REPLICA_SET_NAME=my-replica-set \
-e MONGO_PRIMARY_HOST=mongo-primary \
mongo:3.4

此命令执行以下操作:

  • 创建一个名为 mongo-replica1 的 MongoDB 从容器。
  • 将容器连接到 mongo-net 网络。
  • 设置环境变量 MONGO_REPLICA_SET_NAMEmy-replica-set,以指定从容器属于哪个副本集。
  • 设置环境变量 MONGO_PRIMARY_HOSTmongo-primary,以指定主容器的主机名。
  • 使用 MongoDB 3.4 镜像运行容器。

您可以重复此命令以添加更多从容器。

4. 初始化副本集

为了让从容器镜像主容器上的数据,我们需要初始化一个副本集。为此,请连接到主容器并运行以下命令:

mongo --port 27017

在 MongoDB shell 中,运行以下命令:

rs.initiate(
  {
    _id: "my-replica-set",
    members: [
      { _id: 0, host: "mongo-primary:27017" },
      { _id: 1, host: "mongo-replica1:27017" }
    ]
  }
)

此命令执行以下操作:

  • 初始化一个名为 my-replica-set 的副本集。
  • mongo-primarymongo-replica1 添加为副本集成员。

5. 验证副本集

要验证副本集是否正常工作,请运行以下命令:

rs.status()

此命令将打印副本集的状态,包括成员列表和同步信息。