你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在本指南中,你将使用 Azure CLI 在 AKS 上部署跨多个 Azure 可用区的高可用性 PostgreSQL 群集。
本文逐步介绍了在 Azure Kubernetes 服务 (AKS) 上设置 PostgreSQL 群集的先决条件,并概述了完整的部署过程和体系结构。
重要
AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。
例如,Ray GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。
Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。
先决条件
- 本指南假设读者基本了解核心 Kubernetes 概念以及 PostgreSQL。
- 你需要 Azure 帐户中的订阅上的“所有者”或“用户访问管理员”和“参与者”Azure 内置角色。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
还需要安装以下资源:
- Azure CLI 版本 2.56 或更高版本。
- Azure Kubernetes 服务 (AKS) 预览版扩展。
- jq 1.5 或更高版本。
- kubectl 1.21.0 或更高版本。
- Helm 3.0.0 或更高版本。
- openssl 3.3.0 或更高版本。
- Visual Studio Code 或等效项。
- Krew 0.4.4 或更高版本。
- kubectl CloudNativePG (CNPG) 插件。
部署过程
本指南介绍如何:
- 使用 Azure CLI 创建多区域 AKS 群集。
- 使用 CNPG operator 部署高可用性 PostgreSQL 群集和数据库。
- 设置使用 Prometheus 和 Grafana 监视 PostgreSQL。
- 将示例数据集部署到 PostgreSQL 数据库。
- 执行 PostgreSQL 和 AKS 群集升级。
- 模拟群集中断和 PostgreSQL 副本故障转移。
- 执行 PostgreSQL 数据库的备份和还原。
部署体系结构
此图演示了一个 PostgreSQL 群集设置,其中一个主要副本和两个只读副本由 CloudNativePG (CNPG) operator 管理。 该体系结构提供在 AKS 群集上运行的高可用性 PostgreSQL,此群集可通过跨副本进行故障转移来承受区域中断。
备份存储在 Azure Blob 存储上,这提供了另一种在主副本的流式复制出现问题时恢复数据库的方法。
注意
对于需要在数据库级别进行数据分离的应用程序,可以使用 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