Sdílet prostřednictvím


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é se nasazují a spravují 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 kdykoli škálovat, i když jsou úlohy spuštěné v clusteru. Jak se cluster škáluje, vaše aplikace se automaticky škálují i.

Upozorňující

Použití tohoto přístupu k odebrání typu uzlu z produkčního clusteru se nedoporučuje používat často. Je to 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í remove-AzServiceFabricNodeType je upřednostněna bezpečnost při rychlosti. Typ uzlu musí být úroveň životnosti Silver nebo Gold, protože:

  • Bronz vám neposkytuje žádné záruky o ukládání informací o stavu.
  • Silver and Gold durability trap any changes to the scale set.
  • Zlaté členství také poskytuje kontrolu nad aktualizacemi Azure pod škálovací sadou.

Service Fabric "orchestruje" základní změny a aktualizace, aby se neztratila data. Pokud však 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 přijatelná funkce Bronze. Při spouštění stavových úloh v produkčním prostředí by minimální konfigurace měla být Silver. Podobně pro produkční scénáře by primární typ uzlu měl být vždy Silver nebo Gold.

Bronzová odolnost – podrobnější informace

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

Odebrání typu uzlu

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

    • Cluster je v pořádku.
    • Po odebrání typu uzlu bude stále dostatek kapacity, například počet uzlů, do které se umístí požadovaný počet replik.
  2. Přesuňte všechny služby s omezením umístění tak, aby používaly typ uzlu mimo typ uzlu.

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

    Pak ověřte, že:

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

    • Vyhledejte šablonu Azure Resource Manageru použitou k nasazení.
    • V části Service Fabric vyhledejte oddíl související s typem uzlu.
    • Change isPrimary vlastnost false. ** Neodebídejte oddíl související s typem uzlu v tomto úkolu.
    • Nasaďte upravenou šablonu Azure Resource Manageru. ** V závislosti na konfiguraci clusteru může tento krok chvíli trvat.

    Pak ověřte, že:

    • Oddíl Service Fabric na portálu indikuje, že cluster je připravený.
    • Cluster je v pořádku.
    • Žádný z uzlů patřících k 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 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
      }
    }
    
    • V případě bronzové stálosti 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 zbytek bude ve stavu zakázání. Zkontrolujte kartu podrobností uzlů v zakazování stavu, pokud jsou všechny zablokované na zajištění kvora pro oddíly služby Infrastruktura, pak je bezpečné pokračovat.
  5. Zastavte data pro typ uzlu.

    Připojte se ke clusteru pomocí PowerShellu a 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, až se označí všechny uzly pro typ uzlu.

  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 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 oddílu Service Fabric.

    • Vyhledejte šablonu Azure Resource Manageru 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 se stříbrnou a vyšší odolností aktualizujte prostředek clusteru v šabloně a nakonfigurujte zásady stavu tak, aby ignorovaly prostředky infrastruktury:/Stav systémové aplikace přidáním applicationDeltaHealthPolicies pod prostředek properties clusteru, jak je uvedeno níže. Následující zásada by měla ignorovat existující chyby, ale nepovolit 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 Manageru. ** Tento krok trvá nějakou dobu, 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. upgradeReplicaSetCheckTimeout Parametr určuje maximální dobu, po kterou Service Fabric čeká na to, aby oddíl byl v bezpečném stavu, pokud ještě není v bezpečném stavu. Jakmile bezpečnostní kontroly projdou všechny oddíly na uzlu, Service Fabric pokračuje upgradem na daném uzlu. Hodnotu parametru upgradeTimeout lze snížit na 6 hodin, ale pro maximální bezpečnost je třeba použít 12 hodin.

    Pak ověřte, že:

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

    • Vyhledejte šablonu Azure Resource Manageru použitou k nasazení.
    • Odeberte škálovací sadu virtuálních počítačů a další prostředky související s typem uzlu ze šablony.
    • 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 Balanceru a veřejné IP adresy

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

Poznámka:

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

Další kroky