快速入门:使用 ARM 模板创建 Linux 虚拟机规模集

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

注意

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

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

Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。

ARM 模板允许部署相关资源的组。 在单个模板中,可以创建虚拟机规模集、安装应用程序,以及配置自动缩放规则。 在借助变量和参数的情况下,可以重复使用此模板来更新现有的规模集,或者创建更多的规模集。 可通过 Azure 门户、Azure CLI、Azure PowerShell 或持续集成/持续交付 (CI/CD) 管道部署模板。

如果你的环境满足先决条件,并且你熟悉如何使用 ARM 模板,请选择“部署到 Azure”按钮。 Azure 门户中会打开模板。

用于将资源管理器模板部署到 Azure 的按钮。

先决条件

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

查看模板

本快速入门中使用的模板来自 Azure 快速启动模板

该模板中定义了以下资源:

定义规模集

若要使用模板创建规模集,请定义相应的资源。 虚拟机规模集资源类型的核心部件包括:

属性 属性说明 示例模板值
type 要创建的 Azure 资源类型 Microsoft.Compute/virtualMachineScaleSets
name 规模集名称 myScaleSet
location 要创建规模集的位置 中国北部 2
sku.name 每个规模集实例的 VM 大小 Standard_A1
sku.capacity 一开始需要创建的 VM 实例数 2
upgradePolicy.mode 更改发生时的 VM 实例升级模式 自动
imageReference 用于 VM 实例的平台或自定义映像 Canonical Ubuntu Server 16.04-LTS
osProfile.computerNamePrefix 每个 VM 实例的名称前缀 myvmss
osProfile.adminUsername 每个 VM 实例的用户名 azureuser
osProfile.adminPassword 每个 VM 实例的密码 P@ssw0rd!

若要自定义规模集模板,可以更改 VM 大小或初始容量。 另一选项是使用其他平台或自定义映像。

添加示例应用程序

若要测试规模集,请安装一个基本的 Web 应用程序。 部署规模集时,可以通过 VM 扩展来完成部署后配置和自动化任务,例如安装某个应用。 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 Azure 门户。 若要对规模集应用某个扩展,请将 extensionProfile 节添加到前面的资源示例中。 扩展配置文件通常定义以下属性:

  • 扩展类型
  • 扩展发布者
  • 扩展版本
  • 配置或安装脚本的位置
  • 可在 VM 实例上执行的命令

模板使用自定义脚本扩展来安装 Bottle(Python Web 框架)和简单的 HTTP 服务器。

两个脚本在 fileUris - (installserver.shworkserver.py)中定义。 从 GitHub 下载这些文件以后,commandToExecute 就可以运行 bash installserver.sh 来安装和配置应用。

部署模板

可以通过选择下面的“部署到 Azure”按钮来部署模板。 此按钮可打开 Azure 门户、加载完整的模板,以及提示输入一些参数,例如规模集名称、实例计数和管理员凭据。

用于将资源管理器模板部署到 Azure 的按钮。

还可以使用 Azure CLI 部署资源管理器模板:

# Create a resource group
az group create --name myResourceGroup --location chinanorth2

# Deploy template into resource group
az deployment group create \
    --resource-group myResourceGroup \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json

响应提示,为 VM 实例提供规模集名称、实例计数和管理员凭据。 创建规模集和支持资源需要数分钟。

验证部署

若要查看正在运行的规模集,请在 Web 浏览器中访问示例 Web 应用程序。 使用 az network public-ip list 命令获取负载均衡器的公共 IP 地址,如下所示:

az network public-ip list \
    --resource-group myResourceGroup \
    --query [*].ipAddress -o tsv

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

NGINX 中的默认网页

清理资源

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

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

后续步骤

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