Postup odebrání typu uzlu Service Fabric

Tento článek popisuje, jak škálovat cluster Azure Service Fabric odebráním existujícího typu uzlu z clusteru. Cluster Service Fabric je síťově propojená sada virtuálních nebo fyzických počítačů, ve kterých se nasazují a spravují vaše mikroslužby. Počítač nebo virtuální počítač, který je součástí clusteru, se nazývá uzel. Škálovací sady virtuálních počítačů jsou výpočetní prostředek Azure, který používáte k nasazení a správě kolekce virtuálních počítačů jako sady. Každý typ uzlu definovaný v clusteru Azure je nastavený jako samostatná škálovací sada. Každý typ uzlu je pak možné spravovat samostatně. Po vytvoření clusteru Service Fabric můžete cluster horizontálně škálovat odebráním typu uzlu (škálovací sady virtuálních počítačů) a všech jeho uzlů. Cluster můžete škálovat kdykoli, i když jsou v clusteru spuštěné úlohy. S tím, jak se cluster škáluje, se automaticky škálují i vaše aplikace.

Upozornění

Použití tohoto přístupu k odebrání typu uzlu z produkčního clusteru se nedoporučuje používat často. Jedná se o nebezpečný příkaz, protože odstraňuje prostředek škálovací sady virtuálních počítačů za typem uzlu.

Vlastnosti stálosti

Při použití rutiny Remove-AzServiceFabricNodeType je upřednostněna bezpečnost před rychlostí. Typ uzlu musí být stříbrná nebo zlatá úroveň stálosti, protože:

  • Bronz vám neposkytuje žádné záruky pro ukládání informací o stavu.
  • Odolnost silver a gold zachytí všechny změny škálovací sady.
  • Gold také poskytuje kontrolu nad aktualizacemi Azure pod škálovací sadou.

Service Fabric "orchestruje" základní změny a aktualizace, aby nedošlo ke ztrátě dat. Pokud ale odeberete typ uzlu s bronzovou odolností, může dojít ke ztrátě informací o stavu. Pokud odebíráte primární typ uzlu a vaše aplikace je bezstavová, je bronz přijatelný. Při spouštění stavových úloh v produkčním prostředí by minimální konfigurace měla být Silver. Podobně v produkčních scénářích by primární typ uzlu měl být vždy Silver nebo Gold.

Odolnost bronzu – více informací

Při odebírání typu uzlu, který je Bronzový, všechny uzly v typu uzlu okamžitě poklesnou. Service Fabric nezachytává žádné aktualizace škálovací sady bronzových uzlů, takže všechny virtuální počítače okamžitě z provozu. Pokud jste na těchto uzlech měli něco stavového, dojde ke ztrátě dat. I kdybyste byli bezstavoví, všechny uzly v Service Fabric se účastní okruhu, takže může dojít ke ztrátě celého okolí, což by mohlo destabilizovat samotný cluster.

Odebrání typu uzlu

  1. Před zahájením procesu se o tyto požadavky postarejte.

    • Cluster je v pořádku.
    • Po odebrání typu uzlu bude stále dostatečná kapacita, například počet uzlů pro umístění požadovaného počtu replik.
  2. Přesuňte všechny služby, které mají omezení umístění, aby používaly typ uzlu, mimo typ uzlu.

    • Upravte manifest aplikace nebo služby tak, aby už odkazovat na typ uzlu.
    • Nasaďte změnu.

    Pak ověřte, že:

    • Všechny výše upravené služby už nejsou spuštěné na uzlu, který patří do typu uzlu.
    • Všechny služby jsou v pořádku.
  3. Zrušte označení typu uzlu jako neprimárního typu (u jiných než primárních typů uzlů přeskočte).

    • Vyhledejte šablonu Azure Resource Manager použitou k nasazení.
    • V části Service Fabric vyhledejte oddíl související s typem uzlu.
    • Změňte vlastnost isPrimary na false. ** Neodstraňujte oddíl související s typem uzlu v této úloze.
    • Nasaďte upravenou šablonu Azure Resource Manager. ** V závislosti na konfiguraci clusteru může tento krok chvíli trvat.

    Pak ověřte, že:

    • Oddíl Service Fabric na portálu označuje, že cluster je připravený.
    • Cluster je v pořádku.
    • Žádný z uzlů patřících do typu uzlu není označen jako počáteční uzel.
  4. Zakažte každý uzel v typu uzlu.

    Připojte se ke clusteru pomocí PowerShellu a pak spusťte následující krok.

    $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
      }
    }
    
    • Pokud chcete bronzovou odolnost, počkejte, až se všechny uzly dostanou do zakázaného stavu.
    • V případě stříbrné a zlaté stálosti některé uzly přejdou do zakázaného stavu a ostatní budou ve stavu zakázání. Zkontrolujte kartu podrobností o uzlech ve stavu zakázání. Pokud jsou všechny zablokované na zajištění kvora pro oddíly služby infrastruktury, můžete bezpečně pokračovat.
  5. Zastavte data pro typ uzlu.

    Připojte se ke clusteru pomocí PowerShellu a pak spusťte následující krok.

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

    Počkejte, dokud nebudou všechny uzly typu uzlu označené dolů.

  6. Uvolnění uzlů v původní škálovací sadě virtuálních počítačů

    Přihlaste se k předplatnému Azure, ve kterém byla škálovací sada nasazená, a odeberte škálovací sadu virtuálních počítačů.

    $scaleSetName="myscaleset"
    $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets"
    
    Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
    
  7. Odeberte data pro typ uzlu.

    Připojte se ke clusteru pomocí PowerShellu a pak spusťte následující krok.

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

    Počkejte, až se z clusteru odeberou všechny uzly. Uzly by se neměly zobrazovat v SFX.

  8. Odeberte typ uzlu z části Service Fabric.

    • Vyhledejte šablonu Azure Resource Manager použitou k nasazení.
    • V části Service Fabric vyhledejte oddíl související s typem uzlu.
    • Odeberte oddíl odpovídající typu uzlu.
    • Pouze pro clustery Silver a vyšší odolnost aktualizujte prostředek clusteru v šabloně a nakonfigurujte zásady stavu tak, aby ignorovaly stav infrastruktury:/Stav systémové aplikace přidáním applicationDeltaHealthPolicies pod prostředek properties clusteru, jak je uvedeno níže. Následující zásady by měly ignorovat existující chyby, ale nepovolovat nové chyby stavu.
    "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 
               } 
           } 
       } 
     } 
    },
    
    • Nasaďte upravenou šablonu Azure Resource Manager. ** Tento krok chvíli trvá, obvykle až dvě hodiny. Tento upgrade změní nastavení služby InfrastructureService, proto je potřeba restartovat uzel. V tomto případě forceRestart se ignoruje. Parametr upgradeReplicaSetCheckTimeout určuje maximální dobu, po kterou Service Fabric čeká, než bude oddíl v bezpečném stavu, pokud ještě není v bezpečném stavu. Jakmile bezpečnostní kontroly projdou pro všechny oddíly na uzlu, Service Fabric pokračuje v upgradu na daném uzlu. Hodnota parametru upgradeTimeout může být snížena na 6 hodin, ale pro maximální bezpečnost by se mělo použít 12 hodin.

    Pak ověřte, že:

    • Prostředek Service Fabric na portálu je připravený.
  9. Odeberte ze šablony ARM všechny odkazy na prostředky související s typem uzlu.

    • Vyhledejte šablonu Azure Resource Manager použitou k nasazení.
    • Odeberte ze šablony škálovací sadu virtuálních počítačů a další prostředky související s typem uzlu.
    • Nasaďte změny.

    Potom:

    • Počkejte na dokončení nasazení.
  10. Odeberte prostředky související s typem uzlu, který se už nepoužívá. Příklad Load Balancer a Veřejná IP adresa.

    • Pokud chcete tyto prostředky odebrat, můžete použít stejný příkaz PowerShellu, jaký jste použili v kroku 6 a určit konkrétní typ prostředku a verzi rozhraní API.
    • Pro stříbrnou a zlatou odolnost by se všechny úlohy opravy, které zůstaly v clusteru, které cílí na některý z uzlů, které byly přítomné v odebraném typu uzlu, měly dokončit pomocí příkazu:
       Complete-ServiceFabricRepairTask -TaskId <repair task name>
    

Poznámka

Tento krok je volitelný, pokud stejný Load Balancer a IP adresa se opakovaně používá mezi typy uzlů.

Další kroky