Azure Local VM Azure Arc 启用流程与现实考量
未经同意请勿转载系列博客 · 第二篇主题迁移 VM 的 Guest Management 启用流程 客户视角的成本与决策分析引言上一篇博客《为什么微软在新一代 Azure Local 中越来越建议为 VM 启用 Azure Arc》我们从战略角度分析了微软推动 VM Azure Arc 的原因。本文继续回答三个非常现实的工程问题如何为已经迁移到 Azure Local 的 VM 启用 Guest ManagementAzure Arc从客户视角看Arc 真的有必要吗会不会反而增加成本Azure Arc 是不是 Azure Local 的运行前提不开 Arc 能不能用 Azure Local第一部分迁移 VM 的 Guest Management 启用流程0. 必须先搞清楚两个 Agent 的职责区分很多人误认为安装 Arc Agent 就完成了其实并不是。Azure Local VM 的 Guest Management 实际涉及两个不同层次、不同 Resource Provider的 AgentAzure Local VM │ ├── Azure Local VM Guest Agentmocguestagent │ → 负责 Azure Local 与 VM 之间的 Guest Management 通信 │ → 属于 Azure Local 平台能力的一部分 │ → 对应 Resource Provider: Microsoft.AzureStackHCI │ └── Azure Connected Machine AgentAzure Arc Agent → 负责将操作系统注册为 Arc-enabled Server → 属于 Microsoft.HybridCompute / Azure Arc 管理平面两者职责不同mocguestagent是 Azure Local 平台的 Guest Agent承担 Azure Local 与 Guest OS 之间的通信心跳、状态上报、--enable-agent触发 Arc 注入等。Azure Connected Machine AgentArc Agent负责把 OS 注册成Arc-enabled ServerMicrosoft.HybridCompute/machines/...使其能够被 Azure 服务Monitor、Defender、Update Manager、Policy 等识别和管理。一句话区分两个 RPAzure Local VM Microsoft.AzureStackHCI平台对象Azure Arc VM Microsoft.HybridCompute/machinesArc 管理对象。Guest Management 启用成功意味着这两个 RP 下都能看到同一台 VM01。微软将以上流程统称为Enable Guest Management。完整路径是VM Guest Agentmocguestagent 已就位 │ ▼ 执行 az stack-hci-vm update --enable-agent true │ ▼ Azure Local 自动注入 Azure Connected Machine Agent │ ▼ Azure Arc VM只有mocguestagent正常以后Azure Local 才能通过--enable-agent true自动把 Arc Agent 注入 VM。1. 哪些 VM 需要手动启用典型场景从 Hyper-V 迁移Azure Migrate 迁移SCVMM 导入Failover Cluster ImportVHDX 导入第三方迁移这些 VM 虽然已经变成 Azure Local VM但Guest Management 默认通常还是 Disabled。Portal 会看到Guest Management: Disabled而不是Guest Management: Enabled (Connected)2. 第一步确认 Guest Agent 是否存在登录 Azure Local 管理节点查看 VMaz stack-hci-vm show --name VM01 --resource-group RG查看instanceView如果看到displayStatus: Connected→ Guest Agent 已经正常。这是微软文档的判断依据。3. 如果 Guest Agent 已正常最简单的情况直接执行az stack-hci-vm update --name VM01 --resource-group RG --enable-agent true或者使用 az CLIaz stack-hci-vm update \ --name VM01 \ --resource-group RG \ --enable-agent true等待几分钟。Azure Local 会VM Guest Agent │ ▼ 自动安装 Azure Connected Machine Agent完成后 Portal 会同时在两个位置反映Azure Local → Virtual Machines → VM01 → PropertiesGuest Management: Enabled (Connected)这是Microsoft.AzureStackHCIRP 下的状态Azure Arc → Arc-enabled Servers → VM01Status: Connected这是Microsoft.HybridComputeRP 下的资源Microsoft.AzureStackHCI与Microsoft.HybridCompute是两个独立的 Resource Provider前者负责 Azure Local 平台层面的 VM 对象后者负责 Arc 管理平面。两个同时存在时表示 Guest Management 启用成功。4. 如果 Guest Agent 没有安装迁移 VM 的常见情况很多迁移后的 VM 没有安装mocguestagent需要先安装 Guest Agent。Windows VM进入 VM执行微软提供的 ISO 安装脚本$d Get-Volume -FileSystemLabel mocguestagentprov $p Join-Path ($d.DriveLetter :\) install.ps1 powershell $pLinux VMsudo sh -c mkdir /mociso mount -L mocguestagentprov /mociso bash /mociso/install.sh umount /mociso rm -rf /mociso eject LABELmocguestagentprov安装完成以后再执行az stack-hci-vm update --enable-agent true微软文档明确建议分两步处理先安装 Guest Agent再启用 Guest Management。5. 迁移 VM 的特殊注意事项微软在《为已迁移的 VM 启用来宾管理》中专门说明VM 类型启用 Guest Agent 前的要求Hyper-V Generation 1 VM必须先关闭关机Hyper-V Generation 2 VM可以开机或关机无特殊限制6. 验证是否成功打开Azure Portal同时检查两个页面Azure Local → Virtual Machines → VM01 → Properties │ Guest Management: Enabled (Connected) Azure Arc → Arc-enabled Servers → VM01 │ Status: Connected在Azure Local页面看到的 VMMicrosoft.AzureStackHCI/virtualMachineInstances/...代表平台资源在Azure Arc页面看到的 ServerMicrosoft.HybridCompute/machines/...代表 Arc 管理资源随后 Arc-enabled Server 上可使用以下 Azure 服务能力VM ExtensionsRun CommandAzure PolicyGuest ConfigurationAzure MonitorDefender for CloudAzure Update Manager⚠️ 补充说明以上能力并非启用 Guest Management 后自动拥有。这些本质上是 Azure 上的服务依赖 Azure Subscription 及对应的资源Log Analytics 工作区、Automation Account、Defender 计划、Policy 分配等并按使用量、节点数或资源数计费。是否启用这些服务能力仍需根据业务需求与成本单独评估。7. 常见失败原因微软官方列表问题原因解决办法Guest Management 一直 DisabledGuest Agent 未安装安装mocguestagent后重新执行--enable-agent trueStatus 为 nullGuest Agent ISO 未挂载执行az stack-hci-vm update --enable-vm-config-agent true挂载 ISO再安装 Guest AgentInvalid managed identityVM 没有 System-assigned Managed Identity为 VM 启用 System-assigned Managed Identity 后重新启用 Guest Management8. 推荐的迁移后标准流程对于从本地 Hyper-V 或其他平台迁移到 Azure Local 的 VM建议按以下流程操作本地 Hyper-V VM │ ▼ 迁移到 Azure Local │ ▼ 检查 VM Guest Agentmocguestagent │ ├─ 已安装 │ │ │ ▼ │ az stack-hci-vm update --enable-agent true │ └─ 未安装 │ ▼ 安装 mocguestagent │ ▼ az stack-hci-vm update --enable-agent true │ ▼ 自动安装 Azure Connected Machine Agent │ ▼ Guest Management Enabled (Connected) │ ▼ Azure Arc、Monitor、Defender、Policy、Update Manager 等 Azure 服务可用这个流程也是微软针对迁移到 Azure Local 的 VM 推荐的标准启用方式。第二部分客户视角的现实考量1. 客户的疑问既然已有 WAC为什么还要 Arc对于绝大多数传统企业来说他们已经拥有Windows Admin CenterWACHyper-V ManagerFailover Cluster ManagerPowerShellSystem Center部分客户这些工具已经能够完成VM 创建 / 删除 / 开关机CheckpointLive MigrationStorage Migration性能监控Cluster 管理Host 管理换句话说日常运维几乎已经全部覆盖。那么再启用 Azure Arc VM 能获得什么很多客户回答就是没什么。因为他们不会使用Azure Update ManagerAzure MonitorDefender for CloudAzure PolicyAzure AutomationAzure BackupAzure Resource GraphArc Agent 在这种情况下只是多一个 Agent。2. 还有一个现实问题成本很多人容易忽略Azure Arc 本身注册机器虽然有免费的基础能力但很多真正体现价值的管理、安全、监控能力是与 Azure 服务绑定的例如Azure Monitor日志、洞察—— 按 GB 收费Defender for Cloud—— 按节点/资源收费Update Manager高级场景Log Analytics 工作区AutomationBackup因此对很多客户的逻辑是我本地已经有监控软件。 为什么还要 VM │ Azure Arc │ Azure Monitor │ Log Analytics │ 按 GB 收费这是很多客户最现实的问题。3. Windows Admin Center 已经足够了吗对于100 台以内的 VM甚至 500 台以内的 VMWindows Admin Center 已经很好用了。例如Host 管理Cluster 管理VM 管理Storage 管理Update 管理Performance 监控PowerShell 远程而且不用联网不用 Azure不用 Arc4. 微软真正想卖的其实不是 Arc这一点是很多文章没有讲透的微软真正想卖的是 Azure 服务Arc 只是入口。可以理解成以前 Windows │ WAC 现在 Windows │ Azure Arc │ Azure ServicesArc 本身几乎不产生价值。真正收费的是后面的 Azure 服务。所以微软为什么越来越强调 VM 必须 Arc因为只有 Arc 以后客户才能消费 Azure 服务。5. 为什么微软越来越默认开启不是因为 WAC 不行而是因为微软整个战略变了。时期商业模式以前卖的是 Windows Server现在卖的是 AzureAzure Local 只是Azure 在客户数据中心的延伸Edge 形态。因此微软希望所有资源都变成Azure Resource而不是 Hyper-V Object。这是商业模式的变化不是技术功能的变化。6. 哪些客户真正能从 Arc 中获益第一类跨地域企业例如上海、北京、深圳、香港几十个机房。如果全部 ArcPortal 统一管理价值很大。第二类没有 System Center很多客户没有 SCOM、SCCM、Orchestrator、Service Manager。他们直接 Arc Azure Update Manager 就完成补丁。第三类云混合企业例如 Azure VM Azure Local VMware AWS Physical Server 全部 ArcPortal 统一。这是 Arc 最大价值。第四类安全要求高例如 Defender for Cloud、Vulnerability Assessment、CIS Baseline、ComplianceArc 很方便。7. 国内绝大多数 Azure Local 客户的真实情况如果我们看国内目前 Azure Local 的实际项目大多数企业更关心的是Hyper-V 高可用Storage Spaces DirectS2DGPU 虚拟化SQL ServerVDISAP本地 AI 推理平台这些场景的核心诉求都是稳定运行本地业务。它们并不会因为 VM 注册成 Arc Resource就直接获得业务价值。如果企业没有规划使用 Azure Monitor、Defender、Azure Policy、Automation 等云端管理能力那么 Arc 对这些客户而言更多体现为多安装一个 Agent多增加一个需要维护的组件多一个与 Azure 通信的依赖如果进一步启用 Azure 服务还可能增加持续运营成本因此从ROI投资回报率来看这类客户确实会认为收益有限。8. 一张决策表场景是否建议启用 Arc VM纯本地 Hyper-V/Azure Local使用 Windows Admin Center 运维没有强制必要已经部署 SCOM、SCVMM 等 System Center价值较小多站点、多云、混合云统一管理建议启用希望使用 Azure Monitor、Defender、Update Manager、Policy 等 Azure 管理服务建议启用完全离线Disconnected Operations或严格内网环境通常不建议仅保留本地管理即可第三部分Azure Local 的 VM 究竟能不能不启用 Arc1. 答案是可以而且需要区分两个概念Azure Local VM虚拟机资源Azure Arc Guest ManagementVM Azure Arc很多人把这两者混为一谈实际上Azure Local VM │ ├── 可以启用 Guest ManagementAzure Arc │ └── 也可以不启用微软文档中的--enable-agent参数就是用来控制是否启用 Guest ManagementAzure Connected Machine Agent。对于支持的操作系统新建 VM 时默认会启用但这是默认行为并非 Azure Local VM 必须具备的条件。2. 为什么很多人误以为必须启用因为微软现在几乎所有文档标题都是Azure Local virtual machines enabled by Azure Arc于是很多人理解成Azure Local VM Azure Arc VM其实不是。正确理解应该是Azure Local VM │ ├── 启用 Azure Arc │ │ │ ├── Azure Monitor │ ├── VM Extensions │ ├── Defender │ ├── Update Manager │ └── Azure Policy │ └── 不启用 Azure Arc │ ├── Hyper-V VM正常运行 ├── Live Migration ├── HAFailover Cluster ├── Checkpoint ├── Replica └── Windows Admin Center 管理Arc 增加的是 Azure 管理能力而不是 Hyper-V 的运行能力。3. 不启用 Arc会失去什么主要是 Azure 云端的 VM 管理能力Azure Portal 中的 Guest ManagementVM ExtensionsRun CommandAzure Monitor基于 ArcAzure Update ManagerDefender for CloudAzure PolicyAzure Automation这些能力依赖 Guest Management 和 Azure Connected Machine Agent。微软文档明确说明安装 VM Extensions 等功能前必须启用 Guest Management。4. 不启用 Arc会影响虚拟机运行吗不会。下面这些核心 Hyper-V 能力与 Azure Arc 无关VM 开机/关机Live MigrationFailover ClusterStorage Spaces Direct动态内存GPU 分配DDA / GPU-PCheckpointVHDX虚拟交换机这些都是 Hyper-V 和 Windows Server/Azure Local 本身提供的能力。5. 我认为微软真正的意图Azure Arc 是 Azure Local 的推荐管理模型而不是运行前提。也就是说从技术角度可以不启用 Arc。从产品战略角度微软希望你启用 Arc因为后续的管理、安全、监控、自动化等能力都围绕 Azure 服务展开。第四部分Azure Arc 并非 Azure Local 的运行前提为了帮助读者准确理解 Azure Local 平台能力与 Azure 云管理能力的边界这里单独梳理一下。1. 不依赖 Azure Arc 的本地能力以下能力是 Azure LocalHyper-V Failover Clustering Storage Spaces Direct Network ATC 等原生提供的与 Azure Arc 完全无关Azure Local 集群的创建、加入、运维Hyper-V VM 创建、删除、启停Live MigrationFailover Clustering / HAStorage Spaces Direct动态内存GPU 分配DDA / GPU-PCheckpointVHDX 存储虚拟交换机 / Network ATCWindows Admin Center、Hyper-V Manager、Failover Cluster Manager 等本地工具以上能力在没有 Arc 的情况下依然可以正常使用。2. 依赖 Azure Arc 的云管理能力只有需要以下云端能力时才必须启用 Azure ArcAzure Portal 中的 Guest ManagementVM ExtensionsRun CommandAzure Monitor基于 Arc AgentAzure Update ManagerGuest OS 补丁Defender for CloudGuest 漏洞扫描 / CVE / BaselineAzure PolicyGuest OS 合规Azure AutomationRunbook 针对 VM 执行3. 一句话总结边界Azure Local 是运行平台Azure Arc 是 Azure 云管理入口。不启用 ArcAzure Local 的本地能力一项都不会少启用 Arc只是开启了一条走向 Azure 服务的路径。这个边界是判断客户是否真的需要启用 Arc的关键依据也是下一篇博客也是后续许多 Azure Local 客户咨询中必须先说清楚的前提。第五部分对国内企业客户的建议如果客户具备以下特点已有 Windows Admin Center 或传统运维体系不计划使用 Azure Monitor、Defender、Policy、Automation 等 Azure 服务希望降低系统复杂度和避免持续云服务费用主要关注 Hyper-V 高可用、S2D、SQL Server、AI 等本地工作负载那么完全可以不为所有 VM 启用 Azure Arc不会影响 Azure Local 作为虚拟化平台的核心能力。相反如果企业未来规划采用 Azure 的统一运维和安全体系再逐步为需要纳入 Azure 管理的 VM 启用 Azure Arc往往是更符合实际业务需求的做法。这样既保留了 Azure Local 的本地虚拟化优势也避免了为了推荐架构而增加不必要的复杂度和成本。总结回到博客开头的两个问题Q1如何为迁移 VM 启用 Guest ManagementA分两步 —— 先确保mocguestagent已安装必要时挂载 ISO 安装再执行az stack-hci-vm update --enable-agent true触发 Arc Agent 自动注入。Gen1 VM 需先关机Gen2 VM 无此限制。Q2客户视角下 Arc 是否必要A取决于客户是否规划使用 Azure 云端管理服务。若客户已有 WAC、System Center 或自建监控体系且不打算消费 Azure Monitor/Defender/Policy 等服务则 Arc 对其价值有限反之跨云、混合云、统一安全合规场景下 Arc 价值显著。Q3Azure Local VM 能否不启用 ArcA可以。Arc 不是 Hyper-V 运行的前提仅是 Azure 管理平面的入口。是否启用 Arc本质上是本地运维 vs 云端统一管理的架构选择应基于客户的运维体系与云战略决定而不是默认全部启用。一句话概括Azure Arc 是桥不是路走不走桥取决于你想去哪。