本文介绍了如何使用 Azure 门户将 Service Fabric 服务配置为自定义 API 后端。 出于演示目的,它展示了如何将基本的无状态 ASP.NET Core Reliable Service 设置为 Service Fabric 后端。
有关背景,请参阅 API 管理中的后端。
先决条件
将运行 Windows 的 Service Fabric 群集中的示例服务配置为自定义后端的先决条件:
Windows 开发环境 - 安装 Visual Studio 2019 和 Azure 开发工作负荷、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 后端
在 Azure 门户,导航到 API 管理实例。
在“API”下,选择“后端”>“+ 添加”。
输入后端名称和可选说明。
在“类型”中,选择“Service Fabric”。
在“运行时 URL”中,输入 API 管理要将请求转发到其中的 Service Fabric 后端服务的名称。 示例:
fabric:/myApplication/myService
。在“分区解析重试次数上限”中,输入一个介于 0 到 10 之间的数字。
输入 Service Fabric 群集的管理终结点。 此终结点是端口
19080
上的群集的 URL。在“客户端证书”中,选择你在上一部分添加到 API 管理实例的 Service Fabric 群集证书。
在“管理终结点授权方法”中,输入 Service Fabric 群集管理服务用于 TLS 通信的证书的指纹或服务器 X509 名称。
启用“验证证书链”和“验证证书名称”设置。
必要时在“授权凭据”中提供凭据,以便访问 Service Fabric 中配置的后端服务。 对于此方案中使用的示例应用,不需要使用授权凭据。
选择“创建”。
使用后端
若要使用自定义后端,请使用 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。
向 API 中添加 GET 操作
如部署 Service Fabric 后端服务所示,Service Fabric 群集上部署的示例 ASP.NET Core 服务支持 URL 路径 /api/values
上的单个 HTTP GET 操作。
该路径上的默认响应是包含两个字符串的一个 JSON 数组:
["value1", "value2"]
若要测试 API 管理与群集的集成,请在路径 /api/values
上向 API 添加相应的 GET 操作:
选择上一步中创建的 API。
选择“+ 添加操作”。
在“前端”窗口中,输入以下值,然后选择“保存”。
设置 “值” 显示名称 测试后端 URL GET URL /api/values
配置 set-backend-service
策略
将 set-backend-service
策略添加到测试 API。
在“设计”选项卡上的“入站处理”部分,选择代码编辑器 (</>) 图标。
将光标置于 <inbound> 元素内。
添加
set-service-backend
策略语句。在
backend-id
中,使用你的 Service Fabric 后端的名称进行替换。sf-resolve-condition
是重新解析服务位置并重新发送请求的条件。 重试次数已在配置后端时设置。 例如:<set-backend-service backend-id="mysfbackend" sf-resolve-condition="@(context.LastError?.Reason == "BackendConnectionFailure")"/>
选择“保存”。
注意
如果 Service Fabric 群集中的一个或多个节点出现故障或被删除,则 API 管理不会收到自动通知并继续向这些节点发送流量。 要处理这些情况,请配置以下类似的解析条件:sf-resolve-condition="@((int)context.Response.StatusCode != 200 || context.LastError?.Reason == "BackendConnectionFailure" || context.LastError?.Reason == "Timeout")"
测试后端 API
在“测试”选项卡上,选择你在前面部分创建的“GET”操作。
选择Send。
当配置正确时,HTTP 响应会显示一个 HTTP 成功代码,并显示从后端 Service Fabric 服务返回的 JSON。