使用 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 可靠服務」。 稍後,您會透過 Azure API 管理公開此服務的 HTTP 端點。

    記下應用程式名稱,例如 fabric:/myApplication/myService

  • API 管理執行個體 - 進階開發人員層和與 Service Fabric 叢集位於相同區域中的現有或新 API 管理執行個體。 如果您需要,請建立 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.eastus.cloudapp.azure.com:19080

  8. 在 [用戶端憑證] 中,選取您在上一節中新增至 API 管理執行個體 Service Fabric 叢集憑證。

  9. 在 [管理端點授權方法] 中,輸入 Service Fabric 叢集管理服務用於 TLS 通訊憑證的指紋或伺服器 X509 名稱。

  10. 啟用 [驗證憑證鏈結] 和 [驗證憑證名稱設定]

  11. 在 [授權認證] 中,視需要提供認證,以連線到 Service Fabric 中設定的後端服務。 在此案例中使用的範例應用程式,不需要授權認證。

  12. 選取 建立

    建立 Service Fabric 後端

使用後端

若要使用自訂後端,請使用 set-backend-service 原則加以參考。 此原則會將傳入 API 要求的預設後端服務基底 URL 轉換為指定的後端,在此案例中為 Service Fabric 後端。

set-backend-service 原則對於現有 API 很有用,可將傳入要求轉換成與 API 設定中所指定後端不同的後端。 為了示範目的,請建立測試 API,並將原則設定為將 API 要求導向至 Service Fabric 後端。

Create API

請依照手動新增 API 中的步驟來建立空白 API。

  • 在 API 設定中,將 Web 服務 URL 保留空白。

  • 新增 API URL 尾碼,例如網狀架構

    建立空白 API

將 GET 作業新增至 API

部署 Service Fabric 後端服務所示,部署在 Service Fabric 叢集上的範例 ASP.NET Core 服務支援 URL 路徑 /api/values 上的單一 HTTP GET 作業。

該路徑的預設回應是兩個字串的 JSON 陣列:

["value1", "value2"]

若要測試 API 管理與叢集的整合,請將對應的 GET 作業新增至路徑 /api/values 上的 API:

  1. 選取您在上一個步驟中建立的 API。

  2. 選取 [+ 新增作業]

  3. 在 [前端] 視窗中,輸入下列值,然後選取 [儲存]

    設定
    顯示名稱 測試後端
    URL GET
    URL /api/values

    將 GET 作業新增至 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. 選取 [儲存]。

    設定 set-backend-service 原則

注意

如果 Service Fabric 叢集中的一或多個節點關閉或移除,API 管理不會收到自動通知,並繼續傳送流量至這些節點。 若要處理這些情況,請設定類似下列的解決條件:sf-resolve-condition="@((int)context.Response.StatusCode != 200 || context.LastError?.Reason == "BackendConnectionFailure" || context.LastError?.Reason == "Timeout")"

測試後端 API

  1. 在 [測試] 索引標籤上,選取您在上一節中建立的 GET 作業。

  2. 請選取傳送

    正確設定時,HTTP 回應會顯示 HTTP 成功碼,並顯示從後端 Service Fabric 服務傳回的 JSON。

    測試 Service Fabric 後端