什么是 Azure 中的虚拟机规模集?

时间:2023-02-19 16:31:44

虚拟机规模集是一种 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. 折腾笔记之wordpress安装出现错误---【wordpress点击文章找不到网页的解决办法】

    本来写的好好的在后台,然后发表在前台,能够看见在网站首页,但是一点击进去,就提示找不到链接了.郁闷,经过查找资料.终于解决了 1,.htaccess要开放写权限,这样在自定义wp的永久链接时,wp会自 ...

  2. http 网络请求

    /**         * 用 HttpClient 的 Get 请求访问服务器         *          * @param url_path         * @param userN ...

  3. Jade之属性

    属性 所有的html(5)标签在jade中均支持如下写法.jade中省去了html<>和标签的关闭等写法,并将属性写在括号之中.若存在多个属性,可以将其分为多行. jade: a(href ...

  4. &lbrack;ActionScript 3&period;0&rsqb; as3&period;0加载as2&period;0的swf时获取as2&period;0的实际舞台尺寸

    var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler) ...

  5. WCF实例管理的三种方式

    很多情况下,我们都需要控制wcf服务端对象的初始化方式,用来控制wcf实例在服务端的存活时间. Wcf框架提供了三种创建wcf实例的方式. WCF服务对象实例化基础 在普通的WCF请求和相应过程中,将 ...

  6. display&lowbar;errors &amp&semi; error&lowbar;reporting(php调试安全)

    这两个选项对应的值即都可以在php.ini文件中设置,也都可以在php代码中使用相应的函数来设置. 在php.ini文件中的设置如下:

  7. &lt&semi;有序数组&gt&semi;转化为&lt&semi;按二分法遍历顺序排列的数组&gt&semi;(C&plus;&plus;实现)

    在进行参数试错时,通常将可能的参数由小到大排列一个个进行测试,这样的测试顺序很多时候不太合理,因此写了一个按二分法遍历顺序排列的算法,通常能更快的找到合适的参数.代码如下: /************ ...

  8. Web 应用配置Log4Net

    1.第一步:在web.config文件添加如下代码: [sourcecode language="csharp"] <configSections> <secti ...

  9. JQuery操作DOM对象

    1.追加节点( 儿子关系) append()     $("已有元素").append("动态添加元素");  在已有元素的内部的后面追加一个元素 append ...

  10. JDBCTemplate简化JDBC的操作(二)

    一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回调 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core. ...