快速入门:通过 Azure CLI 创建虚拟机规模集

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 统一规模集

注意

下文介绍了统一虚拟机规模集。 建议对新的工作负载使用灵活虚拟机规模集。 如需详细了解此业务流程模式,请参阅灵活虚拟机规模集概述

利用虚拟机规模集,可以部署和管理一组自动缩放的虚拟机。 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率、内存需求或网络流量)进行自动缩放。 然后,Azure 负载均衡器会将流量分配到规模集中的 VM 实例。 在本快速入门中,我们将使用 Azure CLI 创建虚拟机规模集并部署一个示例应用程序。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 Azure CLI 2.0.29 或更高版本。

创建规模集

重要

从 2023 年 11 月开始,使用 PowerShell 和 Azure CLI 创建的 VM 规模集将默认为灵活业务流程模式(如果未指定业务流程模式)。 若要详细了解此更改以及你应采取哪些操作,请访问针对 VMSS PowerShell/CLI 客户的中断性变更 - Microsoft 社区中心

使用 az group create 创建资源组,才能创建规模集。 以下示例在“chinanorth2”位置创建名为“myResourceGroup”的资源组:

az group create --name myResourceGroup --location chinanorth2

现在,使用 az vmss create 创建虚拟机规模集。 以下示例创建名为 myScaleSet 的规模集,该规模集设置为在应用更改时自动更新;如果 ~/.ssh/id_rsa 中没有 SSH 密钥,此示例还会生成 SSH 密钥。 登录到 VM 实例时需要使用这些 SSH 密钥。 若要使用一组现有的 SSH 密钥,请改用 --ssh-key-value 参数并指定密钥的位置。

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image <SKU image> \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys

创建和配置所有的规模集资源和 VM 需要几分钟时间。

部署示例应用程序

若要测试规模集,请安装一个基本的 Web 应用程序。 使用 Azure 自定义脚本扩展下载并运行一个脚本,以便在 VM 实例上安装应用程序。 此扩展适用于部署后配置、软件安装或其他任何配置/管理任务。 有关详细信息,请参阅自定义脚本扩展概述

使用自定义脚本扩展安装基本的 NGINX Web 服务器。 使用 az vmss extension set 应用可安装 NGINX 的自定义脚本扩展,如下所示:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],"commandToExecute":"./automate_nginx.sh"}'

允许流量发往应用程序

创建规模集时,已自动部署一个 Azure 负载均衡器。 该负载均衡器会将流量分配到规模集中的 VM 实例。 若要允许流量抵达示例 Web 应用程序,请使用 az network lb rule create 创建一个负载均衡器规则。 以下示例创建名为“myLoadBalancerRuleWeb”的规则:

az network lb rule create \
  --resource-group myResourceGroup \
  --name myLoadBalancerRuleWeb \
  --lb-name myScaleSetLB \
  --backend-pool-name myScaleSetLBBEPool \
  --backend-port 80 \
  --frontend-ip-name loadBalancerFrontEnd \
  --frontend-port 80 \
  --protocol tcp

测试规模集

若要查看正在运行的规模集,请在 Web 浏览器中访问示例 Web 应用程序。 使用 az network public-ip show 获取负载均衡器的公共 IP 地址。 以下示例获取创建为规模集一部分的“myScaleSetLBPublicIP”的 IP 地址:

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query '[ipAddress]' \
  --output tsv

将负载均衡器的公共 IP 地址输入到 Web 浏览器中。 负载均衡器将流量分发到某个 VM 实例,如以下示例所示:

Default web page in NGINX

清理资源

如果不再需要资源组、规模集和所有相关的资源,可以使用 az group delete 命令将其删除,如下所示。 --no-wait 参数会使光标返回提示符处,无需等待操作完成。 --yes 参数将确认是否希望删除资源,而不会有额外提示。

az group delete --name myResourceGroup --yes --no-wait

后续步骤

在本快速入门中,我们已创建一个基本的规模集,并使用自定义脚本扩展在 VM 实例上安装了一个基本的 NGINX Web 服务器。 若要了解详细信息,请继续学习有关如何创建和管理 Azure 虚拟机规模集的教程。