Microsoft AZ-305: 计算与应用架构 — 学习指南
属于 Microsoft Azure Solutions Architect Expert AZ-305 — 学习指南. 使用经过验证的答案练习: Microsoft 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
Azure 计算涵盖了基础设施、平台和无服务器执行模型。一个稳健的架构需要在可用性、成本、性能、可操作性和安全性之间取得平衡,同时要与工作负载的生命周期和部署拓拓扑相匹配。理解虚拟机、规模集、App Service、Functions、容器运行时、编排平台、批处理调度、Service Fabric 和 Azure VMware Solution 的功能与权衡,有助于实现精确且适合工作负载的设计。
虚拟机和规模集
Azure 虚拟机提供多种大小系列,针对不同工作负载进行了优化,例如通用型 (Dv5, Dasv5)、计算优化型 (Fsv2)、内存优化型 (Ev5, Ebdsv5)、存储优化型 (Lsv3,带本地 NVMe)、高内存型 (Mv2)、HPC (HBv3/HC) 和 GPU (NCas, ND) 工作负载。应根据 CPU/内存比、临时存储需求、网络吞吐量以及 AMD 与 Intel、加速网络和临时 OS 磁盘等特性来选择大小。
可用性集将虚拟机分布在不同的故障域(机架/电源)和更新域中,以减少单个数据中心内的相关故障。可用性区域将虚拟机放置在同一区域内物理上分离的数据中心,以更高的 SLA 和真正的区域冗余为代价,换取了跨区域延迟。邻近放置组将区域性或非区域性资源共同定位在物理上紧密约束的拓扑中,以最大限度地减少延迟——这对于通信频繁的多层系统(例如,应用层到数据库层)非常有用。
Spot 虚拟机以极大的折扣使用未使用的容量,但会因价格或容量压力而被逐出。逐出策略(解除分配 vs 删除)和最高价格 (Max Price) 决定了其行为。Spot 虚拟机是无状态、可中断工作负载的理想选择,例如 CI 构建、批处理和大规模测试集群,但不适用于关键的有状态服务。
虚拟机规模集 (VMSS) 用于编排具有统一生命周期、健康探测、自动实例修复和跨区域部署的相同虚拟机。自动缩放使用 Azure Monitor 规则或计划,对 CPU、内存(通过自定义指标)、队列深度或请求计数等指标做出反应。预测性自动缩放可以根据历史模式进行预先配置。编排模式包括 Uniform(同构实例)和 Flexible(异构实例,支持混合虚拟机系列和优先级)。滚动升级和自动映像升级使用健康检查和升级域来安全地排空、验证和推进升级,并在健康状况下降时进行回滚。VMSS 集成了 Spot 容量,并通过容量重新平衡和优先级排序,使得伸缩操作会优先处理易于被逐出的实例。将 VMSS 与可用性区域结合以实现高可用性,与 PPG 结合以实现低延迟,并使用应用程序健康扩展来确保安全部署。
Web、无服务器和应用平台
Azure App Service 为 Windows/Linux 代码和容器提供托管主机服务。计划决定了计算隔离级别和功能:
- Free/Shared 用于开发/测试;Basic/Standard 用于生产环境入门;Premium v3 提供增强的性能、VNet 集成、超线程隔离和部署槽位;Isolated v2 (App Service Environment) 用于单租户、网络隔离的托管。 部署槽位支持蓝绿部署和金丝雀部署,具有预热、槽位特定设置、流量递增和零停机交换等功能。VNet 集成提供两个维度:通过委托子网进行出站区域集成(通过 NAT 网关或自定义路由进行路由),以及使用 Private Endpoints 进行入站私有访问以禁用公共暴露,同时与私有 DNS 集成。App Service 访问限制、身份验证/授权和托管标识可降低边界和凭据风险。纵向扩展 (Scale up) 会更改计划的层级/大小;横向扩展 (Scale out) 会通过与 Azure Monitor 关联的自动缩放规则增加实例数量。
Azure Functions 提供事件驱动的计算。托管选项:
- Consumption:按执行次数计费,具有动态扩展和冷启动的权衡,有最大执行时长限制,并且在 Windows 上使用 Premium 计划之前不支持 VNet 集成;是突发性工作负载的理想选择。
- Premium:预热实例消除了冷启动,支持 VNet 集成、长时间运行的执行,并为企业集成提供可预测的性能。
- Dedicated (App Service Plan):在预留的 App Service 实例上运行,适用于稳定的工作负载或与 Web 应用共同托管。 Durable Functions 引入了业务流程 (orchestrations)、活动 (activities) 和实体 (entities),用于实现长时间运行、可靠的工作流,如扇出/扇入、人工交互和 Saga 模式,并具有持久化状态和重放语义。绑定和触发器将代码与服务解耦:HTTP、Timer、Service Bus、Event Hubs、Event Grid、Storage Queues/Blobs、Cosmos DB 和自定义绑定。并发性、缩放行为和检查点设置因计划而异;设计时应考虑幂等性和退避策略。
容器和 Kubernetes
Azure Container Instances (ACI) 提供快速的无服务器容器,无需进行集群管理。容器组共享网络命名空间、IP 和存储卷;可使用 sidecar 模式(例如,在应用程序容器旁运行日志代理)和多容器设置来共置紧密耦合的进程。通过子网委派实现的 VNet 集成可为依赖项启用私有地址空间、出口控制和私有终结点;这有助于从私有环境中执行突发或按需作业。ACI 非常适合需要秒级到分钟级启动时间的临时任务、CI/CD 步骤和尖峰工作负载,但不适用于复杂的服务网格或高级调度。
Azure Kubernetes Service (AKS) 管理 Kubernetes 控制平面,提供可选的 Uptime SLA,并提供系统和用户节点池。为核心组件使用一个最小化的、带有污点 (tainted) 的系统节点池,并为每种工作负载类型(例如 GPU、Spot、Windows)使用独立的用户节点池。集成 Spot 节点池,通过使用容忍 (tolerations) 和 PodDisruptionBudgets,为可容忍的工作负载节省成本。集群自动缩放器 (cluster autoscaler) 根据无法调度的 Pod 调整节点池中的节点数量;可将其与 Horizontal Pod Autoscaler (HPA) 结合使用,对于事件驱动的伸缩,则可结合 KEDA。Azure CNI 将 VNet IP 直接分配给 Pod,简化了网络策略、服务发现以及通过可路由地址与本地环境的集成,但会消耗更多 IP;Azure CNI Overlay 在保留 CNI 语义的同时减少了 VNet IP 的消耗。Kubenet 使用 NAT,占用的 VNet IP 较少,但增加了 SNAT 的复杂性,且高级网络功能受限。对于企业级网络和策略,选择 CNI;对于地址空间受限的小型集群,选择 kubenet;对于需要大规模 Pod 密度而又不希望 CIDR 扩展的场景,选择 Overlay。为节点池采用可用区,使用浪涌升级 (surge upgrades) 以最大程度减少中断,并利用节点/镜像升级通道来维护安全态势。
Batch 和 Service Fabric
Azure Batch 负责编排大规模并行和 HPC 工作负载,无需您构建自己的调度程序。池 (Pools) 定义了计算资源:虚拟机大小(包括 GPU/HPC)、镜像(来自 Marketplace、自定义或 Shared Image Gallery)以及用于环境引导的启动任务 (start tasks)。应用程序包 (Application packages) 对您的二进制文件进行版本控制;证书和托管标识可安全地集成机密。作业 (Jobs) 对任务 (tasks) 进行分组,任务可以声明依赖关系、使用多实例协调,并利用每个虚拟机的任务槽 (task slots)。作业计划 (Job schedules) 可自动提交周期性作业。自动缩放公式引用内在指标(例如,$PendingTasks、$RunningTasks)和目标计数值(targetDedicatedNodes、targetLowPriorityNodes),并包含响应队列深度、平均运行时间和成本约束的逻辑。自动池 (Autopools) 为每个作业创建独立的池以提供干净的环境;持久池则通过分摊初始化成本来优化频繁运行的场景。混合使用低优先级 (Spot) 节点,并结合容错逻辑和检查点机制来降低成本。
Azure Service Fabric 是一个用于微服务的分布式系统平台,具有强大的状态管理能力。无状态服务 (Stateless services) 可水平扩展且易于恢复,而有状态服务 (stateful services) 使用 Reliable Collections 和复制来满足低延迟、内存中状态的需求,并具备磁盘持久性。分区 (Partitioning) 负责分散负载和状态;副本集 (replica sets) 则用于维护可用性。集群可靠性层级(Bronze、Silver、Gold、Platinum)定义了种子节点和仲裁 (quorum) 要求,影响着容错能力和升级并发性。升级域 (Upgrade domains) 通过隔离故障影响来协调整个集群的滚动升级;健康策略 (health policies) 和自动回滚则强制执行安全性。Service Fabric 适用于需要高吞吐量有状态处理、复杂工作流,或者当强一致性以及状态与计算的共置至关重要的场景。
Azure VMware Solution 与计算决策框架
Azure VMware Solution (AVS) 在 Azure 裸金属上提供了一个完全托管的 vSphere、vSAN 和 NSX-T 堆栈。私有云在 Azure 区域中运行,提供 vCenter 访问权限和熟悉的 VMware 工具。连接性方面,它使用一个 AVS ExpressRoute 线路,通过 ExpressRoute Global Reach 与 Azure VNet 对等互联;从那里,可以通过现有的 ExpressRoute 或 VPN 连接到本地。NSX-T 网络提供微分段和南北向路由。HCX 支持实时 vMotion、批量迁移、复制辅助的 vMotion 以及网络扩展,以实现低停机时间的数据中心撤离和现代化改造。AVS 是数据中心整体迁出、与 VMware 结构紧密耦合的应用组合,以及作为过渡性登陆区的理想选择,这些登陆区后续会通过专用链接与原生 Azure 服务集成。
选择计算服务遵循明确的启发式方法:
- 当你需要操作系统级别的控制、自定义镜像、专用硬件 (GPU/HPC) 或存在遗留依赖时,使用 Azure VM。添加可用性集/可用区和 PPG 以满足 SLA 和延迟目标。应用 Spot 实例进行可中断工作负载的成本优化。
- 当你托管具有标准框架的 Web API/网站,并希望获得托管平台、内置的 DevOps 槽和自动缩放功能,而又不想引入容器/Kubernetes 的复杂性时,使用 App Service。当你需要 VNet 集成和企业级功能时,选择 Premium 或 Isolated 层。
- 对于事件驱动、突发性或面向工作流的任务,且运维开销最小时,使用 Azure Functions;Premium 层可以消除冷启动并支持 VNet/私有访问。采用 Durable Functions 进行业务流程编排和长时间运行的活动。
- 对于临时性容器和作业、快速扩展,以及作为 CI/CD 流水线或 AKS 虚拟节点的无服务器执行目标时,使用 ACI。为私有工作负载选择与 VNet 集成的 ACI。
- 对于微服务、可移植性、高级调度、服务网格以及大规模标准化的容器 DevOps,使用 AKS;根据 IP 需求和网络策略要求选择 CNI 模型。按工作负载特性和可用区划分节点池,并启用自动缩放。
- 对于并行计算、渲染、蒙特卡洛和 ETL 工作负载,使用 Azure Batch,它提供调度、自动缩放带来的经济效益以及低优先级容量。
- 对于高吞吐量的有状态微服务,或者当需要强一致性、可靠 actor 以及对升级/放置的精确控制时,使用 Service Fabric。
- 使用 AVS 快速迁移 VMware 资产,保留现有运维模型,并作为现代化改造的一部分与 Azure 网络和服务集成。
实际问题场景
Contoso 零售公司正在对其电子商务平台进行现代化改造,以应对闪购活动,要求其 API 层和缓存层之间的延迟低于 10 毫秒,在单个区域内满足 99.99% 的 SLA,在正常需求期间最小化成本,并迁移一个仍在 VMware 上运行的遗留订单管理系统。该解决方案必须暴露公共 API,处理异步事件,并在不影响线上站点的情况下运行夜间的推荐模型评分。
将核心计算资源放置在一个拥有三个可用区的区域中,并创建一个邻近放置组。将 API 层托管在 PPG 内的一个区域性 VMSS(使用 Premium SSD v2 和加速网络)中,以实现到 Redis Enterprise 和区域性 SQL/缓存资源的最低延迟。这一选择为热路径提供了精细的性能控制、PPG 级别的延迟降低和区域级别的弹性。
基于请求率和自定义队列深度指标配置 VMSS 自动缩放,并为预期的闪购活动设置计划的配置文件。启用带健康探针的滚动升级和自动镜像升级。这确保了在极端负载下的弹性容量和安全部署,同时维持 SLA。
将面向客户的 Web 前端部署在 Azure App Service Premium v3 上,并使用部署槽进行蓝绿部署。将该应用与一个 VNet 集成,以便通过专用终结点私密地访问后端 API 和数据存储。选择 App Service 是为了卸载平台管理工作,并通过安全交换简化持续交付流程。
使用 Azure Functions Premium 实现异步订单处理,通过 Service Bus 触发器和 Durable Functions 进行业务流程编排(例如,用于库存检查、支付授权和通知的扇出/扇入模式)。Premium 层消除了冷启动,支持 VNet 集成,而 Durable Functions 提供了可靠的 Saga 协调。
使用 Azure Batch 在一个预加载了模型依赖项的持久池中的低优先级 (Spot) 节点上,进行夜间的推荐模型评分。一个自动缩放公式根据待处理任务和墙上时钟时间预测来确定目标节点数。Batch 将重计算工作负载与操作存储隔离,并通过 Spot 容量和设置了检查点的任务来优化成本。
添加 ACI 用于处理由 CI/CD 触发的突发性、临时的 数据转换作业,以及用于生成租户特定的报告。将容器组部署到一个委托子网中,以将所有处理保持在私有地址空间内。选择 ACI 是因为它能近乎即时地启动,并且对于零星任务没有集群开销。
为遗留的订单管理系统建立 Azure VMware Solution,使用 HCX 通过复制辅助的 vMotion 进行迁移,并在过渡期间将本地网络扩展到 AVS。通过 ExpressRoute Global Reach 将 AVS 连接到应用 VNet。AVS 保留了原有的运维工具,并在无需重构的情况下加速了数据中心的迁出。
对于未来的微服务,部署 AKS,配置区域性用户节点池、一个带污点的系统池和一个用于容错工作负载的 Spot 池。选择 Azure CNI Overlay 以节省 VNet IP 空间,同时保留网络策略功能。启用集群自动缩放器和 HPA 以实现分层缩放。AKS 为 Contoso 未来向容器原生演进(当业务流程能带来价值时)做好了准备。
这个组合方案通过为热路径使用带 PPG 和可用区的 VMSS 满足了低延迟和高可用性需求,通过 App Service 简化了 Web 交付,通过无服务器和批处理高效地处理异步和批处理计算,利用 ACI 处理临时任务,并采用 AVS 迁移依赖 VMware 的系统——所有这些都通过 VNet 和专用终结点进行私密集成,以保持安全性和性能。
← 数据存储与数据库解决方案 · 所有领域 · 网络与连接 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →