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 to połączony z siecią zestaw maszyn wirtualnych lub fizycznych, w którym są wdrażane mikrousługi i zarządzane. 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, który służy do wdrażania kolekcji maszyn wirtualnych i zarządzania nią 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 do usuwania 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.
Charakterystyka trwałości
Podczas używania polecenia Remove-AzServiceFabricNodeType bezpieczeństwo ma wyższy priorytet 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 — 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ą z brązu może spowodować utratę informacji o stanie. Jeśli usuwasz typ węzła podstawowego, a aplikacja jest bezstanowa, brąz jest akceptowalny. Po uruchomieniu 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
Usunięcie typu węzła o nazwie Bronze oznacza natychmiastowe wyłączenie wszystkich węzłów typu węzła. Usługa Service Fabric nie wychwytuje żadnych aktualizacji zestawu skalowania węzłów z brązu, dlatego wszystkie maszyny wirtualne zostaną natychmiast wyłączone. Jeśli w tych węzłach znajduje się coś stanowego, dane zostaną utracone. Teraz, nawet jeśli jesteś bezstanowy, wszystkie węzły w usłudze Service Fabric uczestniczą w pierścieniu, więc cała okolica może zostać utracona, co może zdestabilizować sam klaster.
Usuwanie typu węzła
Przed rozpoczęciem procesu należy uwzględnić 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 umieszczenia wymaganej liczby replik.
Przenieś wszystkie usługi z ograniczeniami 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ł inicjatora.
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 na wyłączenie wszystkich węzłów
- W przypadku trwałości srebrnej i złotej niektóre węzły przechodzą do wyłączenia, a pozostałe zostaną wyłączone. 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 } }
Zaczekaj na oznaczenie wszystkich węzłów dla typu węzła 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 } }
Zaczekaj na usunięcie wszystkich węzłów 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ższej trwałości zaktualizuj zasób klastra w szablonie i skonfiguruj zasady kondycji tak, aby ignorowały kondycję sieci szkieletowej:/System application health, dodając
applicationDeltaHealthPolicies
w obszarze zasóbproperties
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 jest wymagane ponowne uruchomienie węzła. W takim 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 sprawdzeniu bezpieczeństwa wszystkich partycji w węźle usługa Service Fabric przejdzie do uaktualnienia 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 jest wyświetlany jako gotowy.
Usuń wszystkie odwołania do zasobów związanych z typem 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 wdrażania.
Usuń zasoby dotyczące typu węzła, które nie są już używane. Przykład Load Balancer 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 srebrnej i złotej wszystkie zadania naprawy pozostawione w klastrze, które są przeznaczone dla dowolnych węzłów, które znajdowały się w usuniętym typie węzła, należy wykonać za pomocą polecenia :
Complete-ServiceFabricRepairTask -TaskId <repair task name>
Uwaga
Ten krok jest opcjonalny, jeśli ten sam Load Balancer, a 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 Virtual Machine Scale Sets.
- Dowiedz się więcej o skalowaniu klastra usługi Service Fabric.