虚拟机规模集是一种 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复制
  1. az vmss scale -g resourcegroupname -n scalesetname --new-capacity 10

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

PowerShell复制
  1. $vmss = Get-AzureRmVmss -ResourceGroupName resourcegroupname -VMScaleSetName scalesetname
  2. $vmss.Sku.Capacity = 10
  3. 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. 运行vue init webpack vueTest时报错

    前言:好久没动vue项目了,早上心血来潮.准备写一个项目,然后坚持在github更新,不为别的,只为养成一个习惯. 运行vue init webpack vueTest时,报了下面的错误: 当时我思考 ...

  2. Spring Boot使用Shiro实现登录授权认证

    1.Shiro是Apache下的一个开源项目,我们称之为Apache Shiro.它是一个很易用与Java项目的的安全框架,提供了认证.授权.加密.会话管理,与spring Security 一样都是 ...

  3. spring boot实现ssm(1)功能

    前面完成了ssm的整合, 整个过程可以说很繁杂, 各种配置, 很容易让人晕掉. 这里使用spring boot 的方式来实现ssm(1)中的功能. 一. 建项目 1. 使用 idea 来创建 spri ...

  4. angular ng-repeat元素swiper无法滑动问题解决

    前言 angular中ng-repeat元素swiper无法滑动,angular与swiper冲突. 1.问题 在项目中,我需要利用ng-repeat循环li,比如一个nav导航条,在加入swiper ...

  5. vue-cli 使用Mint-UI

    在安装好的vue-cli的项目基础上,安装Mint-UI cnpm install mint-ui -save //引入全部组件import Mint from 'mint-ui'import 'mi ...

  6. Java源码阅读(不断补充)

    java.util.LinkedList LinkedList是实现了List接口的双链表实现,拥有list的所有方法并且允许所有元素(包括null). 双向链表也叫双链表,是链表的一种,它的每个数据 ...

  7. Curling 2.0(DFS简单题)

    题目链接: https://vjudge.net/problem/POJ-3009 题目描述: On Planet MM-21, after their Olympic games this year ...

  8. HTML5 FileReader实现图片上传前预览

    如果你的浏览器支持Html5的FileReader的话,实现图片上传前进行预览是一件非常容易之事情. 在控制器,创建一个视图Action: jQuery代码: 实时演示一下: 下面内容于2014-11 ...

  9. MVC使用Flash来显示图片

    Insus.NET实现一些网站模版,如用户能动态变更网站的头,中间或是脚的部位,就是不太确定用户上传的是图片,还是Flash.因此想到一个较好的解决方法,就是使用Flash的组件去显示来源的图片或是. ...

  10. MFC控件之Combo Box

    下拉链表Combo-box Control 常用属性: Sort:对添加到列表框的字符串进行自动排序.(对指定位置的元素项无效) Type:有三个类型 Simple:没有下拉按钮,可以输入字符串,可以 ...