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

适用于 .NET 的可靠 Web 应用模式 - 规划实现

Azure 应用服务
Azure Front Door
用于 Redis 的 Azure 缓存
.NET

本文介绍如何应用可靠 Web 应用模式。 可靠 Web 应用模式是一套用于定义迁移到云时应如何修改 Web 应用(重新架构)的原则和实现技术。 它重点关注在云中取得成功所需的最低限度代码更新。

为便于应用本指南,可以部署可靠 Web 应用模式的参考实现

显示了参考实现的体系结构的示意图。参考实现的体系结构。下载此体系结构的 Visio 文件

以下指南在整个过程中均以参考实现作为示例。 要规划可靠 Web 应用模式的实现,请按照以下步骤进行:

定义业务目标

向云计算过渡的第一步是阐明业务目标。 可靠 Web 应用模式强调为 Web 应用设定当前和未来目标的重要性。 这些目标会影响对云服务和云中 Web 应用体系结构的选择。

示例:虚构公司 Relecloud 通过其本地 Web 应用程序销售票证。 Relecloud 对销售预测持乐观态度,预计 Web 应用票证需求会增加。 为了满足这一需求,他们明确了 Web 应用程序的目标:

  • 应用低成本、高价值的代码更改
  • 服务级别目标 (SLO) 达到 99.9%
  • 采用 DevOps 做法
  • 创建成本优化的环境
  • 提高可靠性和安全性

为了实现这些目标,Relecloud 的本地基础结构显然不是一款经济高效的解决方案。 因此,他们决定将 Web 应用程序迁移到 Azure,认为这才是实现当下和未来目标最经济高效的方法。

选择正确的托管服务

将 Web 应用转移到云中时,应选择符合业务要求并与本地 Web 应用当前功能相匹配的 Azure 服务。 这种一致性有助于尽可能减少重新架构的工作。 例如,使用可以保持相同数据库引擎并支持现有中间件和框架的服务。 以下各部分提供了为 Web 应用选择合适的 Azure 服务的指导。

示例:在迁移到云端之前,Relecloud 的票证 Web 应用是一个本地整体式 ASP.NET 应用。 它在两台虚拟机上运行,并具有 Microsoft SQL Server 数据库。 Web 应用面临可伸缩性和功能部署方面的常见挑战。 基于这一出发点及其业务目标,SLO 推动他们做出了服务选择。

应用程序平台

为 Web 应用选择最佳应用程序托管平台。 Azure 具有许多不同的计算选项,可满足各种 Web 应用的要求。 有关缩小选项范围的帮助,请参阅 Azure 计算决策树

示例:Relecloud 出于以下原因选择了 Azure App Service 作为应用程序平台:

  • 高级服务级别协议 (SLA):它具有高 SLA,可满足 99.9% 的生产环境 SLO 。

  • 降低管理开销:它是一个完全托管的解决方案,用于处理缩放、运行状况检查和负载均衡。

  • .NET 支持:它支持编写应用程序所用的 .NET 版本。

  • 容器化功能:Web 应用可以在云上聚合而无需容器化,但应用程序平台也支持容器化,而无需更改 Azure 服务。

  • 自动缩放:Web 应用可以根据用户流量和设置自动纵向扩缩以及横向扩缩。

身份管理

为 Web 应用选择最佳标识管理解决方案。 有关详细信息,请参阅比较标识管理解决方案身份验证方法

示例:Relecloud 出于以下原因选择了 Microsoft Entra ID

  • 身份验证和授权:这些应用程序需要对呼叫中心员工进行身份验证和授权。

  • 可缩放:可缩放以支持更大的场景。

  • 用户标识控制:呼叫中心员工可以使用其现有的企业标识。

  • 授权协议支持:支持将 OAuth 2.0 用于托管标识。

数据库

为 Web 应用选择最佳数据库。 如需帮助缩小选择范围,请参阅 Azure 数据存储决策树

示例:Web 应用使用本地 SQL Server,Relecloud 则希望使用现有的数据库架构、存储过程和函数。 Azure 上提供了多个 SQL 产品,但 Relecloud 出于以下原因选择了 Azure SQL Database

  • 可靠性:常规用途层提供高 SLA 和多区域冗余。 它可以支持高用户负载。

  • 降低管理开销:提供托管 SQL 数据库实例。

  • 迁移支持:支持从本地 SQL Server 迁移数据库。

  • 与本地配置保持一致:支持现有的存储过程、函数和视图。

  • 复原能力:支持备份和时间点还原。

  • 专业知识和最少的修改:SQL 数据库利用内部专业知识,只需少量工作即可采用。

应用程序性能监视

为 Web 应用选择应用程序性能监控。 Application Insights 是 Azure 原生应用程序性能管理 (APM) 解决方案。 这是 Azure 监控解决方案 Azure Monitor 的一项功能。

示例:Relecloud 出于以下原因选择使用 Application Insights:

  • 与 Azure Monitor 集成:提供与 Azure Monitor 的最佳集成。

  • 异常情况检测:自动检测性能异常情况。

  • 故障排除:帮助诊断正在运行的应用中的问题。

  • 监视:收集有关用户如何使用应用的信息,并可轻松跟踪自定义事件。

  • 可见性差距:本地解决方案没有应用程序性能监视解决方案。 Application Insights 提供与应用程序平台和代码的轻松集成。

缓存

选择是否在 Web 应用体系结构中添加缓存。 Azure Cache for Redis 是 Azure 的主要缓存解决方案。 它是一个基于 Redis 软件的托管内存中数据存储。

示例:Relecloud 的 Web 应用负载严重偏向于查看音乐会和场地详细信息。 它出于以下原因添加了 Azure Cache for Redis:

  • 降低管理开销:这是一项完全托管的服务。

  • 速度和量:具有高数据吞吐量和低延迟读取,适用于经常访问、慢速变化的数据。

  • 多样化的可支持性:供 Web 应用的所有实例使用的统一缓存位置。

  • 外部数据存储:本地应用程序服务器执行 VM 本地缓存。 此设置未卸载频繁使用的数据,并且无法使数据失效。

  • 非粘性会话:外部化会话状态支持非粘性会话。

负载均衡器

为 Web 应用选择最佳负载均衡器。 Azure 有多个负载均衡器。 有关缩小选项范围的帮助,请参阅为应用选择最佳负载均衡器

示例:Relecloud 需要一个 7 层负载均衡器,该负载均衡器可以跨多个区域路由流量。 Relecloud 需要一个多区域 Web 应用来实现 99.9% 的 SLO。 Relecloud 出于以下原因选择了 Azure Front Door

  • 全局负载均衡:一个 7 层负载均衡器,可以跨多个区域路由流量。

  • Web 应用程序防火墙:以本机方式与 Azure Web 应用程序防火墙集成。

  • 路由灵活性:允许应用程序团队配置入口需求,以支持未来应用程序中的更改。

  • 流量加速:使用任意广播访问最近的 Azure 接入点,并找到通往 Web 应用的最快途径。

  • 自定义域:支持具有灵活域验证的自定义域名。

  • 运行状况探测:应用程序需要智能运行状况探测监视。 Azure Front Door 会根据这些探测响应来确定用于路由客户端请求的最佳源。

  • 监视支持:支持内置报告,并为 Front Door 和安全模式提供一体式仪表板。 可以配置与 Azure Monitor 集成的警报。 它允许应用程序记录每个请求和失败的运行状况探测。

  • DDoS 保护:具有内置的 3-4 层 DDoS 保护。

  • 内容分发网络:将 Relecloud 定位为使用内容分发网络。 内容分发网络提供站点加速。

Web 应用程序防火墙

选择 Web 应用程序防火墙来保护 Web 应用免受 Web 攻击。 Web 应用程序防火墙 (WAF) 是 Azure 的 Web 应用程序防火墙,可提供集中式保护,使其免受常见的 Web 攻击和漏洞的侵害。

示例:Relecloud 需要保护 Web 应用免受 Web 攻击。 他们出于以下原因使用了 Azure Web 应用程序防火墙:

  • 全局保护:提供改进的全局 Web 应用保护,而不会降低性能。

  • 僵尸网络防护:团队可以通过监控和配置来解决僵尸网络中的安全问题。

  • 与本地保持一致:本地解决方案在 IT 部门管理的 Web 应用程序防火墙后面运行。

  • 易于使用:Web 应用程序防火墙与 Azure Front Door 集成。

配置存储

选择是否将应用配置存储添加到 Web 应用。 Azure 应用程序配置是一种服务,用于集中管理应用程序设置和功能标志。 查看应用程序配置最佳做法,以确定此服务是否适合你的应用。

示例:Relecloud 希望将基于文件的配置替换为与应用程序平台和代码集成的中央配置存储。 他们出于以下原因向体系结构添加了应用配置:

  • 灵活性:支持功能标志。 功能标志允许用户在生产环境中选择加入和退出早期预览功能,而无需重新部署应用。

  • 支持 Git 管道:配置数据必须以 Git 存储库为准。 更新中央配置存储中的数据所需的管道。

  • 支持托管标识:支持托管标识,以简化并帮助保护与配置存储的连接。

机密管理器

如果要在 Azure 中管理机密,请使用 Azure Key Vault。 可以使用 ConfigurationBuilder 对象在 .NET 应用中合并 Key Vault。

示例:Relecloud 的本地 Web 应用将机密存储在代码配置文件中,但更好的安全做法是将机密存储在外部。 尽管托管标识是连接到 Azure 资源的首选解决方案,但 Relecloud 具有管理所需的应用程序机密。 Relecloud 出于以下原因使用了密钥保管库:

  • 加密:支持静态加密和传输中加密。

  • 托管标识:应用程序服务可以使用托管标识来访问机密存储。

  • 监视和日志记录:有助于审核访问,并在存储的机密发生更改时生成警报。

  • 集成:提供与 Azure 配置存储(应用配置)和 Web 托管平台(应用程序服务)的原生集成。

存储解决方案

为 Web 应用选择最佳存储解决方案。 有关详细信息,请参阅查看存储选项

示例:在本地,Web 应用已将磁盘存储装载到每个 Web 服务器上,但是团队希望使用外部数据存储解决方案。 Relecloud 出于以下原因选择了 Azure Blob 存储

  • 安全访问:Web 应用可以通过匿名访问避免使用终结点访问公开到公共 Internet 的存储。

  • 加密:加密静态数据和传输中的数据。

  • 复原能力:支持区域冗余存储 (ZRS)。 区域冗余存储跨主要区域中的三个 Azure 可用性区域同步复制数据。 每个可用性区域都是一个独立的物理位置,具有独立的电源、冷却系统和网络。 此配置应使票证图像具备丢失复原能力。

终结点安全性

选择启用对 Azure 服务的专用访问权限。 Azure 专用链接通过虚拟网络中的专用终结点提供对平台即服务解决方案的访问权限。 虚拟网络与服务之间的流量将遍历 Microsoft 主干网络。

示例:Relecloud 出于以下原因使用了专用链接:

  • 增强安全通信:它允许应用程序以专用方式访问 Azure 平台上的服务,并减少数据存储的网络占用,以帮助防止数据泄露。

  • 最少的工作量:专用终结点支持 Web 应用平台和 Web 应用使用的数据库平台。 这两个平台都生成了现有本地配置的镜像,以尽量减少更改。

网络安全性

选择是否将网络安全服务添加到虚拟网络。 Azure Firewall 是有状态的网络防火墙,用于检查网络流量。 Azure Bastion 可安全地连接到虚拟机,而无需公开 RDP/SSH 端口。

示例:Relecloud 采用中心辐射型网络拓扑,并希望将共享网络安全服务置于中心。 Azure 防火墙通过检查支路的所有出站流量来提高网络安全,从而提高安全性。 Relecloud 需要 Azure Bastion 才能从 DevOps 子网中的跳板机进行安全部署。

选择适当的体系结构

定义 Web 应用的可用项并选择最佳云服务后,需要确定 Web 应用的最佳体系结构。 体系结构需要支持业务需求、技术要求和 SLO。

选择体系结构冗余

业务目标决定了 Web 应用所需的基础结构和数据冗余级别。 Web 应用 SLO 为了解冗余要求提供了一个良好的基准。 计算复合 SLA,得出可用性关键路径上的所有依赖项。 依赖项应包括 Azure 服务和非 Microsoft 解决方案。

为每个依赖项分配可用性估计值。 服务级别协议 (SLA) 提供了一个良好的起点,但 SLA 并不考虑代码、部署策略和体系架构连接决策。

示例:Relecloud 确定了可用性关键路径上的服务。 他们使用 Azure SLA 进行可用性估算。 根据组合 SLA 计算,Relecloud 需要多区域体系结构才能实现 99.9% 的 SLO。

选择网络拓扑

根据 Web 和网络要求选择正确的网络拓扑。 中心辐射型网络拓扑是 Azure 中的标准配置。 它具有成本、管理和安全方面的优势。 它还支持与本地网络的混合连接选项。

示例:Relecloud 选择了中心辐射型网络拓扑,通过降低成本和管理开销来提高其多区域部署的安全性。

选择数据冗余

通过将数据分布到 Azure 的区域和可用性区域来确保数据的可靠性;它们之间的地理间隔越大,可靠性就越高。

  • 设置还原点目标 (RPO)。 RPO 定义了中断期间可容忍的最大数据丢失量,从而指导数据需要复制的频率。 例如,一小时的 RPO 意味着最多可接受一小时的近期数据丢失。

  • 实现重复数据复制。 将数据副本与体系结构和 RPO 保持一致。 Azure 通常支持可用性区域内的同步复制。 利用多个区域轻松提高可靠性。 对于主动-被动设置中的多区域 Web 应用,根据 Web 应用的 RPO 将数据复制到被动区域,从而确保复制频率超过 RPO。 主动-主动配置需要跨区域进行近乎实时的数据同步,这可能需要对代码进行调整。

  • 创建故障转移计划。 制定故障转移(灾难恢复)计划,概述对中断的应对策略,具体由停机或功能丧失决定。 指定最大可接受停机时间的还原时间目标 (RTO)。 确保故障转移过程比 RTO 更快。 确定自动或手动故障转移机制,以实现一致性和控制,并详细说明恢复正常运行的流程。 测试故障转移计划,以确保其有效性。

下一步

本文介绍如何为规划可靠 Web 应用模式的实现。 下一步是应用可靠 Web 应用模式的实现技术。