调整大小与自动缩放
分析 VM 性能数据以合理调整实例大小,为可预测的工作负载实施计划自动缩放,并使用 VMSS Spot 实例处理批处理工作负载。
调整大小与自动缩放 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
什么是规格调整
规格调整是将 Azure VM 或服务 SKU 与工作负载的实际资源需求相匹配的过程,既不过度预配(浪费资金),也不过度缩减配置(存在性能下降风险)。从本地环境迁移时,大多数组织出于谨慎,最初会过度预配 30–50%。定期进行规格调整分析(通常每月一次),可以在不影响应用程序性能的情况下收回很大一部分过度支出。
分析 VM 性能数据
使用Azure Monitor 指标和VM Insights,至少收集 30 天的 CPU、内存、磁盘 IOPS 和网络吞吐量数据。请关注峰值(P95 或 P99)利用率,而不是平均值,以确保调整后的 VM 能够应对流量峰值。Azure Advisor 的规格调整建议默认使用 7 天的回溯期,但您可以在Advisor 配置中将其延长到 30 天或 60 天,以获得更具代表性的数据。
# Get P95 CPU utilisation for a VM over 30 days
az monitor metrics list \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM \
--metric 'Percentage CPU' \
--aggregation Percentile \
--interval P1D \
--start-time 2024-05-01T00:00:00Z \
--end-time 2024-06-01T00:00:00ZVM SKU 系列与调整大小
Azure VM 按照针对不同工作负载优化的SKU 系列进行组织:D-series(通用)、E-series(内存优化)、F-series(计算优化)、N-series(GPU)和 L-series(存储优化)。如果某个 VM 的 CPU 使用率较低但内存使用率较高,将其从 D-series 更换为相同 vCPU 数量的 E-series,可以在成本相近的情况下获得更多 RAM。在 Azure 中调整 VM 大小通常需要短暂重启几分钟。
# Resize a VM to a smaller SKU
az vm resize \
--resource-group myRG \
--name myVM \
--size Standard_D2s_v5可预测工作负载的计划自动缩放
当工作负载模式可预测时,计划自动缩放是合适的选择。对于工作时间流量高、夜间流量接近零的零售应用程序,可以将其配置为在 07:00 执行扩展,在 22:00 执行缩减。Virtual Machine Scale Sets (VMSS) 和App Service都支持计划自动缩放规则。对于已知的负载模式,这种方法比基于指标的自动缩放更简单,也更容易预测成本。
# Add a scheduled autoscale rule to a VMSS (scale out at 07:00, in at 22:00 UTC)
az monitor autoscale create \
--resource-group myRG \
--resource myVMSS \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name myAutoscale \
--min-count 2 --max-count 10 --count 2基于指标的自动缩放
基于指标的自动缩放会根据 CPU 百分比、HTTP 请求队列长度或通过 Azure Monitor 发布的自定义指标等实时指标,动态添加或删除实例。您可以定义扩展规则(何时添加实例)和缩减规则(何时删除实例),并设置冷却期以防止实例数量快速反复变化。最佳实践是将扩展阈值设置得低于缩减阈值,例如 CPU 超过 70% 时扩展、低于 30% 时缩减,并设置 5 分钟的冷却期。
# Add a metric-based scale-out rule (CPU > 70% for 5 minutes)
az monitor autoscale rule create \
--autoscale-name myAutoscale \
--resource-group myRG \
--scale out 1 \
--condition 'Percentage CPU > 70 avg 5m'面向批处理工作负载的 VMSS Spot 实例
Azure Spot VMs 允许您以最高比即用即付价格低 90% 的折扣使用未使用的 Azure 容量。代价是,当 Azure 需要收回这些容量时,可以提前 30 秒通知并逐出 Spot VM。因此,Spot 实例非常适合渲染、科学计算和数据处理管道等可中断的批处理工作负载。VMSS 支持在同一规模集内,使用优先级混合策略,将常规 VM(提供基线容量)与Spot VM(提供突发容量)混合使用。
# Create a VMSS with spot instances for batch workloads
az vmss create \
--resource-group myRG \
--name myBatchVMSS \
--image UbuntuLTS \
--priority Spot \
--eviction-policy Deallocate \
--max-price -1 \
--instance-count 5App Service 自动缩放
Azure App Service 自动缩放在 App Service Plan 级别运行,会根据您配置的规则添加或移除工作器实例。可用的指标触发条件包括 HTTP 队列长度、CPU 百分比和内存百分比。Standard 层及更高层级支持手动缩放和自动缩放;Basic 层仅支持手动缩放。对于无服务器工作负载,可以考虑使用采用 Consumption Plan 的 Azure Functions,它可以缩放到零,并且仅按执行次数收费,从而完全消除闲置实例成本。
# Enable autoscale on an App Service plan
az monitor autoscale create \
--resource-group myRG \
--resource myAppServicePlan \
--resource-type Microsoft.Web/serverfarms \
--name webAppAutoscale \
--min-count 1 --max-count 5 --count 1应避免的自动缩放陷阱
常见的自动缩放陷阱包括:会话亲和性:如果应用将会话状态存储在 VM 内存中,缩减实例会导致会话丢失;请改用 Redis Cache 或由数据库支持的会话。启动时间过长:如果 VM 或容器需要 10 分钟才能完成预热,基于指标的自动缩放将无法及时响应;请在预测的峰值到来前通过计划的扩展预先完成预热。缩减过于激进:在正在处理进行中请求时终止实例会导致错误;请配置连接排空和较长的冷却时间。
数据库和 PaaS 的合理调整
合理调整同样适用于 PaaS 服务。采用 DTU 模型的 Azure SQL Database 如果 DTU 百分比持续低于 50%,可以降低其层级。vCore 模型支持独立扩展 CPU 和存储。如果不需要持久化和异地复制,可以将Azure Cache for Redis 从 Premium 层降级到 Standard 层。Azure Kubernetes Service 节点池可以使用Cluster Autoscaler,根据 pod 的待处理状态和空闲状态扩展或缩减节点。
# Change Azure SQL Database service objective (tier)
az sql db update \
--resource-group myRG \
--server mySQLServer \
--name myDatabase \
--service-objective S2持续进行合理调整
合理调整不是一次性的活动。工作负载会随时间变化:流量模式会改变、功能会增加,用户群体也会扩大或缩小。请将每月合理调整审查纳入您的 FinOps 流程:获取 Advisor 建议,审查排名前 10 的利用率不足的 VM 和过度预配的 PaaS 服务,并为负责的团队创建工作项。跟踪已实现的节省额与生成的建议之间的差异,以向管理层展示 FinOps ROI。
结合合理调整与预留
最佳成本策略是先进行合理调整,再进行预留。为过度预配的 VM 购买 Reserved VM Instance,会锁定对错误 SKU 的承诺。请先将 VM 调整到正确的大小,观察新的利用率 30 天以确认其稳定性,然后为调整后的 SKU 购买 reservation。这种两步方法可以在避免预留容量浪费的同时,实现最大折扣。
快速检查
测试您对本课 Microsoft Azure Fundamentals (AZ-900) 概念的理解。
课程回顾
在本课中,您学习了以下内容:合理调整使用性能指标,使 VM SKU 与实际工作负载需求相匹配;计划式和基于指标的自动缩放动态调整容量以匹配需求;Spot VM 为可中断的批处理工作负载提供最高 90% 的折扣。接下来,我们将探讨面向承诺型工作负载的 Azure Savings Plans 和 Reservations。
常见问题解答
「调整大小与自动缩放」课时是免费的吗?
是的 — 「调整大小与自动缩放」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「调整大小与自动缩放」这节课中我会学到什么?
分析 VM 性能数据以合理调整实例大小,为可预测的工作负载实施计划自动缩放,并使用 VMSS Spot 实例处理批处理工作负载。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「调整大小与自动缩放」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 识别并消除浪费
- 调整大小与自动缩放
- Azure 节省计划与预留
- FinOps 与分摊模型