Share via


Service Fabric 受控叢集上的專用主機簡介 (預覽)

Azure 專用主機是一個服務,可讓實體伺服器裝載一或多個虛擬機器 - 專用於一個 Azure 訂用帳戶。 伺服器專用於您的組織,且工作負載和容量不會與其他人共用。 專用主機是資料中心內所使用的相同實體伺服器,以資源的形式提供。 您可以在區域、可用性區域和容錯網域中佈建專用主機。 然後,您可以依照最能滿足您需要的設定,將 VM 直接放入已佈建的主機中。

針對具有 Service Fabric 受控叢集 (SFMC) 的節點使用 Azure 專用主機具有下列優點:

  • 實體伺服器層級的主機層級硬體隔離。 主機上不會放置任何其他 VM。 專用主機會部署在相同的數據中心,並共用與其他非隔離主機相同的網路和基礎記憶體基礎結構。
  • 控制由 Azure 平台起始的維護事件。 雖然大部分的維護事件對虛擬機沒有任何影響,但有一些敏感性工作負載,其中每個暫停每秒可能會造成影響。 使用專用主機,您可以選擇加入維護期間,以減少對服務的影響。

您可以根據您的工作負載需求,選擇專用主機的SKU虛擬機器。 如需詳細資訊,請參閱專用主機 虛擬機器

下列指南將逐步引導您瞭解如何使用 Azure Resource Manager 範本將 Azure 專用主機新增至 Service Fabric 受控叢集。

必要條件

本指南以受控叢集快速入門指南為基礎: 使用 Azure Resource Manager 部署 Service Fabric 受控叢集

在開始之前:

檢閱範本

本指南中使用的範本來自 Azure 範例 - Service Fabric 叢集範本

建立客戶端憑證

Service Fabric 受控叢集會使用用戶端憑證作為訪問控制的密鑰。 如果您已經有想要用於對叢集進行訪問控制的用戶端憑證,您可以略過此步驟。

如果您需要建立新的客戶端憑證,請遵循設定並從 Azure 金鑰保存庫 擷取憑證中的步驟。 請注意憑證指紋,因為下一個步驟中需要部署範本。

部署專用主機資源,並設定 Service Fabric 資源提供者的存取權

使用下列步驟,建立專用主機群組,並使用Service Fabric 資源提供者應用程式將角色指派新增至主機群組。 此角色指派可讓Service Fabric 資源提供者將主機群組內專用主機上的 VM 部署到受控叢集的虛擬機擴展集。 此指派是一次性動作。

  1. 取得 Service Fabric 資源提供者應用程式的 SFRP 提供者識別碼和服務主體。

    Login-AzAccount  
    Select-AzSubscription -SubscriptionId <SubId>  
    Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
    

    注意

    請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租使用者中,主體標識碼將會變更。

  2. 使用專用主機群組提供的 範例 ARM 部署範本,建立釘選到一個可用性區域和五個容錯網域的專用主機群組。 此範例可確保每個容錯網域至少有一個專用主機。

    New-AzResourceGroup -Name $ResourceGroupName -Location $location
    New-AzResourceGroupDeployment -Name "hostgroup-deployment" -ResourceGroupName $ResourceGroupName -TemplateFile ".\HostGroup-And-RoleAssignment.json" -TemplateParameterFile ".\HostGroup-And-RoleAssignment.parameters.json" -Debug -Verbose
    

    注意

    • 請確定您為專用主機選擇正確的 SKU 系列,以符合您要用於基礎節點類型的 VM SKU。 如需詳細資訊,請參閱專用主機 虛擬機器
    • 每個容錯網域都需要放置專用主機,Service Fabric 受控叢集需要五個容錯網域。 因此,每個專用主機群組中至少應該有五個專用主機。
  3. 一個步驟中使用的專用主機群組 的ARM部署範例也會將角色指派新增至具有參與者存取權的主機群組。 如需 Azure 角色的詳細資訊,請參閱 Azure 內建角色 - Azure RBAC。 此角色指派定義於範本的資源區段中,其中主體標識碼由第一個步驟和角色定義標識符決定。

       "variables": {  
            "authorizationApiVersion": "2018-01-01-preview",
            "contributorRoleId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
            "SFRPAadServicePrincipalId": " <Service Fabric Resource Provider ID> -"
          },
       "resources": [
       {  
                "apiVersion": "[variables('authorizationApiVersion')]",  
                "type": "Microsoft.Compute/Hostgroups/providers/roleAssignments",  
                "name": "[concat(concat(parameters('dhgNamePrefix'), '0'), '/Microsoft.Authorization/', parameters('hostGroupRoleAssignmentId'))]",  
                "dependsOn": [  
                    "[resourceId('Microsoft.Compute/hostGroups', concat(parameters('dhgNamePrefix'), '0'))]"  
                ],  
                "properties": {  
                    "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', variables('contributorRoleId'))]",  
                    "principalId": "[variables('SFRPAadServicePrincipalId')]"  
                }  
              }
              ]
    

    或者,您也可以使用從第一個步驟決定的主體標識碼和角色定義名稱,視需要新增角色指派為「參與者」。

    New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Contributor" -Scope "<Host Group Id>"  
    

部署 Service Fabric 受控叢集

建立已設定為參考專用主機群組 ResourceId 之節點類型的 Azure Service Fabric 受控叢集。 節點類型必須釘選到與主機群組相同的可用性區域。

  1. 專用主機的 Service Fabric 叢集範例範例範例範板中挑選範本,其中包含專用主機支援的規格。

  2. 為下列樣本參數提供您自己的值:

    • 訂用帳戶:選取與主機群組訂用帳戶相同的 Azure 訂用帳戶。
    • 資源群組:選取 [新建]。 輸入資源群組的唯一名稱,例如 myResourceGroup,然後選擇 [確定]。
    • 位置:選取與主機群組位置相同的位置。
    • 叢集名稱:輸入叢集的唯一名稱,例如 mysfcluster。
    • 管理員 使用者名稱:輸入系統管理員的名稱,以用於叢集中基礎 VM 上的 RDP。
    • 管理員 密碼:輸入系統管理員的密碼,以供叢集中基礎 VM 上的 RDP 使用。
    • 用戶端憑證指紋:提供您想要用來存取叢集的用戶端憑證指紋。 如果您沒有憑證,請遵循 設定並擷取憑證 來建立自我簽署憑證。
    • 節點類型名稱:輸入節點類型的唯一名稱,例如 nt1。
  3. 透過下列其中一種方法部署ARM範本:

    • ARM 入口網站自定義範本體驗: 自定義部署 - Microsoft Azure。 選取下圖以登入 Azure,並為範本參數提供您自己的值,然後部署範本。

      Button to deploy the Resource Manager template to Azure.

    • ARM PowerShell Cmdlet: New-AzResourceGroupDeployment (Az.Resources)。 將 ARM 範本和參數檔案的路徑儲存在變數中,然後部署範本。

      $templateFilePath = "<full path to azuredeploy.json>" 
      $parameterFilePath = "<full path to azuredeploy.parameters.json>"
      $pass = (ConvertTo-SecureString -AsPlainText -Force "<adminPassword>")
      
      New-AzResourceGroupDeployment ` 
         -Name $DeploymentName ` 
         -ResourceGroupName $resourceGroupName ` 
         -TemplateFile $templateFilePath ` 
         -TemplateParameterFile $parameterFilePath `
         -adminPassword $pass `
         -Debug -Verbose
      

    等候部署順利完成。

疑難排解

  1. 當 SFRP 無法存取主機群組時,會擲回下列錯誤。 檢閱上述角色指派步驟,並確定已正確完成指派。
         {  
                "code": "LinkedAuthorizationFailed",  
                "message": "The client '[<clientId>]' with object id '[<objectId>]' has permission to perform action 'Microsoft.Compute/virtualMachineScaleSets/write' on scope '/subscriptions/[<Subs-Id>]/resourcegroups/[<ResGrp-Id>]/providers/Microsoft.Compute/virtualMachineScaleSets/pnt'; however, it does not have permission to perform action 'write' on the linked scope(s) '/subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/HostGroupscu0' or the linked scope(s) are invalid."
             }
    
  2. 如果主機群組位於與叢集不同的訂用帳戶中,則會回報下列錯誤。 請確定兩者都位於相同的訂用帳戶中。
          {  
                "code": "BadRequest",  
                "message": "Entity subscriptionId in resource reference id /subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/[<HostGroup>] is invalid."  
              }
    
  3. 如果主機群組的配額不足,則會擲回下列錯誤:
          {  
                "code": "QuotaExceeded",  
                "message": "Operation could not be completed as it results in exceeding approved standardDSv3Family Cores quota.  
          Additional Required: 320, (Minimum) New Limit Required: 320. Submit a request for Quota increase [here](https://aka.ms/ProdportalCRP/#blade/Microsoft_Azure_Capacity/UsageAndQuota.ReactView/Parameters/). Please read more about quota limits [here](/azure/azure-supportability/per-vm-quota-requests)” 
              }
    

下一步