你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure CLI 在 AKS 上部署高可用性 PostgreSQL 数据库

在本指南中,你将使用 Azure CLI 在 AKS 上部署跨多个 Azure 可用区的高可用性 PostgreSQL 群集。

本文逐步介绍了在 Azure Kubernetes 服务 (AKS) 上设置 PostgreSQL 群集的先决条件,并概述了完整的部署过程和体系结构。

重要

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

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

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

先决条件

部署过程

本指南介绍如何:

  • 使用 Azure CLI 创建多区域 AKS 群集。
  • 使用 CNPG operator 部署高可用性 PostgreSQL 群集和数据库。
  • 设置使用 Prometheus 和 Grafana 监视 PostgreSQL。
  • 将示例数据集部署到 PostgreSQL 数据库。
  • 执行 PostgreSQL 和 AKS 群集升级。
  • 模拟群集中断和 PostgreSQL 副本故障转移。
  • 执行 PostgreSQL 数据库的备份和还原。

部署体系结构

此图演示了一个 PostgreSQL 群集设置,其中一个主要副本和两个只读副本由 CloudNativePG (CNPG) operator 管理。 该体系结构提供在 AKS 群集上运行的高可用性 PostgreSQL,此群集可通过跨副本进行故障转移来承受区域中断。

备份存储在 Azure Blob 存储上,这提供了另一种在主副本的流式复制出现问题时恢复数据库的方法。

CNPG 体系结构示意图。

注意

对于需要在数据库级别进行数据分离的应用程序,可以使用 postInitSQL 命令和类似命令添加更多数据库。 目前无法使用 CNPG 运算符以声明方式添加更多数据库。 详细了解 CNPG 运算符。

存储注意事项

使用的存储类型可能对 PostgreSQL 性能产生很大影响。 在本指南的后面部分,您将选择最适合您目标和性能需求的选项。

存储类型 兼容的驱动程序 DESCRIPTION
高级·SSD Azure 磁盘 CSI 驱动程序或 Azure 容器存储 最大数据复原能力。 Azure 高级 SSD 提供高性能存储,并与 Azure 高级区域冗余存储(ZRS)无缝配合工作。 高级 SSD 基于特定大小进行预配,每个大小提供特定的 IOPS 和吞吐量级别。
高级 SSD v2 Azure 磁盘 CSI 驱动程序或 Azure 容器存储 最佳性价比。 Azure 高级 SSD v2 提供比 Azure 高级 SSD 更高的性能,同时通常成本也更低。 与高级 SSD 不同,高级 SSD v2 没有专用大小。 可以将 Premium SSD v2 设置为所需的任何受支持的大小,并在不停机的情况下对性能进行精细调整。 Azure 高级 SSD v2 磁盘有一些应注意的限制。 有关完整列表,请参阅高级 SSD v2 限制
本地 NVMe 或临时 SSD (临时磁盘) Azure 仅限容器存储 最大性能。 临时磁盘是选定的 VM 系列上可用的本地 NVMe 和临时 SSD 存储。 它们为 AKS 群集提供最高可能的 IOPS、吞吐量和子毫秒延迟。 还可以使用 Azure 容器存储利用临时磁盘的高性能,这是一种托管的 Kubernetes 存储解决方案,可动态为有状态工作负荷(如 PostgreSQL)预配永久性卷。 但是,由于这些磁盘驻留在托管群集的本地 VM 上,因此数据不会保存到 Azure 存储服务。 因此,如果停止或解除分配群集,这些磁盘上存储的任何数据都将丢失。 为了解决此限制,本指南后面的部分将介绍如何设置 PostgreSQL 数据的定期备份到 Azure Blob 存储

后续步骤

供稿人

Microsoft 会维护本文。 本系列文章为以下参与者的原创作品:

  • Ken Kilty | 首席 TPM
  • Russell de Pina | 首席 TPM
  • Adrian Joian | 高级客户工程师
  • Jenny Hayes | 高级内容开发人员
  • Carol Smith | 高级内容开发人员
  • Erin Schaffer | 内容开发人员 2
  • Adam Sharif | 客户工程师 2