作为现代数据库,MongoDB 最初是为云而构建的,现在具有内置功能,可帮助通过分布式工作负载保持高可用性和轻松的可扩展性。虽然它确实可以作为单个实例运行,但大多数情况下作为集群运行。在本文中,您将学习到 MongoDB 中不同类型的集群,以及如何在 MongoDB Atlas 中设立集群。
MongoDB 集群是什么?
在 MongoDB 中,集群可以指两种不同的架构。这些架构既可以表示副本集,也可以表示集群。让我们仔细看看两者。
副本集
MongoDB 副本集是一组由一台或多台服务器组成的,包含数据精确副本的服务器。虽然从技术上可以有一个或两个节点,但建议的最低数量是三个。主节点负责提供应用程序的写入和读取操作,而两个从节点包含数据的副本。
MongoDB 中的典型副本集。
如果主节点由于某种原因变得不可用,则会通过选举过程选出新的主节点。这个新的主节点现在负责读写操作。
如果主节点不可用,来自客户端应用程序的流量将被重定向到新的主节点。
故障服务器重新在线后,它将与主节点同步,并成为集群中的新从节点。
当上一个主节点重新在线时,它会作为从节点返回。
目标是为您的应用程序提供高可用性。即使在服务器故障的情况下,您的客户端应用程序仍然可以连接到集群并访问数据,从而减少整体潜在的停机时间。
分片集群
分片集群是一种通过将数据分布在多个副本集上来实现水平扩展的方法。当在集合上执行读取或写入操作时,客户端会将请求发送到路由器(mongos)。然后,路由器将通过配置服务器验证数据存储在哪个分片,并将请求发送到特定集群。
MongoDB 中的典型分片集群。
每个分片都会包含其自己的副本集。您还应拥有多个路由器或配置服务器,以确保高可用性。通过这种架构,您可以随意扩展数据库,而无需担心可用性或存储容量。
创建 MongoDB 集群
MongoDB 集群有多种方法可供创建,具体取决于您的需求。最简单的方法是使用 Atlas,这是由 MongoDB 提供的数据库即服务平台。有关详细的说明,请参阅文档。如果您需要在您的基础架构上运行 MongoDB,本文稍后会提供相关说明。
要在 Atlas 中创建 MongoDB 集群,请遵循以下步骤。
1. 通过 https://cloud.mongodb.com 登录 MongoDB Atlas 帐户。
2. 单击“创建”按钮。
3. 选择集群类型(专用、无服务器、共享)。
4. 选择云提供商和地区。
5. 单击“创建集群”。
您的 MongoDB 集群将开始预配,并将在几分钟内可供您使用。在创建集群时,您会看到许多可满足您特定需求的选项。下一节将介绍每个设置选项。
在 Atlas 上设置 MongoDB 集群
每个应用程序都不尽相同,MongoDB Atlas 为您提供了多种设立您的集群的方法,以满足您的特定需求。某些特定的配置需要提前考虑,而您可以随时更改其他配置。使用这些设置,您将在生产环境中为 Atlas 实施所有 最佳实践。在本节中,您将了解详情有关在初始集群创建时可以调整的各种配置的更多信息。
部署类型
部署类型是您需要选择的第一个选项。根据您决定的实例类型,其他配置选项会有所不同。
- 无服务器:从定价角度来看,这种类型的集群是最灵活的。它适用于流量不频繁或变化的应用程序。可能的配置保持在最低限度。
- 专用:专用集群是为生产负载而设计的。它可以支持多种服务器尺寸以及高级配置。您应该为您的生产环境选择此项。
- 共享型:这些集群旨在用于探索 MongoDB。他们可以为您提供沙盒,您可以在其中免费试用 MongoDB。可用的服务器配置有些限制。
有关不同数据库部署类型的更多信息,请参阅文档。
全局集群配置
如果您需要多个分片集群,并在特定位置进行读写操作,则需要启用全局集群配置。在这里,您可以精确选择每个集群的位置,并配置用户国家与他们用于访问数据的服务器之间的映射。
云提供商和地区:
无论您选择哪种部署类型,您都需要选择云提供商以及您希望部署集群的特定地区。您可以在三大主要云提供商中的任何一家上实例化 MongoDB 集群。如果您想确保更好的可用性,可以将集群的每个节点部署在不同的地区,甚至不同的云上。为此,您将需要使能够多云、多区域和工作负载隔离性选项。在这里,您将能够配置作为副本集一部分的节点数量和类型(可选、只读或分析)。
集群层
现在,您已选择区域和云提供商,您需要选择要用于集群中节点的层级。此配置将对您的集群定价产生最显著的影响。有广泛的可用选项,您可以进一步调整每个选项。请考虑您所需的 CPU 和 RAM 数量。您的资源需求将帮助您找到适合您集群的正确层级。
然后,您可以通过调整存储大小、切换自动伸缩选项以及所需的 IOPS 来进一步调整集群配置。在 AWS 的更高层级 (M40+) 上,您还可以选择服务器的类别(低 CPU、通用或本地 NVMe 固态硬盘),这也会影响 CPU、RAM 和存储容量。
其他设置
在此最后一个标签页中,您将找到许多可以添加到集群中的附加服务。第一个选项是您想用于 MongoDB 的版本。然后,您还可以选择使能够或禁用自动备份。您还可以扩展其他设置,这将为您提供更高级的选项,例如原生分片集群、添加BI connector,以及管理您的加密密钥。
您设立的大多数设置将来都可以按需更改,随着应用程序的发展,这是一种强大的能力。
在不同环境中创建 MongoDB 集群
如果您无法选择基于云的 MongoDB 实例,或者您需要在基础架构上运行集群,则可以在支持的操作系统上安装 MongoDB。除了 MongoDB 本身,建议安装 Ops Manager 或 Cloud Manager 来管理您的集群。
在 Linux(Ubuntu、CoreOS)上创建 MongoDB 集群
要在 Linux 上创建 MongoDB 集群,您需要运行三个 MongoDB 实例。这些实例需要能够在本地网络上相互通信。
有关在 Linux 上设立集群的详细说明,请参阅文档。
使用 Docker 创建一个 MongoDB 集群
如果您想在您的环境中安装 MongoDB 的本地实例,或者设立可以与队友共享的临时开发环境,您可能需要使用 Docker。为此,您可以在 Docker 中启动三个 MongoDB 本地实例,然后按照文档中的说明进行操作。
后续步骤
既然您已经了解如何创建和设立您的集群,您可能希望了解详情关于如何为您的需求找到合适的集群拓扑结构的信息。为何不继续在 MongoDB University 上观看集群设置拓扑结构视频呢?您熟悉 MongoDB 集群的所有可能配置后,您就可以免费试用 MongoDB Atlas。按照您认为合适的方式设置好服务器后,您现在可以确保您的数据可供您的用户使用,并且您可以在需要时进行扩展。



