你当前正在访问 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 支持范围。
先决条件
- 本指南假设读者基本了解核心 Kubernetes 概念以及 PostgreSQL。
- 你需要 Azure 帐户中的订阅上的“所有者”或“用户访问管理员”和“参与者”Azure 内置角色。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 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 运算符。
后续步骤
供稿人
Microsoft 会维护本文。 本系列文章为以下参与者的原创作品:
- Ken Kilty | 首席 TPM
- Russell de Pina | 首席 TPM
- Adrian Joian | 高级客户工程师
- Jenny Hayes | 高级内容开发人员
- Carol Smith | 高级内容开发人员
- Erin Schaffer | 内容开发人员 2
- Adam Sharif | 客户工程师 2