在 Azure Kubernetes 服务 (AKS) 上部署 MongoDB 群集

本文介绍在 AKS 上部署 MongoDB 群集的先决条件信息,并概述部署策略。

重要

AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。

例如,Ray 的 GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。

Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理AKS 支持范围

什么是 MongoDB?

MongoDB 是一种常用的 NoSQL 数据库管理系统,旨在处理大量非结构化数据。 与使用表和行的传统关系数据库不同,MongoDB 使用面向文档的灵活方法。

注意

MongoDB 社区版不是开源软件,源代码可用,但须遵守服务器端公共许可证定义的某些限制。

MongoDB 分片群集

MongoDB 分片群集旨在通过将数据分布在多个服务器或分片上来处理大型数据集和高吞吐量。 这种架构支持水平扩展,对于数据和性能需求不断增长的应用程序而言,这一点至关重要。

下面是其关键组件的细目及其工作原理:

  • 分片:分片是包含数据子集的单个 MongoDB 实例。 每个分片都是一个副本集,或一组 MongoDB 实例,系统在这些实例之间相互复制数据,以确保高可用性和容错能力。
  • 配置服务器:配置服务器存储分片群集的元数据和配置设置。 这些服务器会跟踪群集的数据分布和路由信息。 通常使用三个配置服务器来提供冗余。
  • Mongos 实例:Mongos 是一种路由服务,可将客户端请求定向到相应的分片。 这一实例充当客户端和分片之间的中介,管理查询路由并聚合来自多个分片的结果。
  • 分片键:系统会根据分片键确定数据在各个分片之间的分布,分片键是文档中的单个索引字段或多个字段。 分片键用于确定如何在分片之间划分数据。 合适的分片键可确保数据分布均匀和查询高效。
  • 数据分布:系统按照分片键将数据分布在各个分片中。 这种分布方式有助于有效平衡负载和管理大型数据集。 MongoDB 根据分片键使用基于范围或基于哈希的分片策略。
  • 高可用性:每个分片都是一个副本集,这意味着它会在多个节点上复制数据。 此设置可确保即使一个或多个节点发生故障,数据仍可用。

什么是 Percona Operator for MongoDB?

Percona Operator for MongoDB 是 Percona 开发的开源工具,旨在自动执行 Kubernetes 环境中 MongoDB 群集的部署、管理和扩展。 它通过处理配置、扩展、备份和恢复等任务来简化操作,同时确保 MongoDB 群集的高可用性和性能。

操作员使用 Kubernetes 自定义资源定义 (CRD) 以声明方式管理 MongoDB 配置并处理故障转移、监控和警报,从而减少管理开销并采用一致的管理做法。 Percona Operator 非常适合开发、测试和生产场景,可以提高 MongoDB 部署的效率和可靠性,在云原生应用程序中的表现尤为突出。

MongoDB 群集关系图。

MongoDB 解决方案概述

建议的解决方案的目标是确保 MongoDB 群集能够有效地处理大型数据集和高吞吐量操作,并通过使用副本集、反相关性规则和适当的资源分配来保持高可用性和容错能力。

部署策略

MongoDB 部署策略包含以下组件:

  • 分片群集可实现跨多个分片分布数据,从而提高可扩展性和性能。
  • 由三节点副本集管理的配置服务器可确保容错和高可用性,同时使用反相关性规则将这些服务器分布在不同的故障域中。
  • 三个 Mongos 实例分布在可用区域内,并在群集内部开放访问,以实现负载平衡和复原能力,以便路由客户端请求。

作者

本文由 Microsoft 维护, 它最初由以下贡献者编写:

  • Nelly Kiboi | 服务工程师
  • Saverio Proto | 首席客户体验工程师
  • Don High | 首席客户工程师
  • LaBrina Loving | 首席服务工程师
  • Ken Kilty | 首席 TPM
  • Russell de Pina | 首席 TPM
  • Colin Mixon | 产品经理
  • Ketan Chawda | 高级客户工程师
  • Naveed Kharadi | 客户体验工程师
  • Erin Schaffer | 内容开发人员 2
  • Carol Smith | 高级内容开发人员

后续步骤