Azure Database for PostgreSQL 的体系结构最佳做法

Azure Database for PostgreSQL 是 Azure 中基于 PostgreSQL 开源关系数据库的关系数据库服务。 它是一个完全托管的基于云的数据库解决方案,它支持任务关键型工作负荷,具有可预测的性能、安全性、高可用性和动态可伸缩性。 Azure Database for PostgreSQL 基于 PostgreSQL 数据库引擎的社区版本构建。 它与 PostgreSQL 服务器社区版兼容,并支持 PostgreSQL 扩展功能,例如 PostGIS 和 TimescaleDB。

本文假设作为架构师,你已查看 了 Azure 数据选项 ,并选择了 Azure Database for PostgreSQL 作为工作负荷的数据存储。 本文中的指南提供了对应于 Well-Architected 框架支柱原则的架构建议。

重要

如何使用本指南

每个部分都有一个 设计清单,该清单列出关注的架构领域,以及针对技术范围本地化的设计策略。

此外,还包括有助于具体化这些策略的技术功能的建议。 这些建议并不表示可用于 Azure Database for PostgreSQL 及其依赖项的所有配置的详尽列表。 而是列出与设计视角相匹配的关键建议。 使用建议生成概念证明或优化现有环境。

演示关键建议的基础体系结构:
适用于 Java 的可靠 Web 应用模式

技术范围

此次审查重点分析以下 Azure 资源的相关决策:

  • 适用于 PostgreSQL 的 Azure 数据库

可靠性

可靠性支柱的目的是通过 建立足够的复原能力和从故障快速恢复来提供持续的功能。

可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。

设计清单

  • 熟悉 Azure Database for PostgreSQL 产品可靠性指南。
    有关详细信息,请参阅以下资源:

  • 使 Azure Database for PostgreSQL 的可靠性和恢复目标与工作负荷目标保持一致。 选择可支持可靠性和恢复目标的合适 Azure Database for PostgreSQL SKU。

  • 确定 Azure Database for PostgreSQL 实例的相应高可用性和冗余配置。 确定是需要区域冗余配置还是区域配置来满足可靠性要求。

  • 将 Azure Database for PostgreSQL 实例的恢复纳入灾难恢复规划和练习。 确保根据恢复目标可恢复整个工作负荷。

  • 将 Azure Database for PostgreSQL 实例合并到可观测性平台中。 启用增强的指标以监视实例的运行状况。 在您的监视解决方案中纳入高可用性健康监控

建议

建议 好处
选择适当的 高可用性配置 配置高可用性后,Azure Database for PostgreSQL 服务器会自动预配和管理备用副本。 此设置可确保服务在发生区域中断期间保持可用且不会丢失数据。
配置 异地冗余备份 可以部署跨区域只读副本,以保护数据库免受区域级故障的影响。 如果主服务器区域不可用,则会在所选区域中启用异地冗余备份,并帮助进行灾难恢复。

还可以使用 Azure 备份保管库实现异地冗余,以便长期存储恢复点。 如果发生区域性服务中断或灾难,可以使用备份将数据库服务器还原到 Azure 配对区域,从而最大限度地减少停机时间。

Azure 备份还为 Azure Database for PostgreSQL 提供异地冗余。 此功能可提高效率,并减少灾难或区域性中断期间的停机时间。
重新验证备份和还原策略。 定期测试备份和还原策略可确保在发生故障时恢复数据库和维护作。

安全

安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。

安全设计原则通过对 Azure Database for PostgreSQL 的技术设计应用方法,为实现这些目标提供了高级设计策略。

设计清单

  • 审查安全基线。 若要增强工作负荷的安全态势,请查看 Azure Database for PostgreSQL 的 Azure 安全基线

  • 实施严格的、有条件的、可审核的标识和访问管理。 使用 Microsoft Entra ID 进行身份验证和授权来增强标识管理。

  • 应用网络分段和安全控制。 使用服务器级别的内置防火墙以及虚拟网络防火墙机制,将实例与其他工作负荷组件和公共网络隔离开来。

  • 使用本机安全功能添加额外的保护层。 通过配置行级安全性和连接限制来帮助防止恶意活动。

建议

建议 好处
实现 网络安全组防火墙 来控制对数据库的访问。 作为安全零信任模型的一部分,使用网络分段将组件(如应用程序和数据库服务器)之间的通信路径限制为仅需要的内容。 可以使用网络安全组和应用程序安全组来实现此功能。
通过 Azure 专用链接连接到数据库。 专用链接允许为 Azure Database for PostgreSQL 创建专用终结点,以扩展虚拟网络中的服务。
使用 Microsoft Entra ID 进行身份验证和授权来增强标识管理。 可以使用 Microsoft Entra 身份验证通过 Microsoft Entra 中的托管标识连接到 Azure Database for PostgreSQL。
配置 行级别安全性 行级别安全性是一项 PostgreSQL 安全功能,允许数据库管理员制定策略,来控制一个或多个角色如何显示和操作特定数据行。 行级别安全性是可以应用于 PostgreSQL 数据库表的额外筛选器。
如果需要符合性, 请使用客户管理的密钥(CMK) 进行数据加密,并将密钥存储在 Azure Key Vault 中。 CMK 可让你完全控制加密密钥的生命周期,包括密钥轮换,以便与公司策略保持一致。 Key Vault 可在自己的专用 Key Vault 实例中集中管理和组织加密密钥。
为多次登录失败的 IP 地址启用连接流控。 connection_throttling设置服务器参数,通过enabled限制来自同一 IP 地址的重复连接尝试,帮助保护数据库免受恶意登录尝试和分布式拒绝服务(DDoS)攻击。
定期进行安全审核。 定期执行安全审核有助于识别和修正潜在的漏洞。

成本优化

成本优化侧重于 检测支出模式、优先考虑关键领域的投资,以及优化其他 以满足组织预算,同时满足业务需求。

成本优化设计原则提供高级设计策略,以实现这些目标,并在与 Azure Database for PostgreSQL 及其环境相关的技术设计中做出必要的权衡。

设计清单

  • 估算初始成本。 在成本建模练习中,使用 Azure 定价计算器评估与工作负荷中的 Azure Database for PostgreSQL 相关的近似成本。

  • 为工作负荷选择适当的服务层级。 确定计算资源的“突发性能”、“通用型”还是“内存优化”定价层是否满足用例需求。

  • 应用明智的缩放策略。 若要确定何时以及如何缩放 Azure Database for PostgreSQL 资源,请持续观察和分析工作负荷容量和需求。

  • 利用可用的折扣。 考虑一年或三年的计算预留。 预留实例可以为计算资源节省大量成本。

  • 使用预配的存储。 如果备份存储空间未超过 100% 的总预配服务器存储空间,则无需额外付费。

  • 了解冗余成本。 使用区域冗余或区域配置可增加实例成本,因此请仔细考虑冗余设计。

  • 了解受保护的实例和备份存储成本。 使用 Azure 备份备份 Azure Database for PostgreSQL 时,每 250 GB 的受保护实例将产生费用,备份存储费用则根据总存储数据量和冗余类型计算。

  • 部署到与应用相同的区域。 部署到与应用程序相同的区域,以最大程度地降低传输成本。

  • 合并数据库和服务器。 在实际情况下,将多个数据库和服务器合并到单个服务器有助于降低成本。

建议

建议 好处
选择正确的 级别和 SKU 选择适当的层和 SKU 有助于避免在资源过度配置上浪费资金。 Azure 顾问提供建议,包括服务器权限调整建议,以优化和减少整个 Azure 支出。
在工作负荷需求发生变化时缩放计算和存储资源 可以根据需要对计算资源进行垂直(增加或减少)和水平(扩展或收缩)缩放。 纵向扩展后无法缩减存储。
使用启动/停止功能。 使用启动/停止功能可阻止服务器在不需要时运行。

卓越运营

卓越运营主要侧重于 开发实践、可观测性和发布管理的各个过程。

卓越运营设计原则 提供了一个高级设计策略,用于实现这些运营需求目标。

设计清单

  • 优化数据库的可恢复性。 定义备份和保留策略以满足合规性要求。

  • 自动化操作任务。 使用 自动化任务 自动执行启动和停止服务器、缩放资源和其他任务等任务。

  • 监视数据库运行状况和性能。 收集和分析实例中的日志和指标,以主动检测潜在问题。

建议

建议 好处
单独使用 Azure 备份策略 或本机自动备份来备份数据库。 Azure Database for PostgreSQL 提供自动备份和可按时间点还原的功能用于您的数据库。 可以为备份配置最长 35 天的保留期。

使用 Azure 备份定义创建备份的方式和时间、恢复点的保留期以及数据保护和恢复规则。 可以在 Azure 备份保管库中保留最多 10 年的恢复点。 还可以使用 Azure 业务连续性中心管理备份和还原作。
计划 自定义维护时段 以应用服务更新。 可以为 Azure 订阅中的每个 Azure Database for PostgreSQL 定义自定义计划。 使用自定义计划,您可以选择一周中的某一天和一小时维护时段的开始时间来为服务器指定维护时段。
监视服务器 ,确保其正常运行并按预期执行。 Azure Database for PostgreSQL 具有各种指标,可深入了解支持 Azure Database for PostgreSQL 实例的资源的行为。 还可以启用增强的指标,以便对数据库进行精细监视和警报。

性能效率

性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。

性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。

设计清单

  • 优化查询。 使用原生特性查找优化查询的机会。

  • 优化索引。 使用索引优化等功能自动分析查询模式,并接收可作的建议来创建或删除索引以提高性能。

  • 卸载只读操作。 如果应用程序支持只读连接字符串,则可以将只读操作卸载到只读副本。

建议

建议 好处
使用 查询存储 跟踪一段时间内的查询性能。 查询存储可帮助你快速找到运行时间最长且资源密集型最高的查询,从而简化了性能问题的故障排除。
使用 Query Performance Insight 确定工作负荷中消耗量最大的资源和长时间运行的查询。 Query Performance Insight 可帮助你识别长时间运行的查询及其随时间的变化,确定影响查询的等待类型、按频率分析排名靠前的数据库查询以及其他优势。
使用 索引优化和查询存储库来分析跟踪的查询并提供建议。 索引优化分析查询存储所跟踪的工作量。 它生成索引建议,以提高已分析工作负荷的性能,或者删除重复索引或未使用的索引。 索引优化有助于识别有益的索引、重复索引和未使用的索引。
使用 智能优化 自动增强性能并帮助防止问题。 智能优化会持续监视 Azure Database for PostgreSQL 灵活服务器数据库的状态,并动态地让数据库适应工作负荷。

Azure 策略

Azure 提供了一组与 Azure Database for PostgreSQL 及其依赖项相关的大量内置策略。 可以通过 Azure Policy 审核上述一些建议。 例如,可以检查以下情况:

若要进行全面的治理,请查看 Azure Database for PostgreSQL 的 Azure Policy 内置定义 ,以及可能影响数据存储安全性的其他策略。

Azure 顾问建议

Azure 顾问是一名个性化的云顾问,可帮助你遵循最佳做法来优化 Azure 部署。

有关详细信息,请参阅 Azure 顾问