你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 中虚拟机规模集的业务流程模式
虚拟机规模集提供平台管理的虚拟机的逻辑分组。 使用规模集可以创建虚拟机配置模型,根据 CPU 或内存负载自动添加或删除其他实例,并自动升级到最新的 OS 版本。 在传统上,规模集允许使用在创建规模集时提供的 VM 配置模型来创建虚拟机,并且规模集只能管理基于配置模型隐式创建的虚拟机。
规模集业务流程模式可让你更好地控制规模集管理虚拟机实例的方式。
重要
业务流程模式是在创建规模集时定义的,以后无法更改或更新。
使用统一业务流程的规模集
已针对包含相同实例的大规模无状态工作负载进行优化。
使用统一业务流程的虚拟机规模集利用虚拟机配置文件或模板纵向扩展到所需的容量。 统一模式使用相同的 VM 实例,不过,在一定程度上也能够管理或自定义单独的虚拟机实例。 单独的统一 VM 实例通过虚拟机规模集 VM API 命令公开。 单个实例与标准 Azure IaaS VM API 命令以及 Azure 资源管理器资源标记、RBAC 权限、Azure 备份或 Azure Site Recovery 等 Azure 管理功能不兼容。 当统一业务流程中配置的实例数少于 100 时,它可以提供容错域高可用性保证。 统一业务流程已推出正式版,支持全套规模集管理和业务流程,包括基于指标的自动缩放、实例保护和自动 OS 升级。
使用灵活业务流程的规模集
大规模实现相同或多个虚拟机类型的高可用性
借助灵活业务流程,Azure 可在整个 Azure VM 生态系统中提供统一的体验。 灵活业务流程将 VM 分散到某个地理区域或可用性区域的多个容错域中,从而提供高可用性保证(最多支持 1000 个 VM)。 这样,你便可以横向扩展应用程序,同时保持对容错域的隔离,这对于运行基于仲裁的工作负载或有状态工作负载而言至关重要,包括:
- 基于仲裁的工作负载
- 开源数据库
- 有状态应用程序
- 需要高可用性和较大规模的服务
- 需要将虚拟机类型或现成 VM 和按需 VM 混合在一起的服务
- 现有的可用性集应用程序
灵活业务流程模式有哪些变化?
灵活业务流程的一个主要优势是,它基于标准 Azure IaaS VM(而不是规模集子虚拟机)提供业务流程功能。 这意味着,可以在管理灵活业务流程实例时使用所有的标准 VM API,而无需像在统一业务流程中那样使用虚拟机规模集 VM API。 在灵活业务流程中管理实例与在统一业务流程中管理实例存在几点差异。 一般情况下,我们建议尽量使用标准 Azure IaaS VM API。 本部分重点说明有关使用灵活业务流程管理 VM 实例的最佳做法示例。
灵活的业务流程模式可用于所有 VM 大小。 在特定情况下(例如当使用 B、D、E 和 F 系列时,或者当规模集配置为在实例 platformFaultDomainCount=1
之间实现最大分布时),灵活的业务流程模式为支持内存保留更新或实时迁移的 VM 大小提供最高的规模和可配置性。 目前,灵活业务流程模式对不支持内存保留更新的 VM 大小(包括 G、H、L、M 和 N 系列 VM)设置了其他约束,并且实例分布在多个容错域中。 你可以使用计算资源 SKU API 来确定特定的 VM SKU 是否支持内存保留更新。
功能 | 支持内存保留更新或规模集具有最大分布 (platformFaultDomainCount=1 ) |
不支持内存保留更新且具有固定分布 (platformFaultDomainCount > 1 ) |
---|---|---|
最大虚拟机规模集实例计数 | 1000 | 200 |
混合操作系统 | 是 | 是 |
混合现成虚拟机实例和按需实例 | 是 | 否 |
混合常规用途和专用 SKU 类型 | 是 (FDCount = 1 ) |
否 |
最大容错域计数 | 地区 - 3(取决于地区容错域最大计数) 区域 - 1 |
地区 - 3 区域 - 1 |
跨区域分布实例 | 是 | 是 |
将 VM 分配到特定区域 | 是 | 是 |
将 VM 分配到特定容错域 | 是 | 否 |
更新域 | 否 | 否 |
单一放置组 | 可选。 将会根据部署的第一个 VM 将此项设置为 false | 可选。 将会根据部署的第一个 VM 将此项设置为 true |
使用标准 Azure 虚拟机进行横向扩展
处于灵活业务流程模式的虚拟机规模集用于管理标准 Azure VM。 可以使用标准 Azure API 和命令完全控制虚拟机生命周期以及网络接口和磁盘。 可通过虚拟机规模集 VM API 命令公开和管理以统一业务流程模式创建的虚拟机。 单独的实例与标准的 Azure IaaS VM API 命令以及 Azure 资源管理器资源标记 RBAC 权限、Azure 备份或 Azure Site Recovery 等 Azure 管理功能不兼容。
创建 VM 期间分配容错域
可为灵活业务流程规模集选择容错域的数目。 默认情况下,将 VM 添加到灵活规模集时,Azure 会在多个容错域之间均匀分散实例。 尽管我们建议让 Azure 分配容错域,但对于高级或故障排除方案,你可以替代此默认行为,指定要将实例放入哪个容错域。
az vm create –vmss "myVMSS" –-platform-fault-domain 1
实例命名
创建 VM 并将其添加到灵活规模集时,可以在 Azure 命名约定规则中全面控制实例名称。 通过自动缩放将 VM 自动添加到规模集时,你可以提供一个前缀,而 Azure 会在名称的末尾追加唯一的编号。
查询实例以获取电源状态
首选方法是使用 Azure Resource Graph 查询虚拟机规模集中的所有 VM。 Azure Resource Graph 针对各个订阅中的 Azure 资源提供大规模有效查询功能。
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| where properties.virtualMachineScaleSet.id contains "demo"
| extend powerState = properties.extended.instanceView.powerState.code
| project name, resourceGroup, location, powerState
| order by resourceGroup desc, name desc
使用 Azure Resource Graph 查询资源是查询 Azure 资源的方便高效方式,并可以最大程度地减少对资源提供程序的 API 调用。 Azure Resource Graph 是最终一致性缓存,其中的新资源或已更新的资源可能在最长 60 秒内不会反映出来。 方法:
- 列出资源组或订阅中的 VM。
- 使用展开选项检索订阅中所有 VM 的实例视图(容错域分配、电源和预配状态)。
- 使用“获取 VM”API 和命令获取单个实例的模型与实例视图。
监视应用程序运行状况
应用程序运行状况监视可让应用程序为 Azure 提供检测信号,以确定应用程序是否正常。 Azure 可以自动替换不正常的 VM 实例。 配置应用程序监视时,如果使用灵活业务流程,则必须安装和配置应用程序运行状况扩展。 对于统一规模集实例,可以使用应用程序运行状况扩展,也可以使用运行状况探测。
列出规模集 VM API 更改
虚拟机规模集允许列出属于该规模集的实例。 对于灵活业务流程,“列出虚拟机规模集 VM”命令将提供规模集 VM ID 的列表。 然后,可以调用“获取虚拟机规模集 VM”命令,以获取有关规模集如何使用 VM 实例的更多详细信息。 若要获取规模集中许多 VM 的详细信息,请使用 Azure Resource Graph 或标准列表 VM API 和命令。 使用标准 GET VM API 和命令获取有关单个实例的信息。
检索启动诊断数据
使用标准 VM API 和命令检索实例启动诊断数据和屏幕截图。 虚拟机规模集 VM 启动诊断 API 和命令不适用于灵活业务流程模式实例。
VM 扩展
使用面向标准虚拟机的扩展,而不是面向统一业务流程模式实例的扩展。
灵活模式、统一模式和可用性集的比较
下表按功能对灵活业务流程模式、统一业务流程模式和可用性集做了比较。
基本设置
Feature | 受规模集的灵活业务流程支持 | 受规模集的统一业务流程支持 | 受可用性集支持 |
---|---|---|---|
虚拟机类型 | 标准 Azure IaaS VM (Microsoft.compute/virtualmachines) | 特定于规模集的 VM (Microsoft.compute/virtualmachinescalesets/virtualmachines) | 标准 Azure IaaS VM (Microsoft.compute/virtualmachines) |
所需的最低 API 版本 | 2021-03-01 | 2015-06-01 | 2015-06-01 |
最大实例计数(提供 FD 保证) | 1000 | 100 | 200 |
支持的 SKU | 所有 SKU | 所有 SKU | 所有 SKU |
全面控制 VM、NIC、磁盘 | 是 | 使用虚拟机规模集 VM API 进行有限控制 | 是 |
所需的 RBAC 权限 | 计算虚拟机规模集写入、计算 VM 写入、网络 | 计算虚拟机规模集写入 | 空值 |
跨租户共享映像库 | 是 | 是 | 是 |
加速网络 | 是 | 是 | 是 |
“零星”实例和定价 | 是,可以配置“现成”和“常规”优先级实例 | 是,实例必须全部为“零星”,或全部为“常规” | 否,仅限常规优先级实例 |
混合操作系统 | 是,Linux 和 Windows 可以驻留在同一个灵活规模集中 | 否,实例的操作系统相同 | 是,Linux 和 Windows 可以驻留在同一可用性集中 |
磁盘类型 | 仅托管磁盘,所有存储类型 | 托管和非托管磁盘 | 托管和非托管磁盘。 不支持超级磁盘 |
使用客户托管密钥的磁盘服务器端加密 | 是 | 是 | 是 |
写入加速器 | 是 | 是 | 是 |
邻近放置组 | 是,在使用一个可用性区域或不使用可用性区域时。 部署后无法更改。 请参阅邻近放置组文档 | 是,在使用一个可用性区域或不使用可用性区域时。 可以在部署停止所有实例后进行更改。 请参阅邻近放置组文档 | 是 |
Azure 专用主机 | 是 | 是 | 是 |
托管标识 | 仅限1用户分配的标识 | 系统分配或用户分配的标识 | 不适用(可以在单个实例上指定托管标识) |
在组中添加/删除现有 VM | 是 | 否 | 否 |
Service Fabric | 否 | 是 | 否 |
Azure Kubernetes 服务 (AKS)/AKE | 否 | 是 | 否 |
UserData | 是 | 是 | 可为单个 VM 指定 UserData |
用于删除或保留 VM NIC 和磁盘的选项 | 是 | 否(始终删除) | 是 |
超级磁盘 | 是 | 是 | 否 |
1 对于统一规模集,GET VMSS
响应将引用 identity、clientID 和 principalID。 对于灵活规模集,响应将仅获取对 identity 的引用。 可以调用 Identity
以获取 clientID 和 PrincipalID。
自动缩放和实例业务流程
Feature | 受规模集的灵活业务流程支持 | 受规模集的统一业务流程支持 | 受可用性集支持 |
---|---|---|---|
列出集中的 VM | 是 | 是 | 是,列出 AvSet 中的 VM |
自动缩放(手动、基于指标、基于计划) | 是 | 是 | 否 |
删除 VM 实例时自动删除 NIC 和磁盘 | 是 | 是 | 否 |
升级策略(虚拟机规模集) | 自动、滚动、手动 | 自动、滚动、手动 | 空值 |
自动 OS 更新(虚拟机规模集) | 否 | 是 | 空值 |
来宾安全修补 | 是,请阅读自动 VM 来宾修补 | 否 | 是 |
终止通知(虚拟机规模集) | 是,请参阅终止通知文档 | 是,请参阅终止通知文档 | 不适用 |
监视应用程序运行状况 | 应用程序运行状况扩展 | 应用程序运行状况扩展或 Azure 负载均衡器探测 | 应用程序运行状况扩展 |
实例修复(虚拟机规模集) | 是,请参阅实例修复文档 | 是,请参阅实例修复文档 | 不适用 |
实例保护 | 是 | 是 | 否 |
横向缩减策略 | 是 | 是 | 否 |
VMSS 获取实例视图 | 否 | 是 | 不适用 |
VM 批处理操作(全部启动、全部停止、删除子集等) | 是 | 是 | 否 |
高可用性
功能 | 受规模集的灵活业务流程支持 | 受规模集的统一业务流程支持 | 受可用性集支持 |
---|---|---|---|
可用性 SLA | 对于跨容错域分布的实例,则为 99.95%;对于跨多个区域分布的实例,则为 99.99% | 如果单个放置组中 FD>1,则为 99.95%;如果实例分散到多个区域,则为 99.99% | 99.95% |
可用性区域 | 指定将实例放入 1 个、2 个或 3 个可用性区域 | 指定将实例放入 1 个、2 个或 3 个可用性区域 | 不支持 |
将 VM 分配到特定可用性区域 | 是 | 否 | 否 |
容错域 - 最大分散(Azure 将最大程度地分散实例) | 是 | 是 | 否 |
容错域 - 固定分散 | 2-3 个 FD(取决于区域的最大 FD 数);对于区域部署,则为 1 个 | 2、3、5 个 FD;为局部区域部署提供 1 个、5 个 | 2-3 个 FD(取决于区域的最大 FD 数) |
将 VM 分配到特定的容错域 | 是 | 否 | 否 |
更新域 | 已弃用(按 FD 依次执行平台维护) | 5 个更新域 | 最多 20 个更新域 |
执行维护 | 使用 VM API 在每个实例上触发维护 | 是 | 空值 |
容量预留 | 是 | 是 | 是 |
网络连接
功能 | 受规模集的灵活业务流程支持 | 受规模集的统一业务流程支持 | 受可用性集支持 |
---|---|---|---|
容错出站连接 | 否,必须具有显式出站连接 | 是 | 是 |
Azure 负载均衡器标准版 SKU | 是 | 是 | 是 |
应用程序网关 | 是 | 是 | 是 |
InfiniBand 网络 | 否 | 是,仅限单个放置组 | 是 |
基本 LB | 否 | 是 | 是 |
网络端口转发 | 是(针对单个实例应用 NAT 规则) | 是(NAT 池) | 是(针对单个实例应用 NAT 规则) |
备份和恢复
功能 | 受规模集的灵活业务流程支持 | 受规模集的统一业务流程支持 | 受可用性集支持 |
---|---|---|---|
Azure 备份 | 是 | No | 是 |
Azure Site Recovery | 是(通过 PowerShell) | 否 | 是 |
Azure 警报 | 是 | 是 | 是 |
VM Insights | 可以安装到单个 VM 中 | 是 | 是 |
不支持的参数
处于灵活业务流程模式的虚拟机规模集目前不支持以下虚拟机规模集参数:
- 单个放置组 - 这可以设置为
null
,且平台将选择正确的值 - 超级磁盘配置:
diskIOPSReadWrite
、diskMBpsReadWrite
- 虚拟机规模集超量预配
- 基于映像的自动 OS 升级
- 通过 SLB 运行状况探测监视应用程序运行状况 - 在实例上使用应用程序运行状况扩展
- 虚拟机规模集升级策略 - 必须为 null 或为空
- 非托管磁盘
- 基本负载均衡器
- 通过标准负载均衡器 NAT 池进行端口转发 - 可以配置 NAT 规则
- 系统分配的托管标识 - 改用用户分配的托管标识
开始使用灵活业务流程模式
注册并开始使用适用于虚拟机规模集的灵活业务流程模式。
常见问题
灵活业务流程支持多大的规模?
最多可将 1000 个 VM 添加到处于灵活业务流程模式的规模集。
与可用性集或统一业务流程相比,灵活业务流程的可用性如何?
可用性属性 灵活业务流程 统一业务流程 可用性集 跨可用性区域部署 是 是 否 在地理区域中提供容错域可用性保证 是,最多可将 1000 个实例分散到地理区域中的最多 3 个容错域。 最大容错域数目因地理区域而异 是,最多 100 个实例 是,最多 200 个实例 放置组 空值 可以选择单个放置组或多个放置组 空值 更新域 无,维护或主机更新是按每个容错域执行的 最多 5 个更新域 最多 20 个更新域 在提供容错域可用性保证的情况下,绝对的最大实例计数是多少?
功能 受灵活业务流程的支持 受统一业务流程(正式版)的支持 受 AvSets(正式版)的支持 最大实例计数(提供 FD 可用性保证) 1000 3000 200