适用于:✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 统一规模集
注意
下文是关于统一虚拟机规模集的文章。 建议对新的工作负载使用灵活虚拟机规模集。 如需详细了解此新的协调模式,请参阅灵活虚拟机规模集概述。
利用虚拟机规模集,可以部署和管理一组自动缩放的虚拟机。 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率、内存需求或网络流量)进行自动缩放。 然后,Azure 负载均衡器会将流量分配到规模集中的 VM 实例。 在本快速入门中,我们将使用 Azure CLI 创建虚拟机规模集并部署一个示例应用程序。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅开始使用 Azure Cloud Shell。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用和管理 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 本文需要 Azure CLI 2.0.29 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。
创建规模集
重要
从 2023 年 11 月开始,使用 PowerShell 和 Azure CLI 创建的 VM 规模集将默认为灵活业务流程模式(如果未指定业务流程模式)。 若要详细了解此更改以及需要采取的操作,请访问有关 VMSS PowerShell/CLI 客户的重大变更 - Microsoft 社区中心
首先,您需要使用 az group create 创建资源组,然后才能创建扩展集。 以下示例在 eastus 位置创建名为 myResourceGroup 的资源组:
az group create --name myResourceGroup --___location eastus
现在,使用 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 实例,如以下示例所示:
清理资源
如果不再需要资源组、规模集和所有相关的资源,可以使用 az group delete 命令将其删除,如下所示。
--no-wait
参数会交还控制权给提示符,无需等待操作完成。
--yes
参数将确认是否希望删除资源,而不会有额外提示。
az group delete --name myResourceGroup --yes --no-wait
后续步骤
在本快速入门中,我们已创建一个基本的规模集,并使用自定义脚本扩展在 VM 实例上安装了一个基本的 NGINX Web 服务器。 若要了解详细信息,请继续学习有关如何创建和管理 Azure 虚拟机规模集的教程。