如何将 Azure API 管理服务实例部署到多个 Azure 区域

Azure API 管理多区域部署,该部署可使 API 发布者在任意数量的受支持 Azure 区域中分配单个 Azure API 管理服务。 多区域功能有助于减少地理上分散的 API 使用者所感知的请求延迟,并且还可改善其中一个区域处于离线状态时的服务可用性。

新的 Azure API 管理服务最初只在一个 Azure 区域(主要区域)中包含一个单元。 可向主要区域或次要区域添加更多单元。 API 管理网关组件将部署到每个选定的主要区域和次要区域。 传入的 API 请求将自动定向到最近的区域。 如果某个区域脱机,API 请求将自动路由到与发生故障的区域最靠近的下一个网关。

备注

只会将 API 管理的网关组件部署到所有区域。 服务管理组件和开发人员门户只会托管在主要区域。 因此,如果主要区域发生服务中断,在主要区域恢复联机之前,访问开发人员门户和更改配置(例如添加 API、应用策略)的功能将受到影响。 当主要区域脱机时,可用的辅助区域将继续使用可用的最新配置为 API 流量提供服务。

可用性

重要

此功能仅在 API 管理的“高级” 层中可用。

必备知识

  • 如果尚未创建 API 管理服务实例,请参阅创建 API 管理服务实例。 选择高级服务层级。
  • 如果 API 管理实例部署在虚拟网络中,请确保在计划添加的位置设置虚拟网络、子网和公共 IP 地址。

将 API 管理服务部署到其他位置

  1. 在 Azure 门户中导航到 API 管理服务,然后在菜单中选择“位置”。
  2. 选择顶部栏中的“+ 添加”。
  3. 从下拉列表中选择位置。
  4. 选择该位置中的缩放单元数。
  5. 如果 API 管理实例部署在虚拟网络中,则在位置中配置虚拟网络设置。 选择位置中可用的现有虚拟网络、子网和公共 IP 地址。
  6. 请选择“添加”以确认。
  7. 重复此过程,直到配置所有位置。
  8. 选择顶部栏中的“保存”以开始部署过程。

删除 API 管理服务位置

  1. 在 Azure 门户中,导航到 API 管理服务并单击菜单中的“位置”条目。
  2. 若要删除位置,请使用表右端的“...”按钮打开上下文菜单。 选择“删除”选项。
  3. 确认删除,并单击“保存”应用所做的更改。

将 API 调用路由到区域后端服务

Azure API 管理只有一个后端服务 URL。 即使不同的区域中存在 Azure API 管理实例,API 网关也仍会将请求转发到只在一个区域中部署的同一后端服务。 在这种情况下,只有特定于该请求的区域中 Azure API 管理缓存的响应才能提升性能,但访问全球范围的后端时仍可能导致较高的延迟。

若要充分利用系统的地理分布性,应在 Azure API 管理实例所在的同一区域中部署后端服务。 然后,可以使用策略和 @(context.Deployment.Region) 属性将流量路由到后端的本地实例。

  1. 导航到 Azure API 管理实例,然后在左侧菜单中单击“API”。

  2. 选择所需的 API。

  3. 在“入站处理”中的箭头式下拉列表内单击“代码编辑器”。

    API 代码编辑器

  4. 结合使用 set-backendchoose 条件策略,在文件的 <inbound> </inbound> 节中构建适当的路由策略。

    例如,以下 XML 文件适用于“中国北部”和“中国东部”区域:

    <policies>
        <inbound>
            <base />
            <choose>
                <when condition="@("China North".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-us.com/" />
                </when>
                <when condition="@("China East".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-asia.com/" />
                </when>
                <otherwise>
                    <set-backend-service base-url="http://contoso-other.com/" />
                </otherwise>
            </choose>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

提示

还可以使用 Azure 流量管理器来配置后端服务的前端,将 API 调用定向到流量管理器中,然后让流量管理器自动解析路由。

使用 API 管理区域网关的自定义路由

API 管理根据最低延迟将请求路由到区域网关。 尽管无法在 API 管理中替代此设置,但可以结合自定义路由规则使用自己的流量管理器。

  1. 创建自己的 Azure 流量管理器
  2. 如果使用自定义域,请将它与流量管理器配合使用,而不要与 API 管理服务配合使用。
  3. 在流量管理器中配置 API 管理区域终结点。 区域终结点遵循 https://<service-name>-<region>-01.regional.azure-api.cn URL 模式,例如 https://contoso-chinanorth2-01.regional.azure-api.cn
  4. 在流量管理器中配置 API 管理区域状态终结点。 区域状态终结点遵循 https://<service-name>-<region>-01.regional.azure-api.cn/status-0123456789abcdef URL 模式,例如 https://contoso-chinaeast-01.regional.azure-api.cn/status-0123456789abcdef
  5. 指定流量管理器的路由方法