Skip to main content

使用Manual Failover测试Azure IoT Hub的灾难恢复

分类:  Azure物联网 标签:  #Azure #IoT Hub # 发布于: 2023-06-13 21:14:53

Azure IoT Hub默认拥有灾难恢复(DR: Disaster Recovery)的功能。当灾难发生时,微软内置的触发器会触发DR, 自动将主要的数据自动转移到其他区域(这些区域已经由微软规划好),这包括所有的设备IdentityDevice Twin等数据,并恢复服务。

DR的概念中我们有一个重要的指标:Recovery time objective(RTO), 这个指标主要用于评估恢复的时长,也可以用于评估当灾害发生时,DR过程中会有多大的业务损失。

默认的DR必须要微软的触发器在灾害发生时自动触发,这个过程是非常少见的。在方案设计的时候如果要考虑DR,必须要有能参考的指标。有了参考的指标,当设计应用冗余的时候,可以有针对性的做出更多设计。针对这个需求, Azure IoT Hub提供了另外一个工具: Manual Failover

测试Manual Failover

我们可以快速的测试一下Manual Failover

开始测试之前,必须满足一些前提条件:

  • 您有一个Azure订阅。
  • 创建好一个Azure IoT Hub
  • 创建一些Azure IoT Hub Device Identity

登录到Azure Portal, 并找到您的IoT Hub资源,选择左侧的菜单: Hub Setting -> Failover:


从图中的4,5可以看到当前的location以及Failover Location, 如果要测试Failover, 只需点击2处的菜单Start failover即可以测试一次Failover

注意
Failover完成之后,如果需要切换回来,只需要再次运行Failover就可以了,但是需要注意的是一次Failover完成之后,需要等待一个小时之后再做Failover, 否则Azure会报超限的错误。

根据微软的官方文档,Manual failover测试的RTO比起由微软触发的DR要短一些,一个拥有100万设备的IoT Hub, 通常情况由manual failover触发的DR会在10分钟到2个小时之内完成,但是如果是由微软触发,需要耗费大约2个小时-26个小时。

同时需要注意的是当发生DR时, 会有部分的数据丢失:

  • Device Registry数据:大约有0-5分钟的数据丢失
  • Device Twin数据:大约0-5分钟的数据丢失。
  • C2D消息:大约0-5分钟的数据丢失
  • Device Job: 大约0-5分钟的数据丢失。
  • D2C消息:所有未读的消息均丢失
  • C2D Feedback消息:所有未读的消息均丢失。

以上丢失的数据规则无论由微软触发的DR还是手动触发的DR都适用。