- 作者:小梦
- 发表时间: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的容灾,才能真正构建起企业级的可靠架构。