Service Fabric 受控叢集上的專用主機簡介
Azure 專用主機是一個服務,可讓實體伺服器裝載一或多個虛擬機器 - 專用於一個 Azure 訂用帳戶。 伺服器專用於您的組織,而且工作負載和容量不會與其他人共用。 專用主機是資料中心內所使用的相同實體伺服器,以資源的形式提供。 您可以在區域、可用性區域和容錯網域中佈建專用主機。 然後,您可以依照最能滿足您需要的設定,將 VM 直接放入已佈建的主機中。
使用 Azure 專用主機搭配 Service Fabric 受控叢集 (SFMC) 具有下列優點:
- 實體伺服器層級的主機層級硬體隔離。 主機上不會放置任何其他 VM。 專用主機會部署在相同的資料中心,並共用與其他非隔離主機相同的網路和基礎儲存體基礎結構。
- 控制由 Azure 平台起始的維護事件。 雖然大多數的維護事件對虛擬機器沒有任何影響,但有一些敏感性工作負載,其中每秒鐘的暫停都會造成影響。 使用專用主機,您可以加入維護期間,以減少對服務的影響。
您可以根據您的工作負載需求,選擇專用主機的 SKU 虛擬機器。 如需詳細資訊,請參閱專用主機虛擬機器。
下列指南將逐步引導您瞭解如何使用 Azure Resource Manager 範本,將 Azure 專用主機新增至 Service Fabric 受控叢集。
必要條件
本指南是以受控叢集快速入門手冊為基礎:使用 Azure Resource Manager 部署 Service Fabric 受控叢集
在開始之前:
- 如果您沒有 Azure 訂用帳戶,請建立免費帳戶
- 擷取受控叢集 ARM 範本。 您可以在 GitHub 上的 Azure 範例中取得 Resource Manager 範本範例。 這些範本可以用作叢集範本的起點。 本指南說明如何部署具有兩個節點類型和 12 個節點的標準 SKU 叢集。
- 使用者必須擁有主機群組的 Microsoft.Authorization/roleAssignments/write 權限,例如使用者存取管理員或擁有者,才能在主機群組中執行角色指派。 如需詳細資訊,請參閱使用 Azure 入口網站指派 Azure 角色 - Azure RBAC。
檢閱範本
本快速入門中使用的範本是來自 Azure 範本 - Service Fabric 叢集範本。
建立用戶端憑證
Service Fabric 受控叢集會使用用戶端憑證做為存取控制的金鑰。 如果您已有想要用於叢集存取控制的用戶端憑證,您可以跳過此步驟。
如果您需要建立新的用戶端憑證,請遵循從 Azure Key Vault 設定及擷取憑證中的步驟進行。 記下憑證指紋,因為在下一個步驟中部署範本時,將會需要這項功能。
部署專用主機資源,並設定 Service Fabric 資源提供者的存取權
使用下列步驟建立專用主機群組,並使用 Service Fabric 資源提供者應用程式將角色指派新增至主機群組。 此角色指派可讓 Service Fabric 資源提供者將主機群組內專用主機上的 VM 部署到受控叢集虛擬機器擴展集。 此指派屬於一次性動作。
取得 Service Fabric 資源提供者應用程式的 SFRP 提供者識別碼和服務主體。
Login-AzAccount Select-AzSubscription -SubscriptionId <SubId> Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
注意
請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租用戶,主體識別碼將會變更。
使用專用主機群組提供的範例 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 的 SKU 系列。 如需詳細資訊,請參閱專用主機虛擬機器。
- 每個容錯網域都需要放置專用主機,Service Fabric 受控叢集需要五個容錯網域。 因此,每個專用主機群組中應該至少有五個專用主機。
上一個步驟中專用主機群組的 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 受控叢集
建立 Azure Service Fabric 受控叢集,其節點類型設定為參考專用主機群組 ResourceId。 節點類型必須與主機群組釘選到相同的可用性區域。
從專用主機的 Service Fabric 叢集範例範本中挑選範本,其中包括專用主機支援的規格。
請針對下列範本參數提供您自己的值︰
- 訂用帳戶:選取與主機群組訂用帳戶相同的 Azure 訂用帳戶。
- 資源群組:選取 [建立新的]。 輸入資源群組的唯一名稱 (例如 myResourceGroup),然後選擇 [確定]。
- 位置:選取與主機群組位置相同的位置。
- 叢集名稱:輸入您叢集的唯一名稱,例如 mysfcluster。
- 管理使用者名稱:輸入管理員的名稱,以用於叢集中基礎 VM 上的 RDP。
- 管理員密碼:輸入管理員的密碼,以用於叢集中基礎 VM 上的 RDP。
- 用戶端憑證指紋:提供您想要用來存取叢集的用戶端憑證指紋。 如果您沒有憑證,請遵循設定並擷取憑證來建立自我簽署憑證。
- 節點類型名稱:為節點類型輸入唯一的名稱,例如 nt1。
透過下列其中一種方法部署 ARM 範本:
ARM 入口網站自訂範本體驗:自訂部署 - Microsoft Azure。 選取下圖以登入 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
等待部署順利完成。
疑難排解
- 當 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." }
- 如果主機群組位於與叢集不同的訂用帳戶中,則會報告下列錯誤。 請確定兩者都位於相同的訂用帳戶中。
{ "code": "BadRequest", "message": "Entity subscriptionId in resource reference id /subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/[<HostGroup>] is invalid." }
- 如果主機群組的配額不足,則會擲回下列錯誤:
{ "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)” }