Udostępnij za pośrednictwem


Jak usunąć typ węzła usługi Service Fabric

W tym artykule opisano sposób skalowania klastra usługi Azure Service Fabric przez usunięcie istniejącego typu węzła z klastra. Klaster usługi Service Fabric jest połączonym z siecią zestawem maszyn wirtualnych lub fizycznych, w którym wdraża się mikrousługi i nimi zarządza. Maszyna lub maszyna wirtualna, która jest częścią klastra, jest nazywana węzłem. Zestawy skalowania maszyn wirtualnych to zasób obliczeniowy platformy Azure używany do wdrażania kolekcji maszyn wirtualnych i zarządzania nimi jako zestawu. Każdy typ węzła zdefiniowany w klastrze platformy Azure jest konfigurowany jako oddzielny zestaw skalowania. Każdy typ węzła może być zarządzany oddzielnie. Po utworzeniu klastra usługi Service Fabric można skalować klaster w poziomie, usuwając typ węzła (zestaw skalowania maszyn wirtualnych) i wszystkie jego węzły. Klaster można skalować w dowolnym momencie nawet wtedy, gdy obciążenia są uruchomione w klastrze. W miarę skalowania klastra aplikacje są również automatycznie skalowane.

Ostrzeżenie

Użycie tego podejścia w celu usunięcia typu węzła z klastra produkcyjnego nie jest zalecane do częstego używania. Jest to niebezpieczne polecenie, ponieważ usuwa zasób zestawu skalowania maszyn wirtualnych za typem węzła.

Właściwości trwałości

Podczas korzystania z polecenia Remove-AzServiceFabricNodeType priorytet bezpieczeństwa jest wyższy niż szybkość. Typ węzła musi mieć poziom trwałości Silver lub Gold, ponieważ:

  • Brąz nie daje żadnych gwarancji dotyczących zapisywania informacji o stanie.
  • Trwałość srebra i złota pozwala wychwycić wszelkie zmiany w zestawie skalowania.
  • Gold zapewnia również kontrolę nad aktualizacjami platformy Azure poniżej zestawu skalowania.

Usługa Service Fabric "organizuje" podstawowe zmiany i aktualizacje, dzięki czemu dane nie zostaną utracone. Jednak usunięcie typu węzła z trwałością brązowego może spowodować utratę informacji o stanie. Jeśli usuwasz typ węzła podstawowego, a aplikacja jest bezstanowa, brąz jest akceptowalny. W przypadku uruchamiania obciążeń stanowych w środowisku produkcyjnym minimalna konfiguracja powinna mieć wartość Silver. Podobnie w przypadku scenariuszy produkcyjnych typ węzła podstawowego powinien zawsze mieć wartość Silver lub Gold.

Więcej informacji o trwałości brązu

Podczas usuwania typu węzła, który jest brązowy, wszystkie węzły w typie węzła natychmiast zejdą w dół. Usługa Service Fabric nie wychwytuje żadnych aktualizacji zestawu skalowania węzłów z brązu, co powoduje natychmiastowe wyłączenie wszystkich maszyn wirtualnych. Jeśli w tych węzłach wystąpiły jakiekolwiek stanowe dane, dane zostaną utracone. Teraz, nawet jeśli były bezstanowe, wszystkie węzły w usłudze Service Fabric uczestniczą w pierścieniu, więc cała dzielnica może zostać utracona, co może zdestabilizować sam klaster.

Usuwanie typu węzła

  1. Przed rozpoczęciem procesu należy dbać o te wymagania wstępne.

    • Klaster jest w dobrej kondycji.
    • Po usunięciu typu węzła nadal będzie wystarczająca pojemność, na przykład liczba węzłów do umieszczania wymaganej liczby replik.
  2. Przenieś wszystkie usługi, które mają ograniczenia umieszczania, aby użyć typu węzła poza typem węzła.

    • Zmodyfikuj manifest aplikacji/usługi, aby nie odwoływać się do typu węzła.
    • Wdróż zmianę.

    Następnie sprawdź, czy:

    • Wszystkie usługi zmodyfikowane powyżej nie są już uruchomione w węźle należącym do typu węzła.
    • Wszystkie usługi są w dobrej kondycji.
  3. Usuń oznaczenie typu węzła jako innego niż podstawowy (pomiń dla typów węzłów innych niż podstawowe)

    • Znajdź szablon usługi Azure Resource Manager używany do wdrożenia.
    • Znajdź sekcję powiązaną z typem węzła w sekcji Service Fabric.
    • Zmień właściwość isPrimary na false. ** Nie usuwaj sekcji powiązanej z typem węzła w tym zadaniu.
    • Wdróż zmodyfikowany szablon usługi Azure Resource Manager. ** W zależności od konfiguracji klastra ten krok może trochę potrwać.

    Następnie sprawdź, czy:

    • Sekcja usługi Service Fabric w portalu wskazuje, że klaster jest gotowy.
    • Klaster jest w dobrej kondycji.
    • Żaden z węzłów należących do typu węzła nie jest oznaczony jako węzeł inicjający.
  4. Wyłącz każdy węzeł w typie węzła.

    Połącz się z klastrem przy użyciu programu PowerShell, a następnie uruchom następujący 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
      }
    }
    
    • Aby zapewnić trwałość z brązu, poczekaj, aż wszystkie węzły będą w stanie wyłączenia
    • W przypadku trwałości srebra i złota niektóre węzły przechodzą do pozycji wyłączone, a pozostałe będą w stanie wyłączenia. Sprawdź kartę szczegółów węzłów w stanie wyłączania, jeśli wszystkie są zablokowane podczas zapewniania kworum dla partycji usługi infrastruktury, można bezpiecznie kontynuować.
  5. Zatrzymaj dane dla typu węzła.

    Połącz się z klastrem przy użyciu programu PowerShell, a następnie uruchom następujący 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
      }
    }
    

    Poczekaj, aż wszystkie węzły dla typu węzła zostaną oznaczone w dół.

  6. Cofanie przydziału węzłów w oryginalnym zestawie skalowania maszyn wirtualnych

    Zaloguj się do subskrypcji platformy Azure, w której wdrożono zestaw skalowania i usuń zestaw skalowania maszyn wirtualnych.

    $scaleSetName="myscaleset"
    $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets"
    
    Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
    
  7. Usuń dane dla typu węzła.

    Połącz się z klastrem przy użyciu programu PowerShell, a następnie uruchom następujący krok.

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

    Poczekaj, aż wszystkie węzły zostaną usunięte z klastra. Węzły nie powinny być wyświetlane w systemie SFX.

  8. Usuń typ węzła z sekcji Service Fabric.

    • Znajdź szablon usługi Azure Resource Manager używany do wdrożenia.
    • Znajdź sekcję powiązaną z typem węzła w sekcji Service Fabric.
    • Usuń sekcję odpowiadającą typowi węzła.
    • Tylko w przypadku klastrów silver i wyższych trwałości zaktualizuj zasób klastra w szablonie i skonfiguruj zasady kondycji tak, aby ignorowały kondycję sieci szkieletowej:/Kondycja aplikacji systemu przez dodanie applicationDeltaHealthPolicies w ramach zasobu properties klastra, jak pokazano poniżej. Poniższe zasady powinny ignorować istniejące błędy, ale nie zezwalać na nowe błędy kondycji.
    "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 
               } 
           } 
       } 
     } 
    },
    
    • Wdróż zmodyfikowany szablon usługi Azure Resource Manager. ** Ten krok zajmuje trochę czasu, zwykle do dwóch godzin. To uaktualnienie powoduje zmianę ustawień usługi InfrastructureService, dlatego wymagane jest ponowne uruchomienie węzła. W tym przypadku forceRestart jest ignorowany. Parametr upgradeReplicaSetCheckTimeout określa maksymalny czas oczekiwania usługi Service Fabric na partycję w bezpiecznym stanie, jeśli jeszcze nie jest w stanie bezpiecznym. Po przejściu kontroli bezpieczeństwa dla wszystkich partycji w węźle usługa Service Fabric kontynuuje uaktualnianie w tym węźle. Wartość parametru upgradeTimeout można zmniejszyć do 6 godzin, ale dla maksymalnego bezpieczeństwa należy użyć 12 godzin.

    Następnie sprawdź, czy:

    • Zasób usługi Service Fabric w portalu pokazuje gotowy.
  9. Usuń wszystkie odwołania do zasobów odnoszących się do typu węzła z szablonu usługi ARM.

    • Znajdź szablon usługi Azure Resource Manager używany do wdrożenia.
    • Usuń zestaw skalowania maszyn wirtualnych i inne zasoby związane z typem węzła z szablonu.
    • Wdróż zmiany.

    Następnie:

    • Poczekaj na zakończenie wdrożenia.
  10. Usuń zasoby odnoszące się do typu węzła, które nie są już używane. Przykład modułu równoważenia obciążenia i publiczny adres IP.

    • Aby usunąć te zasoby, możesz użyć tego samego polecenia programu PowerShell, które zostało użyte w kroku 6, określając określony typ zasobu i wersję interfejsu API.
    • W przypadku trwałości srebra i złota wszystkie zadania naprawy pozostawione w klastrze, które są przeznaczone dla dowolnego węzła, które były obecne w usuniętym węźle, należy wykonać za pomocą polecenia :
       Complete-ServiceFabricRepairTask -TaskId <repair task name>
    

Uwaga

Ten krok jest opcjonalny, jeśli ten sam moduł równoważenia obciążenia i adres IP jest ponownie używany między typami węzłów.

Następne kroki