Udostępnij za pośrednictwem


Skalowanie w górę klastra usługi Service Fabric innego niż podstawowy typ węzła

W tym artykule opisano sposób skalowania klastra usługi Service Fabric w górę bez podstawowego typu węzła z minimalnym przestojem. Uaktualnienia jednostek SKU w miejscu nie są obsługiwane w węzłach klastra usługi Service Fabric, ponieważ takie operacje potencjalnie obejmują utratę danych i dostępności. Najbezpieczniejszą, najbardziej niezawodną i zalecaną metodą skalowania w górę typu węzła usługi Service Fabric jest:

  1. Dodaj nowy typ węzła do klastra usługi Service Fabric, wspierany przez uaktualnioną (lub zmodyfikowaną) jednostkę SKU zestawu skalowania maszyn wirtualnych i konfigurację. Ten krok obejmuje również skonfigurowanie nowego modułu równoważenia obciążenia, podsieci i publicznego adresu IP dla zestawu skalowania.

  2. Po uruchomieniu oryginalnych i uaktualnionych zestawów skalowania jednocześnie zmigruj obciążenie, ustawiając ograniczenia umieszczania aplikacji na nowy typ węzła.

  3. Sprawdź, czy klaster jest w dobrej kondycji, a następnie usuń oryginalny zestaw skalowania (i powiązane zasoby) oraz stan węzła dla usuniętych węzłów.

Poniższy przewodnik przeprowadzi Cię przez proces aktualizowania rozmiaru maszyny wirtualnej i systemu operacyjnego maszyn wirtualnych innych niż podstawowe maszyny wirtualne typu węzła przykładowego klastra z trwałością silver, wspierane przez pojedynczy zestaw skalowania z pięcioma węzłami używanymi jako typ węzła pomocniczego. Podstawowy typ węzła z usługami systemowymi usługi Service Fabric pozostanie nienaruszony. Uaktualnimy typ węzła innego niż podstawowy:

  • Od rozmiaru maszyny wirtualnej Standard_D2_V2 do D4_V2 w warstwie Standardowa i
  • Z systemu operacyjnego maszyny wirtualnej Windows Server 2019 Datacenter do systemu Windows Server 2022 Datacenter.

Ostrzeżenie

Przed podjęciem próby wykonania tej procedury w klastrze produkcyjnym zalecamy zapoznanie się z przykładowymi szablonami i zweryfikowanie procesu względem klastra testowego.

Nie należy podejmować próby wykonania procedury skalowania w górę typu węzła innego niż podstawowy, jeśli stan klastra jest w złej kondycji, ponieważ spowoduje to dalsze destabilizację klastra. Użyjemy krok po kroku szablonów wdrażania platformy Azure używanych w przewodniku Skalowanie w górę podstawowego typu węzła klastra usługi Service Fabric. Zmodyfikujemy je jednak tak, aby nie były specyficzne dla typów węzłów podstawowych. Szablony są dostępne w witrynie GitHub.

Konfigurowanie klastra testowego

Skonfigurujmy początkowy klaster testowy usługi Service Fabric. Najpierw pobierz przykładowe szablony usługi Azure Resource Manager, których użyjemy do ukończenia tego scenariusza.

Następnie zaloguj się do konta platformy Azure.

# Sign in to your Azure account
Login-AzAccount -SubscriptionId "<subscription ID>"

Następnie otwórz plik parameters.json i zaktualizuj wartość elementu na clusterName coś unikatowego (w obrębie platformy Azure).

Poniższe polecenia przeprowadzą Cię przez wygenerowanie nowego certyfikatu z podpisem własnym i wdrożenie klastra testowego. Jeśli masz już certyfikat, którego chcesz użyć, przejdź do sekcji Używanie istniejącego certyfikatu do wdrożenia klastra.

Generowanie certyfikatu z podpisem własnym i wdrażanie klastra

Najpierw przypisz zmienne potrzebne do wdrożenia klastra usługi Service Fabric. Dostosuj wartości dla resourceGroupName, , certSubjectNameparameterFilePathi templateFilePath dla określonego konta i środowiska:

# Assign deployment variables
$resourceGroupName = "sftestupgradegroup"
$certOutputFolder = "c:\certificates"
$certPassword = "Password!1" | ConvertTo-SecureString -AsPlainText -Force
$certSubjectName = "sftestupgrade.southcentralus.cloudapp.azure.com"
$parameterFilePath = "C:\parameters.json"
$templateFilePath = "C:\Initial-TestClusterSetup.json"

Uwaga

Przed uruchomieniem polecenia w celu wdrożenia nowego klastra usługi Service Fabric upewnij się, że certOutputFolder lokalizacja istnieje na komputerze lokalnym. Następnie wdróż klaster testowy usługi Service Fabric:

# Deploy the initial test cluster
New-AzServiceFabricCluster `
    -ResourceGroupName $resourceGroupName `
    -CertificateOutputFolder $certOutputFolder `
    -CertificatePassword $certPassword `
    -CertificateSubjectName $certSubjectName `
    -TemplateFile $templateFilePath `
    -ParameterFile $parameterFilePath

Po zakończeniu wdrażania znajdź plik PFX ($certPfx) na komputerze lokalnym i zaimportuj go do magazynu certyfikatów:

cd c:\certificates
$certPfx = ".\sftestupgradegroup20200312121003.pfx"
Import-PfxCertificate `
     -FilePath $certPfx `
     -CertStoreLocation Cert:\CurrentUser\My `
     -Password (ConvertTo-SecureString Password!1 -AsPlainText -Force)

Operacja zwróci odcisk palca certyfikatu, którego można teraz użyć do nawiązania połączenia z nowym klastrem i sprawdzenia jego stanu kondycji. (Pomiń następującą sekcję, która jest alternatywnym podejściem do wdrażania klastra).

Wdrażanie klastra przy użyciu istniejącego certyfikatu

Alternatywnie możesz użyć istniejącego certyfikatu usługi Azure Key Vault do wdrożenia klastra testowego. W tym celu należy uzyskać odwołania do usługi Key Vault i odcisku palca certyfikatu.

# Key Vault variables
$certUrlValue = "https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
$sourceVaultValue = "/subscriptions/########-####-####-####-############/resourceGroups/sftestupgradegroup/providers/Microsoft.KeyVault/vaults/sftestupgradegroup"
$thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"

Następnie należy wyznaczyć nazwę grupy zasobów dla klastra i ustawić templateFilePath lokalizacje i parameterFilePath :

Uwaga

Wyznaczona grupa zasobów musi już istnieć i znajdować się w tym samym regionie co usługa Key Vault.

$resourceGroupName = "sftestupgradegroup"
$templateFilePath = "C:\Initial-TestClusterSetup.json"
$parameterFilePath = "C:\parameters.json"

Na koniec uruchom następujące polecenie, aby wdrożyć początkowy klaster testowy:

# Deploy the initial test cluster
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

Nawiązywanie połączenia z nowym klastrem i sprawdzanie stanu kondycji

Połącz się z klastrem i upewnij się, że wszystkie pięć jego węzłów jest w dobrej kondycji (zastąp clusterName zmienne i thumb własnymi wartościami):

# Connect to the cluster
$clusterName = "sftestupgrade.southcentralus.cloudapp.azure.com:19000"
$thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
Connect-ServiceFabricCluster `
    -ConnectionEndpoint $clusterName `
    -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCertThumbprint $thumb  `
    -FindType FindByThumbprint `
    -FindValue $thumb `
    -StoreLocation CurrentUser `
    -StoreName My
# Check cluster health
Get-ServiceFabricClusterHealth

W tym celu możemy rozpocząć procedurę uaktualniania.

Wdrażanie nowego typu węzła innego niż podstawowy z uaktualnionym zestawem skalowania

Aby uaktualnić (skalowanie w pionie) typ węzła, najpierw będziemy musieli wdrożyć nowy typ węzła wspierany przez nowy zestaw skalowania i zasoby pomocnicze. Nowy zestaw skalowania zostanie oznaczony jako inny niż podstawowy (isPrimary: false), podobnie jak oryginalny zestaw skalowania. Jeśli chcesz skalować w górę typ węzła podstawowego, zobacz Skalowanie w górę typu węzła podstawowego klastra usługi Service Fabric. Zasoby utworzone w poniższej sekcji ostatecznie staną się nowym typem węzła w klastrze, a zasoby oryginalnego typu węzła zostaną usunięte.

Aktualizowanie szablonu klastra przy użyciu uaktualnionego zestawu skalowania

Poniżej przedstawiono modyfikacje sekcji po sekcji oryginalnego szablonu wdrożenia klastra w celu dodania nowego typu węzła i zasobów pomocniczych.

Większość wymaganych zmian w tym kroku została już wprowadzona w pliku szablonu Step1-AddPrimaryNodeType.json . Należy jednak wprowadzić dodatkową zmianę, aby plik szablonu działał dla typów węzłów innych niż podstawowe. W poniższych sekcjach szczegółowo wyjaśniono te zmiany, a objaśnienia zostaną wprowadzone, gdy musisz wprowadzić zmianę.

Uwaga

Upewnij się, że używasz nazw unikatowych od oryginalnego typu węzła, zestawu skalowania, modułu równoważenia obciążenia, publicznego adresu IP i podsieci oryginalnego typu węzła innego niż podstawowy, ponieważ te zasoby zostaną usunięte w późniejszym kroku procesu.

Tworzenie nowej podsieci w istniejącej sieci wirtualnej

{
    "name": "[variables('subnet1Name')]",
    "properties": {
        "addressPrefix": "[variables('subnet1Prefix')]"
    }
}

Tworzenie nowego publicznego adresu IP przy użyciu unikatowej nazwydomenyLabel

{
    "apiVersion": "[variables('publicIPApiVersion')]",
    "type": "Microsoft.Network/publicIPAddresses",
    "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))]",
    "location": "[variables('computeLocation')]",
    "properties": {
        "dnsSettings": {
            "domainNameLabel": "[concat(variables('dnsName'),'-','nt1')]"
        },
        "publicIPAllocationMethod": "Dynamic"
    },
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    }
}

Tworzenie nowego modułu równoważenia obciążenia dla publicznego adresu IP

"dependsOn": [
    "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType1Name')))]"
]

Tworzenie nowego zestawu skalowania maszyn wirtualnych (z uaktualnionymi jednostkami SKU maszyny wirtualnej i systemu operacyjnego)

Typ węzła — odwołanie

"nodeTypeRef": "[variables('vmNodeType1Name')]"

Jednostka SKU maszyny wirtualnej

"sku": {
    "name": "[parameters('vmNodeType1Size')]",
    "capacity": "[parameters('nt1InstanceCount')]",
    "tier": "Standard"
}

Jednostka SKU systemu operacyjnego

"imageReference": {
    "publisher": "[parameters('vmImagePublisher1')]",
    "offer": "[parameters('vmImageOffer1')]",
    "sku": "[parameters('vmImageSku1')]",
    "version": "[parameters('vmImageVersion1')]"
}

Upewnij się również, że dołączysz wszelkie dodatkowe rozszerzenia wymagane dla obciążenia.

Dodawanie nowego typu węzła innego niż podstawowy do klastra

Teraz, gdy nowy typ węzła (vmNodeType1Name) ma własną nazwę, podsieć, adres IP, moduł równoważenia obciążenia i zestaw skalowania, może ponownie używać wszystkich innych zmiennych z oryginalnego typu węzła (na przykład nt0applicationEndPort, nt0applicationStartPorti nt0fabricTcpGatewayPort).

W istniejącym pliku isPrimary szablonu parametr jest ustawiony dla true przewodnika Skalowanie w górę podstawowego typu węzła klastra usługi Service Fabric. Zmień isPrimary wartość na false dla typu węzła innego niż podstawowy:

"name": "[variables('vmNodeType1Name')]",
"applicationPorts": {
    "endPort": "[variables('nt0applicationEndPort')]",
    "startPort": "[variables('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[variables('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
    "endPort": "[variables('nt0ephemeralEndPort')]",
    "startPort": "[variables('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[variables('nt0fabricHttpGatewayPort')]",
"isPrimary": false,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt1InstanceCount')]"

Po zaimplementowaniu wszystkich zmian w plikach szablonów i parametrów przejdź do następnej sekcji, aby uzyskać odwołania do usługi Key Vault i wdrożyć aktualizacje w klastrze.

Uzyskiwanie odwołań do usługi Key Vault

Aby wdrożyć zaktualizowaną konfigurację, musisz mieć kilka odwołań do certyfikatu klastra przechowywanego w usłudze Key Vault. Najprostszym sposobem znalezienia tych wartości jest witryna Azure Portal. Potrzebne będą następujące elementy:

  • Adres URL usługi Key Vault certyfikatu klastra. W usłudze Key Vault w witrynie Azure Portal wybierz pozycję Certyfikaty>Żądany identyfikator wpisu tajnego certyfikatu:>

    $certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
    
  • Odcisk palca certyfikatu klastra. (Prawdopodobnie masz już to, jeśli nawiązaliśmy połączenie z klastrem początkowym, aby sprawdzić jego stan kondycji). W tym samym bloku certyfikatu (Certyfikaty Żądane certyfikaty>) w witrynie Azure Portal skopiuj odcisk palca SHA-1 (w formacie szesnastkowym) X.509:

    $thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
    
  • Identyfikator zasobu usługi Key Vault. W usłudze Key Vault w witrynie Azure Portal wybierz pozycję Właściwości>Identyfikator zasobu:

    $sourceVaultValue = "/subscriptions/########-####-####-####-############/resourceGroups/sftestupgradegroup/providers/Microsoft.KeyVault/vaults/sftestupgradegroup"
    

Wdrażanie zaktualizowanego szablonu

Dostosuj wartość zgodnie z potrzebami templateFilePath i uruchom następujące polecenie:

# Deploy the new node type and its resources
$templateFilePath = "C:\Step1-AddPrimaryNodeType.json"
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

Po zakończeniu wdrażania ponownie sprawdź kondycję klastra i upewnij się, że wszystkie węzły w obu typach węzłów są w dobrej kondycji.

Get-ServiceFabricClusterHealth

Migrowanie obciążeń do nowego typu węzła

Poczekaj, aż wszystkie aplikacje zostaną przeniesione do nowego typu węzła i będą w dobrej kondycji.

Wyłączanie węzłów w oryginalnym zestawie skalowania typu węzła

Po przeprowadzeniu migracji wszystkich węzłów inicjowanych do nowego zestawu skalowania można wyłączyć węzły oryginalnego zestawu skalowania.

# Disable the nodes in the original scale set.
$nodeType = "nt0vm"
$nodes = Get-ServiceFabricNode
Write-Host "Disabling nodes..."
foreach($node in $nodes)
{
  if ($node.NodeType -eq $nodeType)
  {
    $node.NodeName
    Disable-ServiceFabricNode -Intent RemoveNode -NodeName $node.NodeName -Force
  }
}

Użyj narzędzia Service Fabric Explorer, aby monitorować postęp węzłów w oryginalnym zestawie skalowania z wyłączeniem do stanu Wyłączone . Poczekaj, aż wszystkie węzły osiągną stan Wyłączone .

Zatrzymywanie danych w wyłączonych węzłach

Teraz możesz zatrzymać dane w wyłączonych węzłach.

# Stop data on the disabled nodes.
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
  }
}

Usuwanie oryginalnego typu węzła i czyszczenie zasobów

Możemy usunąć oryginalny typ węzła i skojarzone z nim zasoby, aby zakończyć procedurę skalowania w pionie.

Usuwanie oryginalnego zestawu skalowania

Najpierw usuń zestaw skalowania kopii zapasowych typu węzła.

$scaleSetName = "nt0vm"
$scaleSetResourceType = "Microsoft.Compute/virtualMachineScaleSets"
Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force

Usuwanie oryginalnych zasobów adresu IP i modułu równoważenia obciążenia

Możesz teraz usunąć oryginalny adres IP i zasoby modułu równoważenia obciążenia. W tym kroku zaktualizujesz również nazwę DNS.

Uwaga

Ten krok jest opcjonalny, jeśli używasz już publicznego adresu IP jednostki SKU w warstwie Standardowa i modułu równoważenia obciążenia. W takim przypadku można mieć wiele zestawów skalowania/typów węzłów w ramach tego samego modułu równoważenia obciążenia. Uruchom następujące polecenia, modyfikując $lbname wartość zgodnie z potrzebami.

# Delete the original IP and load balancer resources
$lbName = "LB-sftestupgrade-nt0vm"
$lbResourceType = "Microsoft.Network/loadBalancers"
$ipResourceType = "Microsoft.Network/publicIPAddresses"
$oldPublicIpName = "PublicIP-LB-FE-nt0vm"
$newPublicIpName = "PublicIP-LB-FE-nt1vm"
$oldPublicIP = Get-AzPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $resourceGroupName
$nonPrimaryDNSName = $oldNonPrimaryPublicIP.DnsSettings.DomainNameLabel
$nonPrimaryDNSFqdn = $oldNonPrimaryPublicIP.DnsSettings.Fqdn
Remove-AzResource -ResourceName $lbName -ResourceType $lbResourceType -ResourceGroupName $resourceGroupName -Force
Remove-AzResource -ResourceName $oldPublicIpName -ResourceType $ipResourceType -ResourceGroupName $resourceGroupName -Force
$PublicIP = Get-AzPublicIpAddress -Name $newPublicIpName  -ResourceGroupName $resourceGroupName
$PublicIP.DnsSettings.DomainNameLabel = $nonPrimaryDNSName
$PublicIP.DnsSettings.Fqdn = $nonPrimaryDNSFqdn
Set-AzPublicIpAddress -PublicIpAddress $PublicIP

Usuwanie stanu węzła z oryginalnego typu węzła

Węzły oryginalnego typu węzła będą teraz wyświetlać wartość Błąd dla stanu kondycji. Usuń stan węzła z klastra.

# Remove state of the obsolete nodes from the cluster
$nodeType = "nt0vm"
$nodes = Get-ServiceFabricNode
Write-Host "Removing node state..."
foreach($node in $nodes)
{
  if ($node.NodeType -eq $nodeType)
  {
    $node.NodeName
    Remove-ServiceFabricNodeState -NodeName $node.NodeName -Force
  }
}

Narzędzie Service Fabric Explorer powinno teraz odzwierciedlać tylko pięć węzłów nowego typu węzła (nt1vm), wszystkie z wartościami stanu kondycji ok. Korygujemy to dalej, aktualizując szablon w celu odzwierciedlenia najnowszych zmian i ponownego wdrożenia.

Zaktualizuj szablon wdrożenia, aby odzwierciedlał nowo skalowany w górę typ węzła innego niż podstawowy

Większość wymaganych zmian w tym kroku została już wprowadzona w pliku szablonu Step3-CleanupOriginalPrimaryNodeType.json . Należy jednak wprowadzić dodatkową zmianę, aby plik szablonu działał dla typów węzłów innych niż podstawowe. W poniższych sekcjach szczegółowo wyjaśniono te zmiany, a objaśnienia zostaną wprowadzone, gdy musisz wprowadzić zmianę.

Aktualizowanie punktu końcowego zarządzania klastrem

Zaktualizuj klaster managementEndpoint w szablonie wdrożenia, aby odwoływać się do nowego adresu IP (aktualizując vmNodeType0Name za pomocą vmNodeType1Name).

  "managementEndpoint": "[concat('https://',reference(concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]",

Usuń odwołanie do oryginalnego typu węzła

Usuń odwołanie do oryginalnego typu węzła z zasobu usługi Service Fabric w szablonie wdrożenia.

W istniejącym pliku isPrimary szablonu parametr jest ustawiony dla true przewodnika Skalowanie w górę podstawowego typu węzła klastra usługi Service Fabric. Zmień isPrimary wartość na false dla typu węzła innego niż podstawowy:

"name": "[variables('vmNodeType0Name')]",
"applicationPorts": {
    "endPort": "[variables('nt0applicationEndPort')]",
    "startPort": "[variables('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[variables('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
    "endPort": "[variables('nt0ephemeralEndPort')]",
    "startPort": "[variables('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[variables('nt0fabricHttpGatewayPort')]",
"isPrimary": false,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt0InstanceCount')]"

Konfigurowanie zasad kondycji w celu ignorowania istniejących błędów

Tylko w przypadku klastrów silver i wyższych trwałości zaktualizuj zasób klastra w szablonie i skonfiguruj zasady kondycji, aby zignorować fabric:/System kondycję aplikacji, dodając element applicationDeltaHealthPolicies w obszarze właściwości zasobów klastra, jak pokazano poniżej. Poniższe zasady będą ignorować istniejące błędy, ale nie zezwalają 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 
           } 
       } 
   } 
 } 
}

Usuwanie zasobów pomocniczych dla oryginalnego typu węzła

Usuń wszystkie inne zasoby związane z oryginalnym typem węzła z szablonu usługi ARM i pliku parametrów. Usuń następujące elementy:

    "vmImagePublisher": {
      "value": "MicrosoftWindowsServer"
    },
    "vmImageOffer": {
      "value": "WindowsServer"
    },
    "vmImageSku": {
      "value": "2019-Datacenter"
    },
    "vmImageVersion": {
      "value": "latest"
    },

Wdrażanie finalizowanego szablonu

Na koniec wdróż zmodyfikowany szablon usługi Azure Resource Manager.

# Deploy the updated template file
$templateFilePath = "C:\Step3-CleanupOriginalPrimaryNodeType"
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

Uwaga

Ten krok zajmie trochę czasu, zwykle do dwóch godzin. Uaktualnienie spowoduje zmianę ustawień usługi InfrastructureService, dlatego wymagane jest ponowne uruchomienie węzła. W takim przypadku polecenie forceRestart jest ignorowane. 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.

Po zakończeniu wdrażania sprawdź w witrynie Azure Portal, czy stan zasobu usługi Service Fabric jest gotowy. Sprawdź, czy możesz uzyskać dostęp do nowego punktu końcowego narzędzia Service Fabric Explorer, stan kondycji klastra ma wartość OK, a wszystkie wdrożone aplikacje działają prawidłowo.

W tym celu skalowano w pionie klaster, który nie jest podstawowym typem węzła!

Następne kroki