Dela via


Så här tar du 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 som dina mikrotjänster distribueras till och hanteras från. 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

Använd 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 det 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 gör ändringar i skalningsuppsättningen.
  • Guld ger dig också kontroll över Azure-uppdateringarna under skalningsuppsättningen.

Service Fabric "samordnar" 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 bör den minsta konfigurationen vara Silver. För produktionsscenarier bör den primära nodtypen alltid vara silver eller guld.

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 sväller inte några uppdateringar av bronsnoder för skalningsuppsättningar, 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. Nu, även om du var tillståndslös, deltar alla noder i Service Fabric i ringen, så en hel stadsdel kan gå förlorad, 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 efter att nodtypen har tagits bort, till exempel antalet noder för att placera det nödvändiga antalet repliker.
  2. Flytta alla tjänster som har placeringsbegränsningar för att använda nodtypen från nodtypen.

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

    Verifiera sedan att:

    • Alla tjänster som ändrats ovan körs inte längre på noden som tillhör 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 som är relaterat till nodtypen i avsnittet Service Fabric.
    • Ändra egenskapen ärPrimary 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.

    Verifiera 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 inaktiverande tillstånd, om de 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å Den Azure-prenumeration 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 nodtypen från avsnittet Service Fabric.

    • Leta upp den Azure Resource Manager-mall som används för distribution.
    • Leta reda på avsnittet som är relaterat till nodtypen i avsnittet Service Fabric.
    • Ta bort avsnittet som motsvarar nodtypen.
    • Endast för Silver- och högre hållbarhetskluster 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 inte redan i ett säkert tillstånd. När säkerhetskontrollerna har passerat för alla partitioner på en nod fortsätter Service Fabric med uppgraderingen på den noden. Värdet för parametern upgradeTimeout kan minskas till 6 timmar, men för maximal säkerhet ska 12 timmar användas.

    Verifiera sedan att:

    • Service Fabric-resursen i portalen visas 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 på lastbalanserare 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>
    

Kommentar

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

Nästa steg