Azure虚拟机规模集简介
什么是虚拟机规模集?
虚拟机规模集是一种Azure计算资源,可用于部署和管理一组相同的VM。 由于所有VM的配置都相同,因此无需对VM进行任何预先配置。这样就可以更方便地构建面向大型计算、大数据、容器化工作负荷的大规模服务。
Azure中的虚拟机规模集具有以下特性和功能
- 轻松的门户创建体验。您现在可以从Azure门户、Azure CLI或Azure PowerShell直接创建Linux和Windows VM规模集。使用负载均衡器NAT规则自动创建这些规模集以启用SSH或RDP连接。
- 简单的缩放属性。更改设置的比例中的虚拟机数量是一个简单的调用(例如,通过REST,SDK或命令行)。
- 您还可以在同一VNET或订阅中创建多个VM Scale Set。即使用VM Scale Set作为缩放单元,并构建由多个缩放集组成的更大的组。这就是Azure Batch等高级服务构建大型计算池的方式。
- 集成自动缩放。为规模集设置自动缩放规则很容易。您可以设置VM的最大,最小和默认数量,并根据资源消耗定义触发器 – 操作规则。您可以设置标准审核日志和电子邮件通知,还可以定义自定义通知和操作(例如Runbook)的webhook。Pagerduty等合作伙伴已添加Azure支持。
- 集成负载平衡。Azure负载均衡器和Application Gateway与规模集无缝集成。当规模集的大小增加并创建新VM时,将生成匹配的负载均衡器NAT规则,从而确保VM始终具有连接路径。这种对入站连接的控制使得扩展设置VM本身比具有IP地址的独立VM更安全,这需要网络安全组来锁定端口。
- Visual Studio支持。Azure SDK为Visual Studio提供Azure模板,以部署标准Linux和Windows模板,以将规模集部署为Azure Resource Manager项目的一部分。
- 支持手动部署操作系统映像更新,无需停机。如果需要在不关闭规模集的情况下更新虚拟机映像,则可以更新”模型”(规模集的定义和属性),然后手动将更新推送到选定的VM。
除了Batch之外,更高级别的Azure服务(例如Container Service,Batch和Service Fabric)也使用规模集作为其底层基础架构,以简化大规模部署并使部署云规模体系结构变得更加容易。
在使用虚拟机规模集之前,我们需要知道虚拟机和规模集的区别。
规模集是使用虚拟机构建的。使用规模集时,会提供管理层和自动层来运行和缩放应用程序。可以改用手动方式来创建和管理单个VM,也可以集成现有的工具,以便构建类似级别的自动化。下表概述了规模集的优势(与手动管理多个VM实例相比)。
手动部署VM高可用 | 虚拟机规模集 | |
添加额外的VM实例 | 用于创建、配置和确保符合性的手动过程 | 自动根据中心配置进行创建 |
流量均衡和分发 | 用于创建和配置 Azure 负载均衡器或应用程序网关的手动过程 | 可以自动创建 Azure 负载均衡器或应用程序网关以及与之集成 |
高可用性和冗余性 | 手动创建可用性集,或者跨可用性区域分发和跟踪 VM | 跨可用性区域或可用性集自动分发VM实例 |
VM缩放 | 手动监视和Azure自动化 | 根据主机指标、来宾中指标或计划自动缩放 |
从以上简单比较看出,规模集非常适合用于部署高可用性基础结构(其中的一组计算机采用类似配置)。但是,有些功能只能在规模集中使用,还有些功能只能在VM中使用。若要就何时使用每种技术做出明智的决策,我们首先应该大致了解可在规模集中使用,但不能在VM中使用的一些常用功能:
特定于规模集的功能
- 指定规模集配置后,可以更新”容量”属性以并行部署更多的 VM。 这比编写一个脚本来协调众多VM的同时部署要简单得多。
- 可以使用Azure自动缩放来自动缩放规模集,但不能使用它来自动缩放单个VM。
- 可以重置规模集VM的映像,但不能重置单个VM 的映像。
- 可以过度预配规模集VM以提高可靠性和加快部署速度。 除非编写自定义代码,否则在单个VM上无法做到这一点。
- 可以指定升级策略,方便在规模集中的各个VM上实施升级。 使用单个VM时,必须自行协调更新。
特定于VM的功能,某些功能目前仅在VM中可用:
- 可将数据磁盘附加到特定的单 VM,但附加的数据磁盘是针对规模集中的所有VM配置的。
- 可将非空数据磁盘附加到单个VM,但不能附加到规模集中的VM。
- 可以创建单个VM的快照,但不能创建规模集中VM的快照。
- 可以从单个VM捕获映像,但不能从规模集中的VM捕获映像。
- 可将单个VM从本机磁盘迁移到托管磁盘,但对于规模集中的 VM,无法执行此操作。
- 可将 IPv6 公共IP地址分配给单个VM的NIC,但对于规模集中的VM,无法执行此操作。可将 IPv6公共IP地址分配到单个VM或规模集VM前面的负载均衡器。(注意,Azure China暂时不支持IPv6)
另外,规模集不需额外付费。只需为基础的计算资源(例如VM实例、负载均衡器或托管磁盘存储)付费。在使用VM的过程中,管理和自动化功能(例如自动缩放和冗余性)不需额外付费。
当然,在使用该Azure服务之前,我们还需要知道一些以下信息。
问: 可在规模集中包含多少个VM?
答:一个规模集可以包含 0 到 1,000 个基于平台映像的VM,或者0到 300 个基于自定义映像的VM。
问: 规模集是否支持数据磁盘?
答:是的。规模集可以定义适用于集中所有VM的附加数据磁盘配置。可用于存储数据的其他选项包括:
- Azure 文件(SMB 共享驱动器)
- OS 驱动器
- 临时驱动器(本地,不是以 Azure 存储为基础)
- Azure 数据服务(例如 Azure 表、Azure Blob)
- 外部数据服务(例如远程数据库)
问: 哪些 Azure 区域支持规模集?
答:所有区域都支持规模集。
问: 如何使用自定义映像创建规模集?
答:根据自定义映像VHD创建托管磁盘,并在规模集模板中引用该磁盘。 下面是一个示例。
问: 如果我将规模集容量从20减少到15,将删除哪些VM?
答:将从跨更新域和容错域的规模集中均匀地删除虚拟机,以最大限度地提高可用性。首先删除ID最大的VM。
问: 如果将容量从15 增加到18,会发生什么情况?
答:如果将容量增加到18,则创建3个新VM。每增加容量一次,VM实例ID 就会从以前的最高值(例如 20、21、22)递增。容错域与和更新域中的VM 是均衡的。
问: 在一个规模集中使用多个扩展时,是否可以强制规定执行序列?
答:不能直接强制执行,但对于customScript扩展,脚本可以等待另一个扩展来完成。
问: 规模集是否适用于 Azure 可用性集?
答:地区(非区域性)规模集使用放置组,其中每个放置组可以配置为充当具有五个容错域和五个更新域的隐式可用性集。VM多于100个的规模集跨多个放置组。有关位置组的详细信息,请参阅使用大型虚拟机规模集。由VM组成的可用性集可以与由VM组成的规模集位于相同的虚拟网络中。常见的配置是将控件节点 VM(经常需要独特的配置)放在可用性集中,将数据节点放在规模集中。