管理 Service Fabric 叢集升級

Azure Service Fabric 叢集是您擁有的資源,但其部分是由 Microsoft 所管理。 以下是如何管理 Microsoft 更新 Azure Service Fabric 叢集的時機和方式。

如需叢集升級概念和流程的進一步背景,請參閱升級和更新 Azure Service Fabric叢集

設定升級模式

您可以將叢集設定為在 Microsoft 發行時接收自動 Service Fabric 升級,或您可以藉由設定叢集的升級模式,從目前支援的版本清單中手動選擇。 您可以透過 Azure 入口網站中的網狀 架構升級模式 控制項或叢集 upgradeMode 部署範本中的設定來完成此操作。

Azure 入口網站

使用 Azure 入口網站,您將會在建立新的 Service Fabric 叢集時,選擇自動升級或手動升級。

從 [Advanced] 選項的 Azure 入口網站中建立新叢集時,選擇自動或手動升級

您也可以從現有叢集資源的 [網狀 架構升級 ] 區段切換自動或手動升級。

在 Azure 入口網站中叢集資源的 [網狀架構升級] 區段中,選取 [自動] 或 [手動升級]

使用 Azure 入口網站手動升級

當您選取手動升級選項時,起始升級所需的一切都是從 [可用版本] 下拉式清單中選取,然後再 儲存。 從該處開始,叢集升級會立即開始。

叢集 健康狀態原則 (節點健康狀態的組合,以及叢集中執行之所有應用程式的健康狀態,在升級期間會遵守這些應用) 程式的健康情況。 如果不符合叢集健康情況原則,則會回復升級。

當您修正導致復原的問題之後,您必須遵循與之前相同的步驟,再次起始升級。

Resource Manager 範本

若要使用 Resource Manager 範本變更叢集升級模式,請針對 upgradeMode ServiceFabric/ cluster 資源定義的屬性,指定 [自動] 或 [手動]。 如果您選擇手動升級,也請將設定 clusterCodeVersion 為目前 支援的網狀架構版本

螢幕擷取畫面顯示範本,此範本會以純文字縮排以反映結構。' >clustercodeversion ' 和 ' upgradeMode ' 屬性已反白顯示。

成功部署範本之後,將會套用叢集升級模式的變更。 如果您的叢集處於手動模式,叢集升級將會自動啟動。

叢集 健康狀態原則 (節點健康狀態的組合,以及叢集中執行之所有應用程式的健康狀態,在升級期間會遵守這些應用) 程式的健康情況。 如果不符合叢集健康情況原則,則會回復升級。

當您修正導致復原的問題之後,您必須遵循與之前相同的步驟,再次起始升級。

自動升級的 Wave 部署

使用自動升級模式時,您可以選擇啟用叢集進行 wave 部署。 使用 wave 部署時,您可以建立管線來依序升級測試、階段和生產叢集,並依內建的「製作時間」分隔,以在更新生產叢集之前驗證即將推出的 Service Fabric 版本。

啟用 wave 部署

注意

Wave 部署需要 2020-12-01-preview (或更新版本) ServiceFabric/ 叢集資源的 API 版本。

若要啟用自動升級的 wave 部署,請先判斷要指派叢集的 wave:

  • Wave 0 (Wave0) :當新的 Service Fabric 組建發行時,叢集就會更新。 適用于測試/開發叢集。
  • Wave 1 (Wave1) :在發行新組建之後,會在一周內更新叢集 (七) 天。 適用于預先生產/預備叢集。
  • Wave 2 (Wave2) :在發行新組建之後,會在兩周內更新叢集 (14) 天。 適用于生產叢集。

然後,直接將 upgradeWave 屬性新增至您的叢集資源範本,其中包含上面所列的其中一個 wave 值。 確定您的叢集資源 API 版本是 2020-12-01-preview 或更新版本。

{
    "apiVersion": "2020-12-01-preview",
    "type": "Microsoft.ServiceFabric/clusters",
     ...
        "fabricSettings": [...],
        "managementEndpoint": ...,
        "nodeTypes": [...],
        "provisioningState": ...,
        "reliabilityLevel": ...,
        "upgradeMode": "Automatic",
        "upgradeWave": "Wave1",
       ...

當您部署更新的範本之後,您的叢集將會在指定的 wave 中註冊,以供下一次升級期間及之後。

如果叢集升級失敗,您可以使用連結來 註冊電子郵件通知 ,以取得進一步的協助。

註冊通知

您可以在叢集升級失敗時註冊通知。 系統會將電子郵件傳送給您指定的電子郵件地址 (es) ,其中包含有關升級失敗的進一步詳細資料,以及進一步說明的連結。

注意

在 wave 部署中不需要註冊,就能收到升級失敗的通知。

若要註冊通知,請將 notifications 區段新增至您的叢集資源範本,並指定一或多個電子郵件地址, (接收者) 接收通知:

    "apiVersion": "2020-12-01-preview",
    "type": "Microsoft.ServiceFabric/clusters",
     ...
        "upgradeMode": "Automatic",
        "upgradeWave": "Wave1",
        "notifications": [
        {
            "isEnabled": true,
            "notificationCategory": "WaveProgress",
            "notificationLevel": "Critical",
            "notificationTargets": [
            {
                "notificationChannel": "EmailUser",
                "receivers": [
                    "devops@contoso.com"
                ]
            }]
        }]

部署更新的範本之後,您將會註冊升級失敗通知。

手動升級的自訂原則

您可以指定手動叢集升級的自訂健康狀態原則。 每次您選取新的執行階段版本時,都會套用這些原則,以觸發系統啟動叢集的升級。 如果您不覆寫原則,則會使用預設值。

您可以選取 [升級原則] 的 [自訂] 選項,以指定自訂的健康原則,或在 Azure 入口網站中的叢集資源的 [網狀 架構升級] 區段下,檢查目前的設定。

在 Azure 入口網站中,于叢集資源的 [網狀架構升級] 區段中選取 [自訂] 升級原則選項,以便在升級期間設定自訂健康原則

檢查支援的叢集版本

您可以參考Service Fabric 版本,以取得支援的版本和作業系統的進一步詳細資料。

您也可以使用Azure REST API來列出所有可用的 Service Fabric 執行階段版本 (clusterVersions) 適用于指定的位置和您的訂用帳戶。

GET https://<endpoint>/subscriptions/{{subscriptionId}}/providers/Microsoft.ServiceFabric/locations/{{location}}/clusterVersions?api-version=2018-02-01

"value": [
  {
    "id": "subscriptions/########-####-####-####-############/providers/Microsoft.ServiceFabric/environments/Windows/clusterVersions/5.0.1427.9490",
    "name": "5.0.1427.9490",
    "type": "Microsoft.ServiceFabric/environments/clusterVersions",
    "properties": {
      "codeVersion": "5.0.1427.9490",
      "supportExpiryUtc": "2016-11-26T23:59:59.9999999",
      "environment": "Windows"
    }
  },
  {
    "id": "subscriptions/########-####-####-####-############/providers/Microsoft.ServiceFabric/environments/Windows/clusterVersions/4.0.1427.9490",
    "name": "5.1.1427.9490",
    "type": " Microsoft.ServiceFabric/environments/clusterVersions",
    "properties": {
      "codeVersion": "5.1.1427.9490",
      "supportExpiryUtc": "9999-12-31T23:59:59.9999999",
      "environment": "Windows"
    }
  },
  {
    "id": "subscriptions/########-####-####-####-############/providers/Microsoft.ServiceFabric/environments/Windows/clusterVersions/4.4.1427.9490",
    "name": "4.4.1427.9490",
    "type": " Microsoft.ServiceFabric/environments/clusterVersions",
    "properties": {
      "codeVersion": "4.4.1427.9490",
      "supportExpiryUtc": "9999-12-31T23:59:59.9999999",
      "environment": "Linux"
    }
  }
]
}

supportExpiryUtc當給定版本即將到期或已過期時,輸出中的會報告。 最新版本不會有有效的日期,而是值為 9999-12-31T23:59: 59.9999999,這只表示尚未設定到期日。

檢查支援的升級路徑

您可以參考Service Fabric 版本的檔,以取得支援的升級路徑和相關版本資訊。

使用支援的目標版本資訊,您可以使用下列 PowerShell 步驟來驗證支援的升級路徑。

  1. 登入 Azure

    Login-AzAccount
    
  2. 選取訂用帳戶

    Set-AzContext -SubscriptionId <your-subscription>
    
  3. 叫用 API

    $params = @{ "TargetVersion" = "<target version>"}
    Invoke-AzResourceAction -ResourceId -ResourceId <cluster resource id> -Parameters $params -Action listUpgradableVersions -Force
    

    範例:

    $params = @{ "TargetVersion" = "8.1.335.9590"}
    Invoke-AzResourceAction -ResourceId /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ServiceFabric/clusters/myCluster -Parameters $params -Action listUpgradableVersions -Force
    
    Output
    supportedPath
    -------------
    {8.1.329.9590, 8.1.335.9590}
    

後續步驟