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
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.
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.
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.
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ć.
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ół.
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
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.
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 zasobuproperties
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. ParametrupgradeReplicaSetCheckTimeout
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ść parametruupgradeTimeout
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.
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.
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
- Dowiedz się więcej o cechach trwałości klastra.
- Dowiedz się więcej o typach węzłów i zestawach skalowania maszyn wirtualnych.
- Dowiedz się więcej o skalowaniu klastra usługi Service Fabric.