跨region移动VM并不常见,但是在某些情况下,还是会有这种需求的,就像在中国区很多需求都是从旧的region要移动到新的region,以便获得更好的容量,更快的功能更新,以及更多的VM机型等

之前想实现这种跨region迁移VM,一般都是给VM打快照,然后将数据拷贝到目标region的存储账户,然后再新建磁盘,用磁盘创建VM,一套操做下来还挺麻烦的,或者用storage exploer、ASR倒是也能操作,不过不管哪种方式,都需要对Azure有一定了解才行

但是现在不需要那么麻烦了,微软有个工具叫Azure Resource Mover,用这个就可以实现跨region迁移VM

Azure Resource Mover支持多种不同的场景,包括

  • 将资源移动到其他订阅
  • 将资源移动到其他资源组
  • 将资源移动到其他区域

这里主要关注如何将资源移动到其他区域,resource mover支持将以下类型资源迁移到其他区域

  • Azure VM 和关联的磁盘
  • 已加密的 Azure VM 及关联磁盘。 这包括启用了 Azure 磁盘加密的 VM 和使用默认服务器端加密的 VM(这两者都使用平台管理的密钥和客户管理的密钥)
  • NIC
  • 可用性集
  • Azure 虚拟网络
  • 公共 IP 地址
  • 网络安全组 (NSG):
  • 内部和公共负载均衡器
  • Azure SQL 数据库和弹性池

相关的操作其实并不复杂,但是里边有点小坑需要注意

首先找到resource mover,然后选择移动资源到另一个region

使用Azure Resource Mover跨region移动VM_负载均衡


选择要移动的源区域和目标区域

使用Azure Resource Mover跨region移动VM_虚拟网络_02

选择要移动的资源

使用Azure Resource Mover跨region移动VM_Azure_03

开始验证dependency

使用Azure Resource Mover跨region移动VM_虚拟网络_04

Resource mover会把缺少的dependency识别出来

使用Azure Resource Mover跨region移动VM_虚拟网络_05

可以看到要把VM移动过去,还需要把整个VNET都一起移动过去,把缺失的dependency加进去,不过resource mover的操作基本都只是copy,而不是直接转移,所以也不需要担心源region的VNET会丢失

使用Azure Resource Mover跨region移动VM_负载均衡_06

开始重新validate

使用Azure Resource Mover跨region移动VM_Azure_07


接下来就是从准备->初始化->commit的一系列过程了,首先先准备资源组

使用Azure Resource Mover跨region移动VM_区域_08

再准备其他资源

使用Azure Resource Mover跨region移动VM_虚拟网络_09

开始initial除了VM之外的其他资源

使用Azure Resource Mover跨region移动VM_Cloud_10

接下来开始准备VM,等一段时间之后开始有进度条

使用Azure Resource Mover跨region移动VM_负载均衡_11

完成之后开始initial move

使用Azure Resource Mover跨region移动VM_Cloud_12

Commit move

使用Azure Resource Mover跨region移动VM_Azure_13

源region VM停机,新region里的VM出来了,应该是prepare之后就开始在move了

使用Azure Resource Mover跨region移动VM_虚拟网络_14

资源在新的region都出来了,其实看一下就能知道,后台也是通过ASR来实现的,无非就是把操作全都转移到后台,对用户透明了

使用Azure Resource Mover跨region移动VM_负载均衡_15

总体比较简单,但是移动VM的时候其实是有点小坑的,如果一开始就prepare VM的话会报错dependency有问题,要先prepare其他资源才可以