更新 Azure VM ScaleSet 的 VHD

Posted

技术标签:

【中文标题】更新 Azure VM ScaleSet 的 VHD【英文标题】:Updating VHD of Azure VM ScaleSet 【发布时间】:2018-02-10 12:54:54 【问题描述】:

我使用 Azure VM 的 vhd 在 Azure 上创建了一个 VMSS。

如何将 VMSS 的源 vhd 更改为新的 vhd?

得到以下错误:

【问题讨论】:

【参考方案1】:

我们可以使用Update-AzureRmVmssUpdate-AzureRmVmssInstance来升级VMSS实例。

如果我们想使用自定义镜像来升级 Azure VMSS 实例,我们应该确保这个 VMSS 是由自定义镜像创建的。

如果我们从 Azure 市场创建 VMSS,我们不能使用自定义映像来升级 Azure VMSS 实例。

这是我的测试:

1.我通过自定义镜像创建VMSS,并使用VMSStemplate创建它(托管磁盘)。

2、创建另一个VM镜像,并使用此脚本获取$vmss,并使用Powershell升级VMSS实例:

$rgname = "vmsss"
$vmssname = "jasonvmss"
$instanceid = "1"
$newimagereference = "/subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jasonwin/providers/Microsoft.Compute/images/myImage"
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssname
$vmss.virtualMachineProfile.storageProfile.imageReference.id = $newImageReference
Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssname -VirtualMachineScaleSet $vmss
Update-AzureRmVmssInstance -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $instanceId

这是我的截图:

我们还可以找到VMSS实例的状态:

因此,作为一种解决方法,我们可以使用模板或 PowerShell使用自定义映像创建 Azure VMSS,然后使用此脚本升级 Azure VMSS 实例。

注意:在我的测试中,我使用模板创建VMSS是托管磁盘,所以我们应该使用$vmss.virtualMachineProfile.storageProfile.imageReference.id

如果你创建的 VMSS 是非托管磁盘,我们应该使用这个$vmss.virtualMachineProfile.storageProfile.osDisk.image.uri= $newURI

这里是关于升级VMSS实例的官方文章,请参考it。

【讨论】:

完美运行,谢谢。【参考方案2】:

根据FAQ on VMSS 和 VM,一般来说,VMSS 在 VHD 之上运行。因此,如果您有一个新的 VHD,那么您可以简单地删除旧的 VMSS,然后创建一个新的 VMSS。

这是我对你的情况的描述。

    VMSS 在 VHD1 之上运行 现在,我有 VHD2。 使用 VHD2 作为基础创建新的 VMSS。 删除在 VHD1 上运行的 VMSS 如果不再需要 VHD1,也将其删除,或者将其推送到某个备份以供以后重复使用。

这个问题本身似乎很简单,除非你要求别的东西,我在自欺欺人:)

如果问题是其他问题,那么需要对问题进行更多解释,以便其他更有经验的 azure 人员可以帮助您。

【讨论】:

用新的 vhd 创建一个新的 VMSS 是个好主意。但是有没有办法更新现有的 VHD ?如果我删除旧的并将其替换为新的和其他设置(如自动缩放规则),IP 也会发生变化? 1.更新现有的 VHD?这就像试图更换你坐的椅子。除非你站起来让椅子被替换,否则它不会工作。与 VHD 相同。 2.IP地址会改变,但你可以得到一个域名——xxx.azuresomething.net,它在IP配置或其他东西中可用。试试看。 可以使用 Update-AzureRmVmss 命令完成,然后提供 VHD 的 URI。问题是它不接受 VHD 给出一些 VHD 类型错误。希望有人可以帮助我 啊!然后,我不知道那个技术。我相信比我更有经验的人会尽快发布答案:)

以上是关于更新 Azure VM ScaleSet 的 VHD的主要内容,如果未能解决你的问题,请参考以下文章

Azure Service Fabric 中的 NodeType 和 ScaleSet 有啥区别

如何使用FTP连接到Azure规模集实例

使用 azure cli/bash 在 Azure VM 的“实时”数据磁盘上更新缓存设置

您可以进行Azure VM操作系统的就地更新/升级吗?

关于 vm vh 单位

是否可以通过 ARM 模板将分配的 Azure DSC 配置更新到 VM?