Udostępnij za pośrednictwem


Wdrażanie klastra zarządzanego usługi Service Fabric w różnych strefach dostępności

Strefy dostępności na platformie Azure to oferta wysokiej dostępności, która chroni aplikacje i dane przed awariami centrum danych. Strefa dostępności to unikatowa lokalizacja fizyczna wyposażona w niezależne zasilanie, chłodzenie i sieć w regionie świadczenia usługi Azure.

Klaster zarządzany usługi Service Fabric obsługuje wdrożenia obejmujące wiele Strefy dostępności w celu zapewnienia odporności strefy. Ta konfiguracja zapewnia wysoką dostępność krytycznych usług systemowych i aplikacji w celu ochrony przed awarią pojedynczego punktu. Usługa Azure Strefy dostępności jest dostępna tylko w wybranych regionach. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Strefy dostępności.

Uwaga

Spanning strefy dostępności jest dostępny tylko w przypadku klastrów jednostki SKU w warstwie Standardowa.

Dostępne są przykładowe szablony: szablon między strefami dostępności usługi Service Fabric

Topologia odpornych na strefy klastrów zarządzanych usługi Azure Service Fabric

Uwaga

Korzyści wynikające z połączenia typu węzła podstawowego w strefach dostępności są naprawdę widoczne tylko dla trzech stref, a nie tylko dwóch.

Klaster usługi Service Fabric rozproszony w Strefy dostępności (AZ) zapewnia wysoką dostępność stanu klastra.

Zalecana topologia klastra zarządzanego wymaga następujących zasobów:

  • Jednostka SKU klastra musi być w warstwie Standardowa
  • Typ węzła podstawowego powinien mieć co najmniej dziewięć węzłów (3 w każdym az), aby zapewnić najlepszą odporność, ale obsługuje minimalną liczbę sześciu (2 w każdym az).
  • Typy węzłów pomocniczych powinny mieć co najmniej sześć węzłów w celu uzyskania najlepszej odporności, ale obsługuje minimalną liczbę trzech.

Uwaga

Obsługiwane są tylko 3 wdrożenia strefy dostępności.

Uwaga

Nie można wykonać zmiany w miejscu zestawów skalowania maszyn wirtualnych w klastrze zarządzanym z łączenia poza strefą do klastra obejmującego strefy.

Diagram przedstawiający architekturę strefy dostępności usługi Azure Service Fabric Architektura strefy dostępności usługi Azure Service Fabric

Przykładowa lista węzłów przedstawiająca formaty FD/UD w zestawie skalowania maszyn wirtualnych obejmujących strefy

Przykładowa lista węzłów przedstawiająca formaty FD/UD w zestawie skalowania maszyn wirtualnych obejmujących strefy.

Dystrybucja replik usługi między strefami: po wdrożeniu usługi w typach węzłów, które obejmują strefy, repliki są umieszczane w celu zapewnienia, że znajdują się w oddzielnych strefach. To rozdzielenie jest zapewniane, ponieważ domena błędów w węzłach znajdujących się w każdym z tych typów węzłów jest skonfigurowana przy użyciu informacji o strefie (tj. FD = fd:/zone1/1 itp.). Na przykład: w przypadku pięciu replik lub wystąpień usługi dystrybucja jest 2-2-1, a środowisko uruchomieniowe próbuje zapewnić równy rozkład między strefami ZZ.

Konfiguracja repliki usługi użytkownika: stanowe usługi użytkownika wdrożone w typach węzłów strefy dostępności między dostępnościami powinny być skonfigurowane z tą konfiguracją: liczba replik z wartością docelową = 9, min = 5. Ta konfiguracja pomaga usłudze działać nawet wtedy, gdy jedna strefa ulegnie awarii, ponieważ sześć replik będzie nadal działać w pozostałych dwóch strefach. Uaktualnienie aplikacji w takim scenariuszu również przejdzie.

Scenariusz w dół strefy: gdy strefa ulegnie awarii, wszystkie węzły w tej strefie są wyświetlane jako wyłączone. Repliki usług w tych węzłach również nie będą działać. Ponieważ istnieją repliki w innych strefach, usługa nadal reaguje z replikami podstawowymi w trybie failover do stref, które działają. Usługi będą wyświetlane w stanie ostrzeżenia, ponieważ liczba replik docelowych nie jest spełniona, a liczba maszyn wirtualnych jest nadal większa niż zdefiniowany minimalny rozmiar repliki docelowej. W związku z tym moduł równoważenia obciążenia usługi Service Fabric powoduje wyświetlenie replik w strefach roboczych w celu dopasowania do skonfigurowanej liczby replik docelowych. W tym momencie usługi powinny być w dobrej kondycji. Gdy strefa, która nie działa, ponownie rozłoży wszystkie repliki usługi równomiernie we wszystkich strefach.

Konfiguracja sieci

Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień sieci dla klastrów zarządzanych usługi Service Fabric.

Włączanie odpornego na awarię strefy klastra zarządzanego usługi Azure Service Fabric

Aby włączyć odporny na awarię strefy klaster zarządzany usługi Azure Service Fabric, należy uwzględnić następującą właściwość ZonalResiliency , która określa, czy klaster jest odporny na strefy, czy nie.

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

Migrowanie istniejącego klastra odpornego na awarie strefy do odpornego na strefy

Istniejące klastry zarządzane usługi Service Fabric, które nie są rozproszone w różnych strefach dostępności, można teraz migrować w miejscu, aby obejmować strefy dostępności. Obsługiwane scenariusze obejmują klastry utworzone w regionach, które mają trzy strefy dostępności i klastry w regionach, w których trzy strefy dostępności są udostępniane po wdrożeniu.

Wymagania:

Uwaga

Migracja do odpornej na strefy konfiguracji może spowodować krótką utratę łączności zewnętrznej za pośrednictwem modułu równoważenia obciążenia, ale nie wpłynie to na kondycję klastra. Dzieje się tak, gdy należy utworzyć nowy publiczny adres IP w celu zapewnienia odporności sieci na awarie strefy. Zaplanuj migrację odpowiednio.

  1. Zacznij od określenia, czy jest wymagany nowy adres IP i jakie zasoby należy zmigrować, aby stać się odpornymi na strefy. Aby uzyskać bieżący stan odporności strefy dostępności dla zasobów klastra zarządzanego, użyj następującego wywołania interfejsu API:

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

    Możesz też użyć modułu Az w następujący sposób:

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

    Polecenie powinno dostarczyć odpowiedź podobną do:

    {
    "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
    }
    

    Jeśli zasób publicznego adresu IP nie jest odporny na strefy, migracja klastra spowoduje krótką utratę łączności zewnętrznej. Ta utrata połączenia wynika z konfigurowania nowego publicznego adresu IP i aktualizowania w pełni kwalifikowanej nazwy domeny klastra (FQDN) do nowego adresu IP. Jeśli zasób Publiczny adres IP jest odporny na strefy, migracja nie zmodyfikuje zasobu publicznego adresu IP ani nazwy FQDN i nie będzie mieć wpływu na łączność zewnętrzną.

  2. Zainicjuj konwersję bazowego konta magazynu utworzonego dla klastra zarządzanego z magazynu lokalnie nadmiarowego (LRS) na magazyn strefowo nadmiarowy (ZRS) przy użyciu konwersji zainicjowanej przez klienta. Grupa zasobów konta magazynu, które należy zmigrować, będzie mieć postać "SFC_ClusterId" (np. SFC_9240df2f-71ab-4733-a641-53a8464d992d) w ramach tej samej subskrypcji co zasób klastra zarządzanego.

  3. Dodawanie właściwości stref do istniejących typów węzłów

    Ten krok umożliwia skonfigurowanie zarządzanego zestawu skalowania maszyn wirtualnych skojarzonych z typem węzła jako odpornego na strefy, dzięki czemu wszystkie nowe maszyny wirtualne dodane do niego zostaną wdrożone w strefach dostępności (maszyny wirtualne strefowe). Jeśli określony typ węzła jest podstawowy, dostawca zasobów przeprowadzi migrację publicznego adresu IP wraz z aktualizacją DNS nazwy FQDN klastra, w razie potrzeby, aby stać się odporną strefą. Użyj interfejsu API, getazresiliencystatus aby zrozumieć implikację tego kroku.

  • Użyj interfejsu APIVersion 2022-02-01-preview lub nowszego.

  • zones Dodaj parametr do ["1", "2", "3"] istniejących typów węzłów:

    {
       "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. Skalowanie typów węzłów w celu dodania węzłów strefowych i usunięcia węzłów regionalnych

    Na tym etapie zestawy skalowania maszyn wirtualnych są oznaczone jako odporne na strefy. Dlatego podczas skalowania w górę nowo dodane węzły będą strefowe, a podczas skalowania w dół węzły regionalne zostaną usunięte. Takie podejście zapewnia elastyczność skalowania w dowolnej kolejności, która jest zgodna z wymaganiami dotyczącymi pojemności, dostosowując vmInstanceCount właściwość typów węzłów.

    Jeśli na przykład początkowa wartość vmInstanceCount ma wartość 6 (wskazującą sześć węzłów regionalnych), możesz wykonać dwa wdrożenia:

    • Pierwsze wdrożenie: zwiększ wartość vmInstanceCount do 12, aby dodać 6 węzłów strefowych .
    • Drugie wdrożenie: Zmniejsz wartość vmInstanceCount do 6, aby usunąć wszystkie węzły regionalne .

    W całym procesie możesz sprawdzić getazresiliencystatus interfejs API, aby pobrać stan postępu, jak pokazano poniżej. Proces jest uznawany za ukończony, gdy każdy typ węzła ma co najmniej sześć węzłów strefowych i 0 węzłów regionalnych.

    {
    "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
    }
    

    Uwaga

    Proces skalowania dla typu węzła podstawowego będzie wymagał dodatkowego czasu, ponieważ każde dodanie lub usunięcie węzła zainicjuje uaktualnienie klastra usługi Service Fabric.

  2. Oznaczanie klastra odpornego na błędy strefy

    Ten krok pomaga w przyszłych wdrożeniach, ponieważ gwarantuje, że wszystkie przyszłe wdrożenia typów węzłów obejmują wiele stref dostępności, a tym samym klaster pozostaje odporny na awarie az. Ustaw zonalResiliency: true w szablonie usługi ARM klastra i wykonaj wdrożenie, aby oznaczyć klaster jako odporny na strefy i upewnić się, że wszystkie nowe wdrożenia typu węzłów obejmują wiele stref dostępności. Ta aktualizacja jest dozwolona tylko wtedy, gdy wszystkie typy węzłów mają co najmniej sześć węzłów strefowych i 0 węzłów regionalnych.

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

    Zaktualizowany stan można również wyświetlić w portalu w obszarze Przegląd —> właściwości podobne do Zonal resiliency True, po zakończeniu.

  3. Sprawdzanie, czy wszystkie zasoby są odporne na strefy

    Aby zweryfikować stan odporności strefy dostępności dla zasobów klastra zarządzanego, użyj następującego wywołania interfejsu API GET:

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

    To wywołanie interfejsu API powinno dostarczyć odpowiedź podobną do:

    {
     "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
    }
    

    Jeśli napotkasz jakiekolwiek problemy, skontaktuj się z pomocą techniczną, aby uzyskać pomoc.

Włączanie programu FastZonalUpdate w klastrach zarządzanych usługi Service Fabric

Klastry zarządzane usługi Service Fabric obsługują szybsze uaktualnienia klastrów i aplikacji przez zmniejszenie maksymalnej liczby domen uaktualniania na strefę dostępności. Domyślna konfiguracja w tej chwili może mieć co najwyżej 15 domen uaktualniania (UD) w wielu węzłach AZ. Ta ogromna liczba identyfikatorów UD zmniejszyła szybkość uaktualniania. Nowa konfiguracja zmniejsza maksymalną liczbę identyfikatorów UD, co powoduje szybsze aktualizacje, zapewniając bezpieczeństwo uaktualnień bez zmian.

Aktualizację należy wykonać za pomocą szablonu usługi ARM, ustawiając właściwość zonalUpdateMode na "szybką", a następnie modyfikując atrybut typu węzła, taki jak dodawanie węzła, a następnie usuwanie węzła do każdego typu węzła (zobacz wymagane kroki 2 i 3). Interfejs API zasobów klastra zarządzanego usługi Service Fabric powinien mieć wartość 2022-10-01-preview lub nowszą.

  1. Zmodyfikuj szablon usługi ARM przy użyciu nowej właściwości zonalUpdateMode.
   "resources": [
        {
            "type": "Microsoft.ServiceFabric/managedClusters",
            "apiVersion": "2022-10-01-preview",
            '''
            "properties": {
                '''
                "zonalResiliency": true,
                "zonalUpdateMode": "fast",
                ...
            }
        }]
  1. Dodaj węzeł do klastra przy użyciu polecenia az sf cluster node add PowerShell.

  2. Usuń węzeł z klastra przy użyciu polecenia az sf cluster node remove PowerShell.