微软云Azure VM实战:从创建到自动化运维
  • 作者:小梦
  • 发表时间:2026-03-05
  • 来源:原创

☁️ 引言:Azure VM——云上基础设施的核心

作为微软云计算的基石,Azure虚拟机(VM)提供了高度灵活的IaaS(基础设施即服务)能力。无论是将本地工作负载直接迁移上云,还是构建云原生的弹性架构,Azure VM都是企业最常打交道的核心服务。然而,仅仅在门户上点几下鼠标创建一台VM,只是万里长征的第一步。

真正的实战,需要你理解如何通过代码(CLI/PowerShell/ARM)实现基础设施即代码,如何利用Azure的独特优势(如可用性集、Spot实例、磁盘加密)来平衡成本、性能与安全。本文将从零开始,带你完整走一遍Azure VM的创建、配置、优化与自动化运维全流程。

🛠️ 一、准备工作:账号、工具与核心概念

1. 创建Azure账号与订阅

访问Azure官网注册免费账户,新用户可获得限时免费额度和12个月热门免费服务。对于学生,可通过“Azure for Students”获取无需信用卡的免费额度。

2. 安装并配置本地工具

实战中我们将用到以下工具。如果你在中国区(由世纪互联运营),需要先切换云环境:

# Azure CLI(跨平台)
az cloud set -n AzureChinaCloud  # 切换到中国区
az login  # 登录

# Azure PowerShell
Connect-AzAccount  # 登录

3. 理解关键概念

在动手之前,建议先熟悉以下Azure特有概念:

  • 资源组: 所有资源的逻辑容器,必须指定一个位置。
  • 可用性集/区域: 用于保证高可用,生产环境必选。
  • VM大小: 决定CPU、内存、最大IOPS,如B系列(经济)、D系列(通用)、E系列(内存优化)。
  • 托管磁盘: Azure管理的持久化块存储,比旧式存储账户更推荐。

🚀 二、实战:四种方式创建你的第一台Azure VM

以下展示创建Windows Server 2022 VM的四种方式,你可以根据场景选择:

部署方式 适用场景 核心命令/操作
Azure CLI 自动化脚本、CI/CD、Linux/macOS环境 az vm create --resource-group myRG --name myVM --image Win2022AzureEditionCore --admin-username azureuser
Azure PowerShell Windows环境、深度集成脚本 New-AzVm -ResourceGroupName 'myRG' -Name 'myVM' -Location 'ChinaEast' -Image 'Win2022AzureEdition' -OpenPorts 80,3389
Azure门户 新手体验、一次性快速创建 门户搜索“虚拟机” -> “创建” -> 填写基本信息 -> “查看+创建”
ARM/Bicep模板 基础设施即代码、团队协作、版本控制 定义Bicep文件,执行az deployment group create --template-file main.bicep

其中,使用Azure CLI创建时会自动创建虚拟网络、公网IP等依赖资源,并提示设置密码。创建成功后,记录输出的publicIpAddress。

🔌 三、远程连接与基础配置

1. Windows VM:RDP连接

在Azure门户找到VM的“概述”页面,点击“连接”->“RDP”,下载RDP文件并打开。输入之前设置的管理员凭据即可登录。

2. Linux VM:SSH连接

在本地终端执行:

ssh 管理员用户名@公网IP地址

3. 开放端口(网络安全组)

如果创建时未开放HTTP端口,可以通过CLI添加:

az vm open-port --port 80 --resource-group myResourceGroup --name myVM

也可以通过门户的“网络”->“添加入站端口规则”来配置,可以限制来源IP范围以提高安全性。

⚙️ 四、常用运维管理操作实战

1. 调整VM大小(纵向扩展)

当性能不足时,可以在VM停止(解除分配)后,在门户的“大小”中更换更大的实例类型。

2. 添加并格式化数据盘

在门户的“磁盘”中添加新磁盘,指定大小和类型(如标准SSD)。登录到VM后,需要初始化和格式化。Windows请在“磁盘管理”中联机并格式化;Linux请执行:

sudo fdisk /dev/sdc  # 分区
sudo mkfs.ext4 /dev/sdc1  # 格式化
sudo mount /dev/sdc1 /mnt/data  # 挂载

3. 使用Run-Command自动化脚本

无需登录,即可在VM上执行脚本,例如安装IIS:

az vm run-command invoke -g myResourceGroup -n myVM --command-id RunPowerShellScript --scripts "Install-WindowsFeature -Name Web-Server -IncludeManagementTools"

之后在浏览器访问公网IP,即可看到IIS欢迎页面。

🌐 五、部署应用实战:Web服务器与开发环境

案例一:Linux VM + Nginx

连接到Ubuntu VM,执行:

sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx

案例二:Windows VM + IIS + 自定义页面

除了使用Run-Command安装IIS,还可以创建自定义页面:

# 使用内联脚本安装并修改默认页
az vm run-command invoke -g myRG -n myVM --command-id RunPowerShellScript --scripts 'powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools; powershell.exe Add-Content -Path "C:\inetpub\wwwroot\iisstart.htm" -Value $("Hello from Azure VM: " + $env:computername)'

⚡ 六、高级功能:高可用、弹性与成本优化

1. 虚拟机规模集(VMSS)实现自动伸缩

当需要应对流量波动时,虚拟机规模集可以根据CPU负载自动增减实例数量。通过Azure CLI快速创建:

az vmss create --resource-group myRG --name myScaleSet --image UbuntuLTS --upgrade-policy-mode automatic --admin-username azureuser

2. 使用Azure Bastion实现安全连接

Bastion是一种PaaS服务,提供无需公网IP的浏览器内RDP/SSH连接,避免暴露公网端口。部署Bastion后,可直接在门户点击连接。

3. 成本节约策略

  • Azure预留实例: 承诺1年或3年使用,可节省高达72%的成本。
  • Azure Spot实例: 利用Azure闲置容量,折扣高达90%,适合容错或批处理任务。
  • 自动关闭: 对开发测试VM设置自动关机,避免夜间或周末产生费用。

4. 使用ARM模板实现基础设施即代码

ARM模板(或Bicep)可以声明式地定义VM及其所有依赖,实现可重复的部署。以下是一个添加自定义脚本扩展的片段:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "settings": {
      "fileUris": ["https://raw.githubusercontent.com/.../installWebServer.ps1"],
      "commandToExecute": "powershell.exe -File installWebServer.ps1"
    }
  }
}

✅ 总结:Azure VM实战要点

通过本文的实战,你已经掌握了Azure VM的核心生命周期管理。回顾关键要点:

  • 部署方式选择: 临时用门户,重复性工作用CLI/PowerShell,生产环境用ARM/Bicep。
  • 安全第一: 使用Bastion替代公网RDP/SSH,最小化开放端口,启用磁盘加密。
  • 成本意识: 结合预留实例、Spot实例和自动关机,持续优化成本。
  • 自动化运维: 利用Run-Command、自定义脚本扩展和VMSS,减少人工干预。

Azure VM的世界远不止于此,结合Azure Monitor的监控、Azure Backup的备份、Azure Site Recovery的容灾,才能真正构建起企业级的可靠架构。

🎯 行动建议: 立刻打开Azure Cloud Shell,尝试用CLI创建一个VMSS并设置自动缩放规则。理论与实践结合,是掌握Azure的不二法门。