다음을 통해 공유


Service Fabric 관리형 클러스터의 전용 호스트 소개

Azure Dedicated Host는 하나의 Azure 구독 전용 물리적 서버(하나 이상의 가상 머신을 호스트)를 제공하는 서비스입니다. 서버는 조직 전용이며 워크로드 및 용량이 다른 사용자와 공유되지 않습니다. 전용 호스트는 리소스로 제공되는, 데이터 센터에서 사용되는 것과 동일한 물리적 서버입니다. 지역, 가용성 영역 및 장애 도메인 내에서 전용 호스트를 프로비저닝할 수 있습니다. 그런 다음 사용자의 요구에 가장 적합한 구성으로 프로비저닝된 호스트에 직접 VM을 배치할 수 있습니다.

SFMC(Service Fabric 관리형 클러스터)가 있는 노드에 Azure Dedicated Host를 사용하면 다음과 같은 이점이 있습니다.

  • 물리적 서버 수준에서 호스트 수준 하드웨어가 분리됩니다. 다른 VM은 호스트에 배치 되지 않습니다. 전용 호스트는 동일한 데이터 센터에 배포되며, 동일한 네트워크 및 기본 스토리지 인프라를 격리되지 않은 다른 호스트로 공유합니다.
  • Azure 플랫폼에서 시작된 유지 관리 이벤트 제어. 대부분의 유지 관리 이벤트는 가상 머신에 거의 또는 전혀 영향을 주지 않지만, 일시 중지의 각 초마다 영향을 줄 수 있는 몇 가지 중요한 워크로드가 있습니다. Dedicated Host를 사용하면 유지 관리 기간에 옵트인하여 서비스에 미치는 영향을 줄일 수 있습니다.

워크로드 요구 사항에 따라 Dedicated Host Virtual Machines에 대한 SKU를 선택할 수 있습니다. 자세한 내용은 Dedicated Host Virtual Machines를 참조하세요.

다음 가이드에서는 Azure Resource Manager 템플릿을 사용하여 Service Fabric 관리형 클러스터에 Azure Dedicated Host를 추가하는 방법을 단계별로 안내합니다.

필수 조건

이 가이드는 관리형 클러스터 빠른 시작 가이드인 Azure Resource Manager를 사용하여 Service Fabric 관리형 클러스터 배포를 기반으로 합니다.

시작하기 전에 다음을 수행하십시오.

  • Azure 구독이 없는 경우 체험 계정 만들기
  • 관리형 클러스터 ARM 템플릿을 검색합니다. 샘플 Resource Manager 템플릿은 GitHub의 Azure 샘플에서 사용할 수 있습니다. 이러한 템플릿은 클러스터 템플릿의 시작점으로 사용할 수 있습니다. 이 가이드에서는 두 가지 노드 유형 및 12개 노드가 포함된 표준 SKU 클러스터를 배포하는 방법을 보여 줍니다.
  • 사용자가 호스트 그룹에서 역할 할당을 수행하려면 사용자 액세스 관리자 또는 소유자와 같은 호스트 그룹에 대해 Microsoft.Authorization/roleAssignments/write 권한이 있어야 합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당 - Azure RBAC를 참조하세요.

템플릿 검토

이 가이드에 사용되는 템플릿은 Azure 샘플 - Service Fabric 클러스터 템플릿에서 가져왔습니다.

클라이언트 인증서 만들기

Service Fabric 관리형 클러스터는 클라이언트 인증서를 액세스 제어를 위한 키로 사용합니다. 클러스터에 대한 액세스 제어에 사용할 클라이언트 인증서가 이미 있는 경우 이 단계를 건너뛸 수 있습니다.

새 클라이언트 인증서를 만들어야 하는 경우 Azure Key Vault에서 인증서 설정 및 검색의 단계를 수행합니다. 다음 단계에서 템플릿을 배포하는 데 필요하므로 인증서 지문을 기록해 둡니다.

Dedicated Host 리소스 배포 및 Service Fabric 리소스 공급자에 대해 액세스 구성

Dedicated Host 그룹을 만들고 아래 단계에 따라 Service Fabric 리소스 공급자 애플리케이션을 사용하여 호스트 그룹에 역할 할당을 추가합니다. 이 역할 할당을 사용하면 Service Fabric 리소스 공급자가 호스트 그룹 내 Dedicated Host의 VM을 관리형 클러스터의 가상 머신 확장 집합에 배포할 수 있습니다. 이러한 할당은 일회성 작업입니다.

  1. Service Fabric 리소스 공급자 애플리케이션에 대해 SFRP 공급자 ID 및 서비스 주체를 가져옵니다.

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

    참고 항목

    올바른 구독에 있는지 확인합니다. 구독이 다른 테넌트에 있는 경우 보안 주체 ID가 변경됩니다.

  2. Dedicated Host 그룹에 대한 제공된 샘플 ARM 배포 템플릿을 사용하여 하나의 가용성 영역에 고정된 Dedicated Host 그룹과 5개의 장애 도메인을 만듭니다. 샘플은 장애 도메인당 Dedicated Host가 하나 이상 있는지 확인합니다.

    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
    

    참고 항목

    • 기본 노드 유형 VM SKU에 사용할 Dedicated Host와 일치하는 올바른 SKU 제품군을 선택해야 합니다. 자세한 내용은 Dedicated Host Virtual Machines를 참조하세요.
    • 각 장애 도메인에 Dedicated Host를 배치해야 하고 Service Fabric 관리형 클러스터에 5개의 장애 도메인이 필요합니다. 따라서 각 Dedicated Host 그룹에 5개 이상의 Dedicated Host가 있어야 합니다.
  3. 이전 단계에 사용된 Dedicated Host 그룹에 대한 샘플 ARM 배포 템플릿은 또한 기여자 액세스 권한이 있는 호스트 그룹에 역할 할당을 추가합니다. Azure 역할에 대한 자세한 내용은 Azure 기본 제공 역할 - Azure RBAC를 참조하세요. 이 역할 할당은 첫 번째 단계에서 확인된 주체 ID 및 역할 정의 ID를 사용하여 템플릿의 리소스 섹션에 정의되어 있습니다.

       "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')]"  
                }  
              }
              ]
    

    또는 첫 번째 단계에서 확인된 주체 ID와 가능한 경우 역할 정의 이름을 “기여자”로 사용하여 PowerShell을 통해 역할 할당을 추가할 수도 있습니다.

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

Service Fabric 관리형 클러스터 배포

Dedicated Host 그룹 ResourceId를 참조하도록 구성된 노드 유형을 사용하여 Azure Service Fabric 관리형 클러스터를 만듭니다. 노드 유형은 호스트 그룹과 동일한 가용성 영역에 고정되어야 합니다.

  1. Dedicated Host 지원 사양을 포함하는 Dedicated Host용 Service Fabric 클러스터 샘플 템플릿에서 템플릿을 선택합니다.

  2. 다음 템플릿 매개 변수에 대해서는 직접 값을 제공합니다.

    • 구독: 호스트 그룹 구독과 동일한 Azure 구독을 선택합니다.
    • 리소스 그룹: 새로 만들기를 선택합니다. 리소스 그룹에 대한 고유 이름(예: myResourceGroup)을 입력한 다음, 확인을 선택합니다.
    • 위치: 호스트 그룹 위치와 동일한 위치를 선택합니다.
    • 클러스터 이름: 클러스터에 대한 고유 이름(예: mysfcluster)을 입력합니다.
    • 관리 사용자 이름: 클러스터의 기본 VM에서 RDP에 사용할 관리자에 대한 이름을 입력합니다.
    • 관리자 암호: 클러스터의 기본 VM에서 RDP에 사용할 관리자에 대한 암호를 입력합니다.
    • 클라이언트 인증서 지문: 클러스터에 액세스하는 데 사용할 클라이언트 인증서의 지문을 제공합니다. 인증서가 없는 경우 인증서 설정 및 검색을 수행하여 자체 서명된 인증서를 만듭니다.
    • 노드 형식 이름: nt1과 같이 노드 형식에 대한 고유한 이름을 입력합니다.
  3. 아래 방법 중 하나를 통해 ARM 템플릿을 배포합니다.

    • ARM 포털 사용자 지정 템플릿 환경: 사용자 지정 배포 - Microsoft Azure. 다음 이미지를 선택하여 Azure에 로그인하고 템플릿 매개 변수에 고유한 값을 제공한 다음, 템플릿을 배포합니다.

      Resource Manager 템플릿을 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)” 
              }
    

다음 단계