Ta bort en Service Fabric-nodtyp

Den här artikeln beskriver hur du skalar ett Azure Service Fabric-kluster genom att ta bort en befintlig nodtyp från ett kluster. Ett Service Fabric-kluster är en nätverksansluten uppsättning virtuella eller fysiska datorer där dina mikrotjänster distribueras och hanteras. En dator eller virtuell dator som ingår i ett kluster kallas för en nod. Vm-skalningsuppsättningar är en Azure-beräkningsresurs som du använder för att distribuera och hantera en samling virtuella datorer som en uppsättning. Varje nodtyp som definieras i ett Azure-kluster konfigureras som en separat skalningsuppsättning. Varje nodtyp kan sedan hanteras separat. När du har skapat ett Service Fabric-kluster kan du skala ett kluster vågrätt genom att ta bort en nodtyp (VM-skalningsuppsättning) och alla dess noder. Du kan skala klustret när som helst, även när arbetsbelastningar körs i klustret. När klustret skalas skalas även dina program automatiskt.

Varning

Att använda den här metoden för att ta bort en nodtyp från ett produktionskluster rekommenderas inte att användas ofta. Det är ett farligt kommando eftersom den tar bort resursen för vm-skalningsuppsättningen bakom nodtypen.

Hållbarhetsegenskaper

Säkerhet prioriteras över hastighet när du använder Remove-AzServiceFabricNodeType. Nodtypen måste vara silver- eller guldhållbarhetsnivå, eftersom:

  • Brons ger dig inga garantier för att spara tillståndsinformation.
  • Hållbarhetsfällor för silver och guld genererar ändringar i skalningsuppsättningen.
  • Guld ger dig också kontroll över Azure-uppdateringarna under skalningsuppsättningen.

Service Fabric "orkestrerar" underliggande ändringar och uppdateringar så att data inte går förlorade. Men när du tar bort en nodtyp med bronshållbarhet kan du förlora tillståndsinformation. Om du tar bort en primär nodtyp och programmet är tillståndslöst är Bronze acceptabelt. När du kör tillståndskänsliga arbetsbelastningar i produktion ska den minsta konfigurationen vara Silver. På samma sätt bör den primära nodtypen alltid vara Silver eller Guld för produktionsscenarier.

Mer om brons hållbarhet

När du tar bort en nodtyp som är Brons går alla noder i nodtypen ned omedelbart. Service Fabric genererar inga uppdateringar av skalningsuppsättningar för bronsnoder, vilket innebär att alla virtuella datorer går ned omedelbart. Om du hade något tillståndskänsligt på dessa noder går data förlorade. Även om du var tillståndslös deltar nu alla noder i Service Fabric i ringen, så ett helt område kan gå förlorat, vilket kan destabilisera själva klustret.

Ta bort en nodtyp

  1. Ta hand om dessa förutsättningar innan du påbörjar processen.

    • Klustret är felfritt.
    • Det kommer fortfarande att finnas tillräckligt med kapacitet när nodtypen har tagits bort, till exempel antalet noder för att placera det antal repliker som krävs.
  2. Flytta alla tjänster som har placeringsbegränsningar för att använda nodtypen från nodtypen.

    • Ändra program-/tjänstmanifestet för att inte längre referera till nodtypen.
    • Distribuera ändringen.

    Kontrollera sedan att:

    • Alla tjänster som ändrats ovan körs inte längre på noden som hör till nodtypen.
    • Alla tjänster är felfria.
  3. Avmarkera nodtypen som icke-primär (hoppa över för icke-primära nodtyper)

    • Leta upp den Azure Resource Manager-mall som används för distribution.
    • Leta reda på avsnittet om nodtypen i avsnittet Service Fabric.
    • Ändra egenskapen isPrimary till false. ** Ta inte bort avsnittet som är relaterat till nodtypen i den här uppgiften.
    • Distribuera den ändrade Azure Resource Manager-mallen. ** Beroende på klusterkonfigurationen kan det här steget ta en stund.

    Kontrollera sedan att:

    • Service Fabric-avsnittet i portalen anger att klustret är klart.
    • Klustret är felfritt.
    • Ingen av noderna som hör till nodtypen markeras som Seed Node.
  4. Inaktivera varje nod i nodtypen.

    Anslut till klustret med PowerShell och kör sedan följande steg.

    $nodeType = "" # specify the name of node type
    $nodes = Get-ServiceFabricNode
    
    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Disable-ServiceFabricNode -Intent RemoveNode -NodeName $node.NodeName -Force
      }
    }
    
    • För brons hållbarhet väntar du på att alla noder ska komma till inaktiverat tillstånd
    • För silver- och guldhållbarhet går vissa noder in till inaktiverade och resten är i inaktiverat tillstånd. Kontrollera informationsfliken för noderna i inaktiveringstillstånd. Om alla har fastnat för att säkerställa kvorum för infrastrukturtjänstpartitioner är det säkert att fortsätta.
  5. Stoppa data för nodtypen.

    Anslut till klustret med PowerShell och kör sedan följande steg.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Start-ServiceFabricNodeTransition -Stop -OperationId (New-Guid) -NodeInstanceId $node.NodeInstanceId -NodeName $node.NodeName -StopDurationInSeconds 10000
      }
    }
    

    Vänta tills alla noder för nodtypen har markerats som Ned.

  6. Frigöra noder i den ursprungliga vm-skalningsuppsättningen

    Logga in på Azure-prenumerationen där skalningsuppsättningen distribuerades och ta bort vm-skalningsuppsättningen.

    $scaleSetName="myscaleset"
    $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets"
    
    Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
    
  7. Ta bort data för nodtypen.

    Anslut till klustret med PowerShell och kör sedan följande steg.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Remove-ServiceFabricNodeState -NodeName $node.NodeName -Force
      }
    }
    

    Vänta tills alla noder har tagits bort från klustret. Noderna ska inte visas i SFX.

  8. Ta bort nodtyp från Service Fabric-avsnittet.

    • Leta upp den Azure Resource Manager-mall som används för distribution.
    • Leta reda på avsnittet om nodtypen i avsnittet Service Fabric.
    • Ta bort avsnittet som motsvarar nodtypen.
    • Endast för Silver och kluster med högre hållbarhet uppdaterar du klusterresursen i mallen och konfigurerar hälsoprinciper för att ignorera infrastrukturresurser:/Systemprogramhälsa genom att lägga till applicationDeltaHealthPolicies under klusterresurs properties enligt nedan. Principen nedan bör ignorera befintliga fel men inte tillåta nya hälsofel.
    "upgradeDescription":  
    { 
     "forceRestart": false, 
     "upgradeReplicaSetCheckTimeout": "10675199.02:48:05.4775807", 
     "healthCheckWaitDuration": "00:05:00", 
     "healthCheckStableDuration": "00:05:00", 
     "healthCheckRetryTimeout": "00:45:00", 
     "upgradeTimeout": "12:00:00", 
     "upgradeDomainTimeout": "02:00:00", 
     "healthPolicy": { 
       "maxPercentUnhealthyNodes": 100, 
       "maxPercentUnhealthyApplications": 100 
     }, 
     "deltaHealthPolicy":  
     { 
       "maxPercentDeltaUnhealthyNodes": 0, 
       "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, 
       "maxPercentDeltaUnhealthyApplications": 0, 
       "applicationDeltaHealthPolicies":  
       { 
           "fabric:/System":  
           { 
               "defaultServiceTypeDeltaHealthPolicy":  
               { 
                       "maxPercentDeltaUnhealthyServices": 0 
               } 
           } 
       } 
     } 
    },
    
    • Distribuera den ändrade Azure Resource Manager-mallen. ** Det här steget tar en stund, vanligtvis upp till två timmar. Den här uppgraderingen ändrar inställningarna till InfrastructureService. Därför krävs en omstart av noden. I det här fallet forceRestart ignoreras. Parametern upgradeReplicaSetCheckTimeout anger den maximala tid som Service Fabric väntar på att en partition ska vara i ett säkert tillstånd, om den inte redan är i ett säkert tillstånd. När säkerhetskontrollerna har godkänts för alla partitioner på en nod fortsätter Service Fabric med uppgraderingen på noden. Värdet för parametern upgradeTimeout kan minskas till 6 timmar, men för maximal säkerhet bör 12 timmar användas.

    Kontrollera sedan att:

    • Service Fabric-resursen i portalen visas som klar.
  9. Ta bort alla referenser till de resurser som är relaterade till nodtypen från ARM-mallen.

    • Leta upp den Azure Resource Manager-mall som används för distribution.
    • Ta bort vm-skalningsuppsättningen och andra resurser som är relaterade till nodtypen från mallen.
    • Distribuera ändringarna.

    Sedan:

    • Vänta tills distributionen har slutförts.
  10. Ta bort resurser som är relaterade till den nodtyp som inte längre används. Exempel Load Balancer och offentlig IP-adress.

    • Om du vill ta bort dessa resurser kan du använda samma PowerShell-kommando som i steg 6 som anger den specifika resurstypen och API-versionen.
    • För silver- och guldhållbarhet bör alla reparationsaktiviteter som finns kvar i klustret, som är inriktade på någon av noderna som fanns i nodtypen som togs bort, slutföras med kommandot:
       Complete-ServiceFabricRepairTask -TaskId <repair task name>
    

Anteckning

Det här steget är valfritt om samma Load Balancer och IP återanvänds mellan nodtyper.

Nästa steg