가용성 영역에 Service Fabric 관리형 클러스터 배포

Azure의 가용성 영역은 데이터 센터 오류로부터 애플리케이션 및 데이터를 보호하는 고가용성 제품입니다. 가용성 영역은 Azure 지역 내에서 독립적인 전원, 냉각 및 네트워킹을 갖춘 고유한 물리적 위치입니다.

Service Fabric 관리형 클러스터는 영역 복원력을 제공하기 위해 여러 가용성 영역에 걸쳐 배포를 지원합니다. 이 구성은 단일 장애 지점으로부터 보호할 중요한 시스템 서비스 및 애플리케이션의 고가용성을 보장합니다. Azure 가용성 영역을 모든 지역에서 사용할 수 있는 것은 아닙니다. 자세한 내용은 Azure 가용성 영역 개요를 참조하세요.

참고 항목

가용성 영역 스패닝은 표준 SKU 클러스터에서만 사용할 수 있습니다.

사용 가능한 샘플 템플릿: Service Fabric 교차 가용성 영역 템플릿

영역 복원력이 있는 Azure Service Fabric 관리형 클러스터에 대한 토폴로지

참고 항목

가용성 영역에서 주 노드 유형을 확장하는 이점은 실제로 두 영역이 아닌 세 개의 영역에 대해서만 볼 수 있습니다.

AZ(가용성 영역)에 분산된 Service Fabric 클러스터는 클러스터 상태의 고가용성을 보장합니다.

관리형 클러스터에 권장되는 토폴로지에는 다음 리소스가 필요합니다.

  • 클러스터 SKU는 표준이어야 합니다.
  • 주 노드 유형에는 최상의 복원력을 위해 9개(각 AZ에서 3개) 이상의 노드가 있어야 하지만 최소 6개(각 AZ에서 2개) 노드를 지원합니다.
  • 보조 노드 형식에는 최상의 복원력을 위해 6개 이상의 노드가 있어야 하지만 최소 3개의 노드를 지원합니다.

참고 항목

3개의 가용성 영역 배포만 지원됩니다.

참고 항목

비영역 범위에서 영역 범위 클러스터로 관리형 클러스터에 있는 가상 머신 확장 집합의 현재 위치 변경을 수행할 수 없습니다.

Azure Service Fabric 가용성 영역 아키텍처 Azure Service Fabric 가용성 영역 아키텍처를 보여주는 다이어그램

영역에 걸쳐 있는 가상 머신 확장 집합의 FD/UD 형식을 설명하는 샘플 노드 목록

영역에 걸쳐 있는 가상 머신 확장 집합의 FD/UD 형식을 설명하는 샘플 노드 목록.

영역 간 서비스 복제본 배포: 서비스가 영역에 걸쳐 있는 노드 유형에 배포되면 복제본이 별도의 영역에 위치하도록 배치됩니다. 이러한 구분은 이러한 각 노드 유형에 있는 노드에서 오류와 마찬가지로 보장됩니다기본 영역 정보(예: FD = fd:/zone1/1 등)로 구성됩니다. 예를 들어 5개의 복제본(replica) 또는 서비스 인스턴스의 경우 배포는 2-2-1이고 런타임은 AZ 간에 동일한 배포를 보장하려고 합니다.

사용자 서비스 복제본 구성: 교차 가용성 영역 노드 유형에 배포된 상태 저장 사용자 서비스는 복제본 수는 대상 = 9, 최소 = 5 구성으로 구성되어야 합니다. 이 구성은 6개의 복제본이 다른 두 영역에서 계속 작동하므로 한 영역이 중단된 경우에도 서비스가 작동하도록 하는 데 도움이 됩니다. 이러한 시나리오에서는 애플리케이션 업그레이드도 진행됩니다.

영역 중단 시나리오: 영역이 중단되면 해당 영역의 모든 노드가 중단된 것으로 나타납니다. 이러한 노드의 서비스 복제본도 중단됩니다. 다른 영역에 복제본이 있으므로 서비스는 작동 중인 영역으로 장애 조치(failover)되는 주 복제본을 사용하여 계속 응답합니다. 대상 복제본(replica) 수가 충족되지 않고 VM(가상 머신) 수가 정의된 최소 대상 복제본(replica) 크기보다 많기 때문에 서비스가 경고 상태로 표시됩니다. 따라서 Service Fabric 부하 분산 장치는 구성된 대상 복제본 수와 일치하도록 작업 영역에 복제본을 가져옵니다. 이 시점에서 서비스는 정상으로 표시됩니다. 중단된 영역이 복구되면 부하 분산 장치는 다시 모든 서비스 복제본을 모든 영역에 균등하게 분산시킵니다.

네트워킹 구성

자세한 내용은 Service Fabric 관리형 클러스터에 대한 네트워크 설정 구성을 참조 하세요.

영역 복원력이 있는 Azure Service Fabric 관리형 클러스터 사용

영역 복원력이 있는 Azure Service Fabric 관리형 클러스터를 사용하도록 설정하려면 클러스터가 영역 복원력이 있는지 여부를 지정하는 다음 ZonalResiliency 속성을 포함해야 합니다.

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters",
  "properties": {
  ...
  "zonalResiliency": "true",
  ...
  }
}

기존의 비영역 복원력 클러스터를 영역 복원력(미리 보기)으로 마이그레이션(미리 보기)

이제 가용성 영역에 걸쳐 있지 않은 기존 Service Fabric 관리형 클러스터를 현재 위치에서 마이그레이션하여 가용성 영역에 걸쳐 있을 수 있습니다. 지원되는 시나리오에는 3개의 가용성 영역이 있는 지역에서 만들어진 클러스터와 배포 후 3개의 가용성 영역을 사용할 수 있는 지역의 클러스터가 포함됩니다.

요구 사항:

참고 항목

영역 복원 구성으로 마이그레이션하면 부하 분산 장치를 통해 외부 연결이 잠시 끊어질 수 있지만 클러스터 상태에는 영향을 미치지 않습니다. 이는 네트워킹이 영역 장애에 복원력을 갖도록 하기 위해 새 공용 IP를 만들어야 할 때 발생합니다. 이에 따라 마이그레이션 계획을 수립합니다.

  1. 먼저 새 IP가 필요한지와 영역 복원력이 되기 위해 마이그레이션해야 하는 리소스를 결정하는 것으로 시작합니다. 관리되는 클러스터의 리소스에 대한 현재 가용성 영역 복원 상태를 얻으려면 다음 API 호출을 사용합니다.

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getazresiliencystatus?api-version=2022-02-01-preview
    

    또는 다음과 같이 Az 모듈을 사용할 수 있습니다.

    Select-AzSubscription -SubscriptionId {subscriptionId}
    Invoke-AzResourceAction -ResourceId /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName} -Action getazresiliencystatus -ApiVersion 2022-02-01-preview
    

    명령은 다음과 유사한 응답을 제공해야 합니다.

    {
    "baseResourceStatus" :[
      {
      "resourceName": "sfmccluster1"
      "resourceType": "Microsoft.Storage/storageAccounts"
      "isZoneResilient": false
      },
      {
      "resourceName": "PublicIP-sfmccluster1"
      "resourceType": "Microsoft.Network/publicIPAddresses"
      "isZoneResilient": false
      },
      {
      "resourceName": "primary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": false
      }
    ],
    "isClusterZoneResilient": false
    }
    

    공용 IP 리소스가 영역 복원력이 없는 경우 클러스터를 마이그레이션하면 외부 연결이 잠시 손실됩니다. 이 연결 손실은 새 공용 IP를 설정하고 클러스터 FQDN(정규화된 do기본 이름)을 새 IP로 업데이트하기 때문입니다. 공용 IP 리소스가 영역 복원력이 있는 경우 마이그레이션은 공용 IP 리소스나 FQDN을 수정하지 않으며 외부 연결에 영향을 주지 않습니다.

  2. 고객 시작 변환을 사용하여 LRS(로컬 중복 스토리지)에서 ZRS(영역 중복 스토리지)로 관리 클러스터용으로 만든 기본 스토리지 계정의 변환을 시작합니다. 마이그레이션해야 하는 스토리지 계정의 리소스 그룹은 관리형 클러스터 리소스와 동일한 구독에서 “SFC_ClusterId”(예: SFC_9240df2f-71ab-4733-a641-53a8464d992d) 형식입니다.

  3. 기존 노드 형식에 영역 속성 추가

    이 단계에서는 노드 유형과 연결된 관리되는 Virtual Machine Scale Set을 영역 복원력으로 구성하여 추가된 모든 새 VM이 가용성 영역(영역 VM)에 배포되도록 합니다. 지정된 노드 형식이 주 노드인 경우 리소스 공급자는 필요한 경우 클러스터 FQDN DNS 업데이트와 함께 공용 IP의 마이그레이션을 수행하여 영역 복원력이 향상됩니다. API를 getazresiliencystatus 사용하여 이 단계의 의미를 이해합니다.

  • apiVersion 2022-02-01-preview 이상을 사용합니다.

  • zones 기존 노드 형식에 ["1", "2", "3"] 매개 변수 집합을 추가합니다.

    {
       "apiVersion": "2024-02-01-preview",
       "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
       "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
       "location": "[resourcegroup().location]",
       "dependsOn": [
         "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
       ],
       "properties": {
         ...
         "isPrimary": true,
         "zones": ["1", "2", "3"]
         ...
       }
    },
    {
       "apiVersion": "2024-02-01-preview",
       "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
       "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeNameSecondary'))]",
       "location": "[resourcegroup().location]",
       "dependsOn": [
         "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
       ],
       "properties": {
         ...
         "isPrimary": false,
         "zones": ["1", "2", "3"]
         ...
       }
    }
    
  1. 노드 형식을 조정하여 영역 노드 추가 및 지역 노드 제거

    이 단계에서는 Virtual Machine Scale Sets가 영역 복원력으로 표시됩니다. 따라서 스케일 업할 때 새로 추가된 노드는 영역이 되고 축소할 때 지역 노드가 제거됩니다. 이 방법은 노드 형식에서 속성을 조정하여 vmInstanceCount 용량 요구 사항에 맞는 순서로 크기를 조정할 수 있는 유연성을 제공합니다.

    예를 들어 초기 vmInstanceCount가 6(6개 지역 노드를 나타낸)으로 설정된 경우 다음 두 가지 배포를 수행할 수 있습니다.

    • 첫 번째 배포: vmInstanceCount를 12로 늘려 6개의 영역 노드를 추가합니다.
    • 두 번째 배포: vmInstanceCount를 6으로 줄이면 모든 지역 노드가 제거됩니다.

    프로세스 전체에서 아래 그림과 같이 API를 getazresiliencystatus 검사 진행률 상태 검색할 수 있습니다. 각 노드 형식에 최소 6개의 영역 노드와 0개의 지역 노드가 있으면 프로세스가 완료된 것으로 간주됩니다.

    {
    "baseResourceStatus" :[
      {
      "resourceName": "sfmccluster1"
      "resourceType": "Microsoft.Storage/storageAccounts"
      "isZoneResilient": true
      },
      {
      "resourceName": "PublicIP-sfmccluster1"
      "resourceType": "Microsoft.Network/publicIPAddresses"
      "isZoneResilient": true
      },
      {
      "resourceName": "ntPrimary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": false
      "details": "Status: InProgress, ZonalNodes: 6, RegionalNodes: 6"
      },
      {
      "resourceName": "ntSecondary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": true
      "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
      }
    ],
    "isClusterZoneResilient": false
    }
    

    참고 항목

    노드를 추가하거나 제거할 때마다 서비스 패브릭 클러스터 업그레이드가 시작되므로 주 노드 유형에 대한 크기 조정 프로세스에는 추가 시간이 필요합니다.

  2. 영역 오류에 대한 복원력이 있는 클러스터 표시

    이 단계를 수행하면 노드 유형의 모든 이후 배포가 가용성 영역에 걸쳐 있어서 클러스터가 AZ 오류에 대한 내결함성을 유지하므로 향후 배포에 도움이 됩니다. 클러스터 ARM 템플릿에서 zonalResiliency: true를 설정하고 배포를 수행하여 클러스터를 복원력이 있는 영역으로 표시하고 모든 새 노드 유형 배포가 가용성 영역에 걸쳐 있는지 확인합니다. 이 업데이트는 모든 노드 형식에 6개 이상의 영역 노드와 0개의 지역 노드가 있는 경우에만 허용됩니다.

    {
      "apiVersion": "2022-02-01-preview",
      "type": "Microsoft.ServiceFabric/managedclusters",
      "zonalResiliency": "true"
    }
    

    완료되면 포털의 개요 -> 속성 아래에 Zonal resiliency True와 같은 업데이트된 상태가 표시될 수도 있습니다.

  3. 모든 리소스가 복원력이 있는 영역인지 유효성 검사

    관리되는 클러스터의 리소스에 대한 가용성 영역 복원력 상태의 유효성을 검사하려면 다음 GET API 호출을 사용합니다.

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getazresiliencystatus?api-version=2022-02-01-preview
    

    이 API 호출은 다음과 유사한 응답을 제공해야 합니다.

    {
     "baseResourceStatus" :[
       {
       "resourceName": "sfmccluster1"
       "resourceType": "Microsoft.Storage/storageAccounts"
       "isZoneResilient": true
       },
       {
       "resourceName": "PublicIP-sfmccluster1"
       "resourceType": "Microsoft.Network/publicIPAddresses"
       "isZoneResilient": true
       },
       {
         "resourceName": "ntPrimary"
         "resourceType": "Microsoft.Compute/virutalmachinescalesets"
         "isZoneResilient": true
         "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
       },
       {
         "resourceName": "ntSecondary"
         "resourceType": "Microsoft.Compute/virutalmachinescalesets"
         "isZoneResilient": true
         "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
       }
     ],
     "isClusterZoneResilient": true
    }
    

    문제가 발생하면 지원 서비스에 문의하세요.

Service Fabric 관리형 클러스터에서 FastZonalUpdate 사용(미리 보기)

Service Fabric 관리형 클러스터는 가용성 영역당 최대 업그레이드 도메인 수를 줄여 더 빠른 클러스터 및 애플리케이션 업그레이드를 지원합니다. 현재 기본 구성은 여러 AZ nodetype에서 최대 15개의 업그레이드 do기본s(ID)를 가질 수 있습니다. 이렇게 많은 수의 UD로 인해 업그레이드 속도가 느려졌습니다. 새 구성은 최대 UD를 줄여 더 빠른 업데이트로 업그레이드의 안전을 그대로 유지합니다.

zonalUpdateMode 속성을 "fast"로 설정한 다음 노드를 추가한 다음 각 노드 유형에 노드를 제거하는 등의 노드 유형 특성을 수정하여 ARM 템플릿을 통해 업데이트를 수행해야 합니다(필요한 단계 2 및 3 참조). Service Fabric 관리형 클러스터 리소스 apiVersion은 2022-10-01-preview 이상이어야 합니다.

  1. 새 속성 zonalUpdateMode를 사용하여 ARM 템플릿을 수정합니다.
   "resources": [
        {
            "type": "Microsoft.ServiceFabric/managedClusters",
            "apiVersion": "2022-10-01-preview",
            '''
            "properties": {
                '''
                "zonalResiliency": true,
                "zonalUpdateMode": "fast",
                ...
            }
        }]
  1. az sf cluster node add PowerShell 명령을 사용하여 클러스터에 노드를 추가합니다.

  2. az sf cluster node remove PowerShell 명령을 사용하여 클러스터에서 노드를 제거합니다.