虚拟机规模集是一种 Azure 计算资源,可用于部署和管理一组相同的 VM。 由于所有 VM 的配置都相同,因此无需对 VM 进行任何预先配置。 这样就可以更方便地构建面向大型计算、大数据、容器化工作负荷的大规模服务。

对于需要扩大和缩小计算资源的应用程序,缩放操作在容错域和更新域之间进行隐式平衡。 有关规模集的更多介绍,请参阅 Azure 博客公告。

创建和管理规模集

可以在 Azure 门户中创建规模集,方法是:选择“新建”,然后在搜索栏中键入“规模”。 结果中会列出“虚拟机规模集”。 从这里,可以填写必填字段,自定义和部署规模集。

也可以使用 JSON 模板与 REST API 来定义和部署规模集,就像定义和部署单个 Azure Resource Manager VM 一样。 因此,可以使用任何标准的 Azure Resource Manager 部署方法。 有关模板的详细信息,请参阅创作 Azure Resource Manager 模板。

可在 Azure 快速入门模板 GitHub 存储库中找到一组虚拟机规模集的示例模板。 (查找标题中含有 vmss 的模板。)

以“快速启动”模板为例,每个模板的自述文件中的“部署到 Azure”按钮都会链接到门户部署功能。 如果要部署规模集,请单击该按钮,并填写门户中所需的任何参数。

扩大和缩小规模集

若要在 Azure 门户中更改规模集的容量,可单击“设置”下的“缩放”部分。

若要在命令行中更改规模集容量,请在 Azure CLI 中使用 scale 命令。 例如,使用以下命令可将规模集设置为 10 个 VM 的容量:

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud。

bash复制
az vmss scale -g resourcegroupname -n scalesetname --new-capacity 10

若要通过 PowerShell 在规模集中设置 VM 数,请使用 Update-AzureRmVmss 命令:

PowerShell复制
$vmss = Get-AzureRmVmss -ResourceGroupName resourcegroupname -VMScaleSetName scalesetname
$vmss.Sku.Capacity = 10
Update-AzureRmVmss -ResourceGroupName resourcegroupname -Name scalesetname -VirtualMachineScaleSet $vmss

若要通过 Azure Resource Manager 模板增加或减少规模集中的虚拟机数,请更改 capacity 属性并重新部署模板。

若要重新部署 Azure Resource Manager 模板以更改容量,可以定义一个小得多的模板,只包括 SKU 属性数据包和更新的容量。 下面是一个示例。

监视规模集

Azure 门户列出规模集并显示其属性。 门户还支持管理操作。 可以针对规模集和规模集中的单个 VM 执行这些操作。 该门户还提供了一个可自定义的资源使用情况图。

规模集方案

本部分列出了一些典型的规模集方案。 一些高级 Azure 服务(如批处理、Service Fabric 和容器服务)使用这些方案。

  • 使用 RDP 或 SSH 连接到规模集实例:在虚拟网络中创建规模集,默认情况下不为规模集中的单个 VM 分配公共 IP 地址。 此策略避免了将独立的公共 IP 地址分配给计算网格中的所有节点所需的支出和管理开销。 如果确实需要通过直接的外部连接来连接到规模集 VM,则可将规模集配置为自动将公共 IP 地址分配到新的 VM。 也可从虚拟网络中可以为其分配公共 IP 地址的其他资源(例如,负载均衡器和独立虚拟机)连接到这些 VM。
  • 使用 NAT 规则连接到 VM:可以创建一个公共 IP 地址,并将其分配给负载均衡器,然后定义入站 NAT 池。 这些操作将 IP 地址上的端口映射到规模集中 VM 上的端口。 例如:

    源 Source Port 目标 Destination Port
    公共 IP 端口 50000 vmss_0 端口 22
    公共 IP 端口 50001 vmss_1 端口 22
    公共 IP 端口 50002 vmss_2 端口 22

    此示例中定义了 NAT 规则,以便通过单个公共 IP 地址实现与规模集中每个 VM 的 SSH 连接。

    此示例使用 RDP 和 Windows 实现相同的目的。

  • 使用“jumpbox”连接到 VM:如果在同一个虚拟网络中创建一个规模集和一个独立 VM,则该独立 VM 和规模集 VM 能够使用其由虚拟网络或子网定义的内部 IP 地址彼此连接。 如果创建一个公共 IP 地址并将其分配给独立 VM,可以使用 RDP 或 SSH 连接到该独立 VM。 然后,可从该虚拟机连接到规模集实例。 此时你可能会发现,与使用其默认配置中的公共 IP 地址的简单独立 VM 相比,简单的规模集本质上更安全。

    例如,此模板使用一个独立的 VM 部署简单的规模集。

  • 负载均衡到规模集实例:如果想要使用轮循机制方法向 VM 的计算群集交付工作,可以使用第 4 层负载均衡规则对 Azure 负载均衡器进行相应的配置。 可以定义探测,通过使用指定的协议、间隔和请求路径对端口执行 ping 操作来验证应用程序是否正在运行。 Azure 应用程序网关也支持规模集,以及第 7 层和更复杂的负载均衡方案。

    此示例创建运行 Apache Web 服务器的规模集,并使用负载均衡器来均衡每个 VM 接收的负载。 (查看 Microsoft.Network/loadBalancers 资源类型以及 virtualMachineScaleSet 中的 networkProfile 和 extensionProfile。)

    此 Linux 示例和此 Windows 示例使用应用程序网关。

  • 在 PaaS 群集管理器中将规模集部署为计算群集:规模集有时描述为下一代辅助角色。 这是有效的描述,但也可能导致将规模集功能与 Azure 云服务功能混淆。 在某种意义上,规模集提供真正的辅助角色或辅助角色资源。 规模集是通用计算资源,独立于平台/运行时、可自定义且可集成到 Azure Resource Manager IaaS 中。

    云服务辅助角色虽然在平台/运行时支持方面受到限制(仅限 Windows 平台映像), 但它也包括多项服务,如 VIP 交换,可配置的升级设置,以及特定于运行时/应用部署的设置。 这些服务尚未在规模集中提供,或者由 Azure Service Fabric 等其他更高级别 PaaS 服务提供。 可以将规模集视为支持 PaaS 的基础结构。 PaaS 解决方案(例如 Service Fabric)基于该基础结构。

规模集性能和缩放指南

  • 一个规模集最多支持 1,000 个 VM。 如果创建和上传自己的自定义 VM 映像,则该限制为 300。 如需使用大型规模集时的注意事项,请参阅使用大型虚拟机规模集。
  • 无需预先创建 Azure 存储帐户即可使用规模集。 规模集支持 Azure 托管磁盘,因此不需担心因单个存储帐户磁盘数不足而造成的性能问题。 有关详细信息,请参阅 Azure 虚拟机规模集和托管磁盘。
  • 可以考虑使用 Azure 高级存储而不是 Azure 存储,以便加快 VM 预配速度、提高 VM 预配时间的可预测性,以及改进 I/O 性能。
  • 可以创建的 VM 数受到在其中进行部署的区域中核心配额的限制。 即使目前用于 Azure 云服务的核心数上限已较高,也仍可能需要联系客户支持来提高计算配额限制。 若要查询配额,请运行以下 Azure CLI 命令:azure vm list-usage。 或者,运行以下 PowerShell 命令:Get-AzureRmVMUsage。

有关规模集的常见问题

问: 可在规模集中包含多少个 VM?

答: 一个规模集可以包含 0 到 1,000 个基于平台映像的 VM,或者 0 到 300 个基于自定义映像的 VM。

问: 规模集是否支持数据磁盘?

答: 是的。 规模集可以定义适用于集中所有 VM 的附加数据磁盘配置。 有关详细信息,请参阅 Azure scale sets and attached data disks(Azure 规模集和附加的数据磁盘)。 可用于存储数据的其他选项包括:

  • 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 扩展,脚本可以等待另一个扩展来完成。 在 Extension Sequencing in Azure VM Scale Sets(Azure VM 规模集中的扩展序列)博客文章中可以获取有关扩展序列的其他指导。

问: 规模集是否适用于 Azure 可用性集?

答: 是的。 规模集是包含 5 个容错域和 5 个更新域的隐式可用性集。 规模集如果包含 100 个以上的 VM,则会跨多个位置组,等效于多个可用性集。 有关位置组的详细信息,请参阅使用大型虚拟机规模集。 由 VM 组成的可用性集可以与由 VM 组成的规模集位于相同的虚拟网络中。 常见的配置是将控件节点 VM(经常需要独特的配置)放在可用性集中,将数据节点放在规模集中。

可在 Azure 虚拟机规模集常见问题中找到有关规模集的更多常见问题解答。

什么是 Azure 中的虚拟机规模集?的更多相关文章

  1. Kubernetes 1.12公布:Kubelet TLS Bootstrap与Azure虚拟机规模集(VMSS)迎来通用版本号

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/82880341 https: ...

  2. China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...

  3. Azure 中 Windows 虚拟机的大小

    本文介绍可用于运行 Windows 应用和工作负荷的 Azure 虚拟机的可用大小和选项. 此外,还提供在计划使用这些资源时要考虑的部署注意事项. 本文也适用于 Linux 虚拟机. 类型 大小 说明 ...

  4. Azure 中 Linux 虚拟机的大小

    本文介绍可用于运行 Linux 应用和工作负荷的 Azure 虚拟机的可用大小与选项. 此外,还提供在计划使用这些资源时要考虑的部署注意事项. 本文也适用于 Windows 虚拟机. 类型 大小 说明 ...

  5. 如何监视 Azure 中的虚拟机

    通过收集.查看和分析诊断与日志数据,可以利用很多机会来监视 VM. 若要执行简单的 VM 监视,可以在 Azure 门户中使用 VM 的“概述”屏幕. 可以使用扩展在 VM 上配置诊断以收集更多指标数 ...

  6. 在 Windows 上创建虚拟机规模集和部署高度可用的应用

    利用虚拟机规模集,可以部署和管理一组相同的.自动缩放的虚拟机. 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率.内存需求或网络流量)进行自动缩放. 在本教程 ...

  7. 在 Linux 上创建虚拟机规模集和部署高度可用的应用

    利用虚拟机规模集,可以部署和管理一组相同的.自动缩放的虚拟机. 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率.内存需求或网络流量)进行自动缩放. 在本教程 ...

  8. Azure 中虚拟机的计划内维护

    Azure 定期执行更新,以提高虚拟机的主机基础结构的可靠性.性能及安全性. 此类更新包括修补宿主环境(例如操作系统.虚拟机监控程序以及主机上部署的各种代理)中的软件组件.升级网络组件以及硬件解除授权 ...

  9. 如何在 Azure 中均衡 Linux 虚拟机负载以创建高可用性应用程序

    负载均衡通过将传入请求分布到多个虚拟机来提供更高级别的可用性. 本教程介绍了 Azure 负载均衡器的不同组件,这些组件用于分发流量和提供高可用性. 你将学习如何执行以下操作: 创建 Azure 负载 ...

随机推荐

  1. iOS 8.0 bluetooth peripheral manager giving no callback for addService

    I am adding the service using: [self.peripheralManager addService:myService]; Is this method depreca ...

  2. javascript实现代码高亮-wangHighLighter.js

    1. 引言 (先贴出wangHighLighter.js的github地址:https://github.com/wangfupeng1988/wangHighLighter注意,程序和使用说明的更新 ...

  3. CentOS 7下搭配简单的C语言开发环境

    在CentOS 7下安装gcc,gcc是编译和运行C语言的工具, 安装命令: yum install gcc 中途如果有询问则输入y 安装成功后,通过以下命令 gcc --version 来查看安装的 ...

  4. 「每日一码」(精品代码,质量保证)empty和undefined

    将每天看到的优秀的代码或者特别的实现,记录下来 2019-2-26 empty和undefined 数组的filter,以下输出结果是什么 var arr = [1,2,3]; arr[10] = 9 ...

  5. 我的MQ笔记

    1.安装IBM MQ 1.1.安装先决条件: (1)WebSphere  Eclipse  Platform  V3.01 (2)为Windows域用户配置WebSphere MQ用户 1.2.安装程 ...

  6. Hibernate常出现的报错

    刚开始学习hibernate的时候,第一次就遇到了空指针异常,结果是我的配置文件处理错误(主要是数据库表的字段与就java实体类的属性名单词写错了):一般是报空指针异常的话,多半是配置文件的问题. 但 ...

  7. 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)

    程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...

  8. Deep learning with Python 学习笔记(3)

    本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...

  9. TCP长连接的一些事儿

    1.TCP的特点以及与应用        TCP提供一种面向连接的.可靠的字节流服务.面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接.TC ...

  10. syslog - 日志文件详解

    日志文件,是linux最为重要的记录文件,记录着日常的操作. 我们在linux编程的时候,通常会使用日志文件记录操作和信息,日志系统提供了我们几个API接口供调用 1. API void openlo ...