你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Health Data Services 去识别化服务(预览版)的可靠性

本文介绍去识别化服务(预览版)中的可靠性支持。 有关 Azure 中可靠性原则的更详细概述,请参阅 Azure 可靠性

跨区域灾难恢复

灾难恢复 (DR) 是指从会导致故障时间和数据丢失的高影响事件(例如自然灾害或部署失败)中恢复。 不管灾难的原因是什么,最好的补救措施就是一个定义全面且经过测试的 DR 计划,以及一个主动支持 DR 的应用程序设计。 在开始考虑创建灾难恢复计划之前,请参阅设计灾难恢复策略的建议

在 DR 方面,Microsoft 使用责任共担模型。 在共担责任模型中,Microsoft 会确保基线基础结构和平台服务可用。 同时,许多 Azure 服务不会自动复制数据,也不会从失败区域回退以交叉复制到另一个启用的区域。 对于这些服务,你负责设置适用于工作负载的灾难恢复计划。 大多数在 Azure 平台即服务 (PaaS) 产品/服务上运行的服务都提供支持 DR 的功能和指导,你可以使用特定于服务的功能来支持快速恢复,从而帮助制定 DR 计划。

每个去识别化服务(预览版)都会部署到单一的 Azure 区域。 如果整个区域不可用或性能明显下降:

  • ARM 控制平面功能在中断期间只能进行只读操作。 服务元数据(如资源属性)始终由 Microsoft 在区域外部备份。 中断结束后,可以读取和写入控制平面。
  • 所有数据平面请求在中断期间都会失败,例如去识别化请求或作业 API 请求。 虽然不会丢失客户数据,但可能会丢失作业进度元数据。 中断结束后,可以读取和写入数据平面。

灾难恢复教程

如果整个 Azure 区域不可用,则仍可以确保工作负载的高可用性。 可以在主动-主动配置中部署两个或更多去识别化服务,并使用 Azure Front Door 将流量路由到这两个区域。

在此示例体系结构中:

  • 相同的去识别化服务会部署在两个单独的区域中。
  • Azure Front Door 用于将流量路由到这两个区域。
  • 发生灾难时,一个区域变为脱机状态,Azure Front Door 专门将流量路由到另一个区域。 此类异地故障转移期间的恢复时间目标受限于 Azure Front Door 检测到一个服务运行不正常所用的时间。

RTO 和 RPO

如果采用主动-主动配置,恢复时间目标 (RTO) 应该为 5 分钟。 在任何配置中,恢复点目标 (RPO) 应该为 0 分钟(即不丢失任何客户数据)

验证灾难恢复计划

先决条件

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

为完成此教程:

创建资源组

本教程需要两个在不同 Azure 区域的两个去识别化服务(预览版)实例。 本教程使用美国东部区域和美国西部 2 区域,但你可以随意选择自己的区域。

为使管理和清理变得更简单,请在本教程中对所有资源使用单个资源组。 请考虑对每个区域/资源使用不同的资源组,以便在灾难恢复时进一步隔离资源。

运行以下命令以创建资源组。

az group create --name my-deid --location eastus

创建去识别化服务(预览版)

按照快速入门:部署去识别化服务(预览版)中的步骤操作,以创建两个单独的服务,一个位于美国东部,另一个位于美国西部 2。

请注意每个去识别化服务的服务 URL,以便在下一步部署 Azure Front Door 时定义后端地址。

创建 Azure Front Door

多区域部署可以使用主动-主动或主动-被动配置。 主动-主动配置会将请求分发到多个活动区域。 主动-被动配置在次要区域中保留正在运行的实例,但除非主要区域发生故障,否则不会向次要区域发送流量。 Azure Front Door 提供用于启用这些配置的内置功能。 有关为应用设计高可用性和容错的详细信息,请参阅构建 Azure 应用程序以实现复原能力和可用性

创建 Azure Front Door 配置文件

现在,请创建一个 Azure Front Door 高级层以将流量路由到服务。

运行 az afd profile create 以创建 Azure Front Door 配置文件。

注意

如果你要部署 Azure Front Door 标准层而不是高级层,请将 --sku 参数的值替换为 Standard_AzureFrontDoor。 如果选择标准层,则无法使用 WAF 策略部署托管规则。 有关定价层的详细比较,请参阅 Azure Front Door 层的比较

az afd profile create --profile-name myfrontdoorprofile --resource-group my-deid --sku Premium_AzureFrontDoor
参数 价值 说明
profile-name myfrontdoorprofile Azure Front Door 配置文件的名称,该名称在资源组中是唯一的。
resource-group my-deid 包含本教程中的资源的资源组。
sku Premium_AzureFrontDoor Azure Front Door 配置文件的定价层。

添加 Azure Front Door 终结点

运行 az afd endpoint create 以在 Azure Front Door 配置文件中创建终结点。 此终结点将请求路由到服务。 完成本指南后,可以在配置文件中创建多个终结点。

az afd endpoint create --resource-group my-deid --endpoint-name myendpoint --profile-name myfrontdoorprofile --enabled-state Enabled
参数 价值 说明
endpoint-name myendpoint 配置文件下的终结点的名称,该名称是全局唯一的。
enabled-state Enabled 是否启用此终结点。

创建 Azure Front Door 源组

运行 az afd origin-group create 以创建包含两个去识别化服务的源组。

az afd origin-group create --resource-group my-deid --origin-group-name myorigingroup --profile-name myfrontdoorprofile --probe-request-type GET --probe-protocol Https --probe-interval-in-seconds 60 --probe-path /health --sample-size 1 --successful-samples-required 1 --additional-latency-in-milliseconds 50 --enable-health-probe
参数 价值 说明
origin-group-name myorigingroup 源组的名称。
probe-request-type GET 发出的运行状况探测请求的类型。
probe-protocol Https 用于运行状况探测的协议。
probe-interval-in-seconds 60 运行状况探测之间间隔的秒数。
probe-path /health 源的相对路径,用于确定源的运行状况。
sample-size 1 负载均衡决策要考虑的样本数。
successful-samples-required 1 采样期间必须成功的样本数。
additional-latency-in-milliseconds 50 使探测落入最低延迟桶的额外延迟(以毫秒为单位)。
enable-health-probe 切换以控制运行状况探测的状态。

将源添加到 Azure Front Door 源组

若要将源添加到源组,请运行 az afd origin create。 对于 --host-name--origin-host-header 参数,请将占位符值 <service-url-east-us> 替换为美国东部服务 URL,从而舍弃该方案 (https://)。 应该有一个像 abcdefghijk.api.eastus.deid.azure.com 这样的值。

az afd origin create --resource-group my-deid --host-name <service-url-east-us> --profile-name myfrontdoorprofile --origin-group-name myorigingroup --origin-name deid1 --origin-host-header <service-url-east-us> --priority 1 --weight 1000 --enabled-state Enabled --https-port 443
参数 价值 说明
host-name <service-url-east-us> 主要去识别化服务的主机名。
origin-name deid1 源的名称。
origin-host-header <service-url-east-us> 要为发往此源的请求发送的主机头。
priority 1 将此参数设置为 1,以将所有流量定向到主要去识别化服务。
weight 1000 给定源组中的源的权重,用于负载均衡。 必须介于 1 和 1000 之间。
enabled-state Enabled 是否启用此源。
https-port 443 用于向源发出的 HTTPS 请求的端口。

重复此步骤以添加第二个源。 对于 --host-name--origin-host-header 参数,请将占位符值 <service-url-west-us-2> 替换为美国西部 2 服务 URL,从而舍弃该方案 (https://)。

az afd origin create --resource-group my-deid --host-name <service-url-west-us-2> --profile-name myfrontdoorprofile --origin-group-name myorigingroup --origin-name deid2 --origin-host-header <service-url-west-us-2> --priority 1 --weight 1000 --enabled-state Enabled --https-port 443

请注意这两个命令中的 --priority 参数。 由于这两个源的优先级都设置为 1,因此 Azure Front Door 会将这两个源视为活动源,并将流量定向到这两个区域。 如果一个源的优先级设置为 2,Azure Front Door 会将该源视为辅助源,并将所有流量定向到其他源,除非该源出现故障。

添加 Azure Front Door 路由

若要将终结点映射到源组,请运行 az afd route create。 此路由会将来自终结点的请求转发到源组。

az afd route create --resource-group my-deid --profile-name myfrontdoorprofile --endpoint-name myendpoint --forwarding-protocol MatchRequest --route-name route  --origin-group myorigingroup --supported-protocols Https --link-to-default-domain Enabled 
参数 价值 说明
endpoint-name myendpoint 终结点的名称。
forwarding-protocol MatchRequest 将流量转发到后端时此规则使用的协议。
route-name route 路由的名称。
supported-protocols Https 此路由支持的协议列表。
link-to-default-domain Enabled 此路由是否链接到默认终结点域。

大约需要 15 分钟才能完成此步骤,因为全局传播此项更改需要一段时间。 在这段时间过后,Azure Front Door 将完全正常运行。

测试 Front Door

创建 Azure Front Door 标准版/高级版配置文件时,需要花费几分钟时间才能全局部署完配置。 完成后,即可访问你创建的前端主机。

若要获取 Front Door 终结点的主机名,请运行 az afd endpoint show。 它看起来应该类似于:abddefg.azurefd.net

az afd endpoint show --resource-group my-deid --profile-name myfrontdoorprofile --endpoint-name myendpoint --query "hostName"

在浏览器中,转到以上命令返回的终结点主机名:<endpoint>.azurefd.net/health。 你的请求应该会自动路由到美国东部的主要去识别化服务。

若要测试即时全局故障转移,请执行以下操作:

  1. 打开浏览器并转到终结点主机名:<endpoint>.azurefd.net/health

  2. 按照配置专用访问中的步骤,禁用美国东部去识别化服务的公用网络访问。

  3. 刷新浏览器。 你应会看到相同的信息页,因为流量现在定向到美国西部 2 的去识别化服务。

    提示

    可能需要刷新页面几次才能完成故障转移。

  4. 现在,请对美国西部 2 去识别化服务禁用公用网络访问。

  5. 刷新浏览器。 此时,应会看到一条错误消息。

  6. 为其中一个去识别化服务重新启用公用网络访问。 刷新浏览器,然后应会再次看到该应用。

现已验证你可以通过 Azure Front Door 访问服务,并且故障转移功能按预期运行。 如果已完成故障转移测试,请在其他服务上启用公用网络访问。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果你认为将来不再需要这些资源,请运行以下命令删除资源组:

az group delete --name my-deid

该命令可能需要几分钟时间才能完成。

启动恢复

若要检查服务的恢复状态,可以将请求发送到 <service-url>/health