使用 Azure 门户在 API 管理中设置 Service Fabric 后端

本文介绍了如何使用 Azure 门户将 Service Fabric 服务配置为自定义 API 后端。 出于演示目的,它展示了如何将基本的无状态 ASP.NET Core Reliable Service 设置为 Service Fabric 后端。

有关背景,请参阅 API 管理中的后端

先决条件

将运行 Windows 的 Service Fabric 群集中的示例服务配置为自定义后端的先决条件:

  • Windows 开发环境 - 安装 Visual Studio 2019Azure 开发工作负荷、ASP.NET 和 Web 开发工作负荷以及 .NET Core 跨平台开发工作负荷。 然后设置 .NET 开发环境

  • Service Fabric 群集 - 请参阅教程:将运行 Windows 的 Service Fabric 群集部署到 Azure 虚拟网络。 你可以使用现有的 X.509 证书创建群集,也可以出于测试目的创建一个新的自签名证书。 群集在虚拟网络中创建。

  • 示例 Service Fabric 应用 - 创建一个 Web API 应用并将其部署到 Service Fabric 群集,如在 Azure 中将 API 管理与 Service Fabric 集成中所述。

    这些步骤使用默认的 Web API 项目模板创建一个基本的无状态 ASP.NET Core Reliable Service。 然后,你通过 Azure API 管理公开此服务的 HTTP 终结点。

    记下应用程序名称,例如 fabric:/myApplication/myService

  • API 管理实例 -“高级”或“开发人员”层中现有的或新的 API 管理实例,与 Service Fabric 群集位于同一区域。 如果需要一个,请创建 API 管理实例

  • 虚拟网络 - 将你的 API 管理实例添加到为 Service Fabric 群集创建的虚拟网络。 API 管理需要虚拟网络中的一个专用子网。

    有关为 API 管理实例启用虚拟网络连接的步骤,请参阅如何将 Azure API 管理与虚拟网络配合使用

创建后端 - 门户

将 Service Fabric 群集证书添加到 API 管理

Service Fabric 群集证书在与群集关联的 Azure 密钥保管库中存储和管理。 将此证书作为客户端证书添加到 API 管理实例。

有关将证书添加到 API 管理实例的步骤,请参阅如何在 Azure API 管理中使用客户端证书身份验证保护后端服务

注意

建议通过引用密钥保管库证书将证书添加到 API 管理。

添加 Service Fabric 后端

  1. Azure 门户,导航到 API 管理实例。
  2. 在“API”下,选择“后端”>“+ 添加”。
  3. 输入后端名称和可选说明。
  4. 在“类型”中,选择“Service Fabric”。
  5. 在“运行时 URL”中,输入 API 管理要将请求转发到其中的 Service Fabric 后端服务的名称。 示例:fabric:/myApplication/myService
  6. 在“分区解析重试次数上限”中,输入一个介于 0 到 10 之间的数字。
  7. 输入 Service Fabric 群集的管理终结点。 此终结点是端口 19080 上的群集的 URL,例如 https://mysfcluster.chinanorth.chinacloudapp.cn:19080
  8. 在“客户端证书”中,选择你在上一部分添加到 API 管理实例的 Service Fabric 群集证书。
  9. 在“管理终结点授权方法”中,输入 Service Fabric 群集管理服务用于 TLS 通信的证书的指纹或服务器 X509 名称。
  10. 启用“验证证书链”和“验证证书名称”设置。
  11. 必要时在“授权凭据”中提供凭据,以便访问 Service Fabric 中配置的后端服务。 对于此方案中使用的示例应用,不需要使用授权凭据。
  12. 选择创建

Create a service fabric backend

使用后端

若要使用自定义后端,请使用 set-backend-service 策略引用它。 此策略将传入 API 请求的默认后端服务基 URL 转换为指定的后端(在本例中为 Service Fabric 后端)。

set-backend-service 策略对于现有 API 可能很有用,可以将传入请求转换为与 API 设置中指定的后端不同的后端。 为了在本文中进行演示,请创建一个测试 API 并将策略设置为将 API 请求定向到 Service Fabric 后端。

创建 API

按照手动添加 API 中的步骤创建一个空白 API。

  • 在 API 设置中,将“Web 服务 URL”留空。

  • 添加“API URL 后缀”,例如 fabric。

    Create blank API

向 API 中添加 GET 操作

部署 Service Fabric 后端服务所示,Service Fabric 群集上部署的示例 ASP.NET Core 服务支持 URL 路径 /api/values 上的单个 HTTP GET 操作。

该路径上的默认响应是包含两个字符串的一个 JSON 数组:

["value1", "value2"]

若要测试 API 管理与群集的集成,请在路径 /api/values 上向 API 添加相应的 GET 操作:

  1. 选择上一步中创建的 API。

  2. 选择“+ 添加操作”。

  3. 在“前端”窗口中,输入以下值,然后选择“保存”。

    设置 “值”
    显示名称 测试后端
    URL GET
    URL /api/values

    Add GET operation to API

配置 set-backend-service 策略

set-backend-service 策略添加到测试 API。

  1. 在“设计”选项卡上的“入站处理”部分,选择代码编辑器 (</>) 图标。

  2. 将光标置于 <inbound> 元素内。

  3. 添加 set-service-backend 策略语句。

    • backend-id 中,使用你的 Service Fabric 后端的名称进行替换。

    • sf-resolve-condition 是重新解析服务位置并重新发送请求的条件。 重试次数已在配置后端时设置。 例如:

      <set-backend-service backend-id="mysfbackend" sf-resolve-condition="@(context.LastError?.Reason == "BackendConnectionFailure")"/>
      
  4. 选择“保存”。

    Configure set-backend-service policy

注意

如果 Service Fabric 群集中的一个或多个节点出现故障或被删除,则 API 管理不会收到自动通知并继续向这些节点发送流量。 要处理这些情况,请配置以下类似的解析条件:sf-resolve-condition="@((int)context.Response.StatusCode != 200 || context.LastError?.Reason == "BackendConnectionFailure" || context.LastError?.Reason == "Timeout")"

测试后端 API

  1. 在“测试”选项卡上,选择你在前面部分创建的“GET”操作。
  2. 选择Send

当配置正确时,HTTP 响应会显示一个 HTTP 成功代码,并显示从后端 Service Fabric 服务返回的 JSON。

Test Service Fabric backend

后续步骤