Dela via


Distribuera ett Service Fabric-hanterat kluster mellan tillgänglighetszoner

Tillgänglighetszoner i Azure är ett erbjudande med hög tillgänglighet som skyddar dina program och data från datacenterfel. En tillgänglighetszon är en unik fysisk plats som är utrustad med oberoende ström, kylning och nätverk i en Azure-region.

Service Fabric-hanterat kluster stöder distributioner som sträcker sig över flera Tillgänglighetszoner för att ge zonåterhämtning. Den här konfigurationen säkerställer hög tillgänglighet för de kritiska systemtjänsterna och dina program för att skydda mot enstaka felpunkter. Azure Tillgänglighetszoner är endast tillgängligt i utvalda regioner. Mer information finns i Översikt över Azure Tillgänglighetszoner.

Kommentar

Tillgänglighetszonsintervall är endast tillgängligt i Standard SKU-kluster.

Exempelmallar är tillgängliga: Service Fabric-mall för zonövergripande tillgänglighet

Topologi för zontåliga Azure Service Fabric-hanterade kluster

Kommentar

Fördelen med att sträcka sig över den primära nodtypen mellan tillgänglighetszoner visas egentligen bara för tre zoner och inte bara två.

Ett Service Fabric-kluster som distribueras över Tillgänglighetszoner (AZ) garanterar hög tillgänglighet för klustertillståndet.

Den rekommenderade topologin för det hanterade klustret kräver följande resurser:

  • Kluster-SKU:n måste vara standard
  • Primär nodtyp bör ha minst nio noder (3 i varje AZ) för bästa återhämtning, men stöder minst sex (2 i varje AZ).
  • Sekundära nodtyper bör ha minst sex noder för bästa återhämtning, men stöder minst tre.

Kommentar

Endast 3 distributioner i tillgänglighetszonen stöds.

Kommentar

Det går inte att göra en ändring på plats av vm-skalningsuppsättningar i ett hanterat kluster från icke-zonspanning till ett zonspannt kluster.

Diagram som visar arkitekturen för Tillgänglighetszon för Azure Service Fabric Arkitektur för Tillgänglighetszon för Azure Service Fabric

Exempelnodlista som visar FD/UD-format i en vm-skalningsuppsättning som sträcker sig över zoner

Exempelnodlista som visar FD/UD-format i en vm-skalningsuppsättning som sträcker sig över zoner.

Distribution av tjänstrepliker mellan zoner: När en tjänst distribueras på de nodtyper som sträcker sig över zoner placeras replikerna för att säkerställa att de hamnar i separata zoner. Den här separationen säkerställs eftersom feldomänens på noderna som finns i var och en av dessa nodtyper konfigureras med zoninformationen (d.v.s. FD = fd:/zone1/1 osv.). Till exempel: för fem repliker eller instanser av en tjänst är fördelningen 2-2-1 och körningen försöker säkerställa lika fördelning mellan AZs.

Konfiguration av användartjänstreplik: Tillståndskänsliga användartjänster som distribueras på nodtyperna för zonen för korstillgänglighet ska konfigureras med den här konfigurationen: antal repliker med målet = 9, min = 5. Den här konfigurationen hjälper tjänsten att fungera även när en zon slutar fungera eftersom sex repliker fortfarande finns kvar i de andra två zonerna. En programuppgradering i ett sådant scenario går också igenom.

Scenario med nedzon: När en zon stängs av visas alla noder i den zonen som ned. Tjänstrepliker på dessa noder kommer också att vara nere. Eftersom det finns repliker i de andra zonerna fortsätter tjänsten att svara med primära repliker som redar över till de zoner som fungerar. Tjänsterna visas i varningstillstånd eftersom antalet målrepliker inte uppfylls och antalet virtuella datorer (VM) fortfarande är större än den definierade minsta målreplikstorleken. Därför tar Service Fabric-lastbalanseraren upp repliker i arbetszonerna för att matcha det konfigurerade antalet målrepliker. I det här läget bör tjänsterna verka felfria. När zonen som var nere säkerhetskopieras kommer lastbalanseraren återigen att sprida alla tjänstrepliker jämnt över alla zoner.

Nätverkskonfiguration

Mer information finns i Konfigurera nätverksinställningar för Service Fabric-hanterade kluster.

Aktivera ett zonmotståndskraftigt Azure Service Fabric-hanterat kluster

Om du vill aktivera ett zonmotståndskraftigt Azure Service Fabric-hanterat kluster måste du inkludera följande ZonalResiliency-egenskap , som anger om klustret är zonmotståndskraftigt eller inte.

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

Migrera ett befintligt icke-zonmotståndskraftigt kluster till Zone Resilient (förhandsversion)

Befintliga Service Fabric-hanterade kluster som inte sträcker sig över tillgänglighetszoner kan nu migreras på plats för att sträcka sig över tillgänglighetszoner. Scenarier som stöds är kluster som skapats i regioner som har tre tillgänglighetszoner och kluster i regioner där tre tillgänglighetszoner görs tillgängliga efter distributionen.

Krav:

Kommentar

Migrering till en zonmotståndskraftig konfiguration kan orsaka en kort förlust av extern anslutning via lastbalanseraren, men påverkar inte klustrets hälsa. Detta inträffar när en ny offentlig IP-adress måste skapas för att göra nätverket motståndskraftigt mot zonfel. Planera migreringen i enlighet med detta.

  1. Börja med att avgöra om en ny IP-adress krävs och vilka resurser som behöver migreras för att bli zontåliga. Använd följande API-anrop för att hämta aktuell återhämtningsstatus för tillgänglighetszonen för resurserna i det hanterade klustret:

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

    Eller så kan du använda Az-modulen på följande sätt:

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

    Kommandot bör ge ett svar som liknar:

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

    Om den offentliga IP-resursen inte är zonmotståndskraftig orsakar migrering av klustret en kort förlust av extern anslutning. Den här anslutningsförlusten beror på att migreringen konfigurerar en ny offentlig IP-adress och uppdaterar klustret Fullständigt kvalificerat domännamn (FQDN) till den nya IP-adressen. Om den offentliga IP-resursen är zonmotståndskraftig ändrar migreringen inte den offentliga IP-resursen eller FQDN och det kommer inte att påverka den externa anslutningen.

  2. Initiera konvertering av det underliggande lagringskontot som skapats för hanterat kluster från lokalt redundant lagring (LRS) till zonredundant lagring (ZRS) med hjälp av kundinitierad konvertering. Resursgruppen för lagringskontot som måste migreras är i formatet "SFC_ClusterId"(t.ex. SFC_9240df2f-71ab-4733-a641-53a8464d992d) under samma prenumeration som den hanterade klusterresursen.

  3. Lägg till egenskapen zoner i befintliga nodtyper

    Det här steget konfigurerar den hanterade vm-skalningsuppsättningen som är associerad med nodtypen som zonmotståndskraftig, vilket säkerställer att alla nya virtuella datorer som läggs till distribueras över tillgänglighetszoner (zonindelade virtuella datorer). Om den angivna nodtypen är primär utför resursprovidern migreringen av den offentliga IP-adressen tillsammans med en kluster-FQDN DNS-uppdatering, om det behövs, för att bli zontålig. Använd API:et getazresiliencystatus för att förstå konsekvenserna av det här steget.

  • Använd apiVersion 2022-02-01-preview eller senare.

  • Lägg till parameteruppsättningen zones till ["1", "2", "3"] befintliga nodtyper:

    {
       "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. Skala nodtyper för att lägga till zonnoder och ta bort regionala noder

    I det här skedet markeras vm-skalningsuppsättningar som zontåliga. När du skalar upp kommer nyligen tillagda noder därför att vara zonindelade, och när du skalar ned tas regionala noder bort. Den här metoden ger flexibiliteten att skala i valfri ordning som överensstämmer med dina kapacitetskrav genom att vmInstanceCount justera egenskapen på nodtyperna.

    Om till exempel den första vmInstanceCount är inställd på 6 (som anger sex regionala noder) kan du utföra två distributioner:

    • Första distributionen: Öka vmInstanceCount till 12 för att lägga till 6 zonnoder .
    • Andra distributionen: Minska vmInstanceCount till 6 för att ta bort alla regionala noder.

    Under hela processen kan du kontrollera API:et getazresiliencystatus för att hämta förloppsstatusen enligt nedan. Processen anses vara slutförd när varje nodtyp har minst sex zonnoder och 0 regionala noder.

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

    Kommentar

    Skalningsprocessen för den primära nodtypen kräver ytterligare tid, eftersom varje tillägg eller borttagning av en nod initierar en uppgradering av Service Fabric-klustret.

  2. Markera klustret som motståndskraftigt mot zonfel

    Det här steget hjälper till i framtida distributioner, eftersom det säkerställer att alla framtida distributioner av nodtyper sträcker sig över tillgänglighetszoner och därför fortsätter klustret att vara tolerant mot AZ-fel. Ange zonalResiliency: true i klustrets ARM-mall och gör en distribution för att markera klustret som zonmotståndskraftigt och se till att alla nya nodtypsdistributioner sträcker sig över tillgänglighetszoner. Den här uppdateringen tillåts endast om alla nodtyper har minst sex zonnoder och 0 regionala noder.

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

    Du kan också se den uppdaterade statusen i portalen under Översikt –> Egenskaper som liknar Zonal resiliency True, när den är klar.

  3. Verifiera att alla resurser är zontåliga

    Om du vill verifiera återhämtningstillståndet för tillgänglighetszonen för resurserna i det hanterade klustret använder du följande GET API-anrop:

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

    Det här API-anropet bör ge ett svar som liknar:

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

    Om du stöter på problem kan du kontakta supporten för hjälp.

Aktivera FastZonalUpdate i Service Fabric-hanterade kluster (förhandsversion)

Service Fabric-hanterade kluster stöder snabbare kluster- och programuppgraderingar genom att minska maximalt antal uppgraderingsdomäner per tillgänglighetszon. Standardkonfigurationen just nu kan ha högst 15 uppgraderingsdomäner (UD: er) i flera AZ-nodtyper. Det här enorma antalet UD:er minskade uppgraderingshastigheten. Den nya konfigurationen minskar maximalt antal UD:er, vilket resulterar i snabbare uppdateringar, vilket håller säkerheten för uppgraderingarna intakt.

Uppdateringen bör göras via ARM-mallen genom att ställa in egenskapen zonalUpdateMode till "snabb" och sedan ändra ett nodtypattribut, till exempel lägga till en nod och sedan ta bort noden till varje nodtyp (se nödvändiga steg 2 och 3). Den hanterade Service Fabric-klusterresursen apiVersion ska vara 2022-10-01-preview eller senare.

  1. Ändra ARM-mallen med den nya egenskapen zonalUpdateMode.
   "resources": [
        {
            "type": "Microsoft.ServiceFabric/managedClusters",
            "apiVersion": "2022-10-01-preview",
            '''
            "properties": {
                '''
                "zonalResiliency": true,
                "zonalUpdateMode": "fast",
                ...
            }
        }]
  1. Lägg till en nod i ett kluster med hjälp av az sf-klusternoden och lägg till PowerShell-kommandot.

  2. Ta bort en nod från ett kluster med hjälp av kommandot az sf cluster node remove PowerShell.