鼠标轻点击,数据大挪移——Azure存储账户主动故障转移

  与其他公有云比较,Azure有一个最大特点是Region成对(Peer)建设,例如中国区的北一和东一,北二和东二,global的香港(EastAsia)和新加坡(SoutheastChina)。
  Azure利用Peer的两个Region,可以实现数据的底层复制,无需用户干预,达到数据异地容灾的目的。这个配置的优势在于,对业务应用透明,用户无需从应用层进行数据容灾,简化了容灾数据管理。

Azure数据异地容灾方式

  Azure提供的异地容灾方式是GRS或RA-GRS。通常情况下,为了避免数据脑裂,异地容灾的辅助站点数据不能访问使用(GRS)或者只能只读(RA-GRS)。
  数据的复制方式选择在创建存储账户时选择,创建后也可以修改(ZRS与LRS、GRS不能转化,不在此讨论范围,未来会有对应的GZRS复制方式):
-w821

  当选择GRS或RA-GRS时,数据将存放在两个Peer站点(一主一备):
-w1132

  不同之处在于:
  当选择GRS时,从存储账户属性查看服务终结点只有主服务终结点:
-w1417

  而当我们在存储账户的配置里将复制修改为RA-GRS后:
-w1405

  再去查看终结点,可以发现,多出了辅助服务终结点:
-w1412

  但是,辅助服务终结点的数据只能用作读取,不能进行增删改等写操作。
  当用户由于种种原因,需要将业务切到辅助站点,需要使用辅助站点数据时,需要通过开case的方式由后台切换。通常这个时间比较长,导致RTO不可控。

存储账户主动故障转移

功能介绍

  近期,在Global Azure开通了存储账户主动故障转移的Preview,通过这个功能,用户可自由切换GRS或RA-GRS的主站点和辅助站点,实现自助化数据访问转移操作。
  这个操作在存储账户的异地复制里进行:
-w1400

  进行故障转移有一定要求:

  • 存储账户的复制模式为GRS或RA-GRS
  • Disk建议通过Azure Backup或ASR进行转移
  • File和Table建议使用AzCopy进行转移
  • 建议Blob启用软删除(Soft Delete)保证数据安全

操作演示

  在存储账户里创建一个容器,并上传文件:
-w1422

  在存储账户的异地复制里,拉到最下方,点击准备进行故障转移(可以看到东亚为主要站点,东南亚为辅助站点):
-w1419

  输入“是”确认开始转移:
-w1438

  故障转移开始:
-w1398

  大约需要10多分钟,故障转移完成:
-w1398

  检查存储账户属性,可以发现,数据已转移到东南亚,并且复制方式转化为LRS(可以重新配置):
-w1404

  检查blob状态,访问正常,URL没有发生变化,无需更改应用的访问路径:
-w1346

  至此,故障转移完成。

总结

  故障转移原理并不复杂,其实就是通过DNS解析的变化,将主服务终结点指向辅助站点,并且将辅助站点的数据提升为可操作。整个过程不涉及数据复制,所以理论上需要花费的时间和数据量大小无关。
  功能虽然简单,但可以满足很多需求,不止是故障转移。例如,要通过一块非托管磁盘创建托管磁盘,要求目标盘和源盘在一个region;这时候如果源盘在peer region,就可以通过这个方式实现快速转移。
  目前此功能还在Preview,使用时要注意如下点:

  • GRS的复制是异步,所以故障转移后的数据可能存在一定差异,需要从应用层规划容忍
  • 转移过程中,会出现数据短暂不能访问,要提前规划业务停止时间
  • 操作过程中可能会出现容器界面出错等小bug,转移完成后会自动恢复
  • 如果容器访问策略设置为专有,完成后可能会无法访问,重新设置为blob或公开,再设置为专有即可

  总体来说,此功能给了用户非常大的自主操作空间,希望能尽快GA,特别是在Azure Chian落地。