Delen via


Een primair knooppunttype voor Service Fabric-clusters omhoog schalen

In dit artikel wordt beschreven hoe u het primaire knooppunttype van een Service Fabric-cluster omhoog schaalt met minimale downtime. In-place SKU-upgrades worden niet ondersteund op Service Fabric-clusterknooppunten, zoals bewerkingen die mogelijk betrekking hebben op gegevens- en beschikbaarheidsverlies. De veiligste, meest betrouwbare en aanbevolen methode voor het omhoog schalen van een Service Fabric-knooppunttype is:

  1. Voeg een nieuw knooppunttype toe aan uw Service Fabric-cluster, ondersteund door de bijgewerkte (of gewijzigde) virtuele-machineschaalset en -configuratie. Deze stap omvat ook het instellen van een nieuwe load balancer, subnet en openbaar IP-adres voor de schaalset.

  2. Zodra zowel de oorspronkelijke als de bijgewerkte schaalsets naast elkaar worden uitgevoerd, schakelt u de oorspronkelijke knooppuntexemplaren één voor één uit, zodat de systeemservices (of replica's van stateful services) naar de nieuwe schaalset worden gemigreerd.

  3. Controleer of het cluster en de nieuwe knooppunten in orde zijn en verwijder vervolgens de oorspronkelijke schaalset (en gerelateerde resources) en de status van het knooppunt voor de verwijderde knooppunten.

Hieronder vindt u informatie over het proces voor het bijwerken van de VM-grootte en het besturingssysteem van het primaire knooppunttype VM's van een voorbeeldcluster met Silver-duurzaamheid, ondersteund door één schaalset met vijf knooppunten. Het primaire knooppunttype wordt bijgewerkt:

  • Van VM-grootte Standard_D2_V2 naar Standard-D4_V2, en
  • Van VM-besturingssysteem Windows Server 2019 Datacenter naar Windows Server 2022 Datacenter.

Waarschuwing

Voordat u deze procedure op een productiecluster uitvoert, raden we u aan de voorbeeldsjablonen te bestuderen en het proces te controleren op basis van een testcluster. Het cluster is mogelijk gedurende korte tijd ook niet beschikbaar.

Voer geen procedure voor het omhoog schalen van het primaire knooppunttype uit als de clusterstatus niet in orde is, omdat dit het cluster alleen verder zal stabiliseren.

De stapsgewijze Azure-implementatiesjablonen die we gebruiken om dit voorbeeldupgradescenario te voltooien, zijn beschikbaar op GitHub.

Het testcluster instellen

We gaan het eerste Service Fabric-testcluster instellen. Download eerst de Azure Resource Manager-voorbeeldsjablonen die we gaan gebruiken om dit scenario te voltooien.

Meld u vervolgens aan bij uw Azure-account.

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

Open vervolgens het bestand parameters.json en werk de waarde voor clusterName iets unieks bij (binnen Azure).

De volgende opdrachten helpen u bij het genereren van een nieuw zelfondertekend certificaat en het implementeren van het testcluster. Als u al een certificaat hebt dat u wilt gebruiken, gaat u naar Een bestaand certificaat gebruiken om het cluster te implementeren.

Een zelfondertekend certificaat genereren en het cluster implementeren

Wijs eerst de variabelen toe die u nodig hebt voor de implementatie van het Service Fabric-cluster. Pas de waarden voor resourceGroupName, certSubjectNameen parameterFilePathtemplateFilePath voor uw specifieke account en omgeving aan:

# 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"

Notitie

Zorg ervoor dat de certOutputFolder locatie op uw lokale computer aanwezig is voordat u de opdracht uitvoert om een nieuw Service Fabric-cluster te implementeren.

Implementeer vervolgens het Service Fabric-testcluster:

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

Zodra de implementatie is voltooid, zoekt u het PFX-bestand ($certPfx) op uw lokale computer en importeert u het in het certificaatarchief:

cd c:\certificates
$certPfx = ".\sftestupgradegroup20200312121003.pfx"

Import-PfxCertificate `
     -FilePath $certPfx `
     -CertStoreLocation Cert:\CurrentUser\My `
     -Password (ConvertTo-SecureString Password!1 -AsPlainText -Force)

De bewerking retourneert de vingerafdruk van het certificaat, die u nu kunt gebruiken om verbinding te maken met het nieuwe cluster en de status ervan te controleren. (Sla de volgende sectie over. Dit is een alternatieve benadering voor clusterimplementatie.)

Een bestaand certificaat gebruiken om het cluster te implementeren

U kunt ook een bestaand Azure Key Vault-certificaat gebruiken om het testcluster te implementeren. Hiervoor moet u verwijzingen naar uw Key Vault en certificaatvingerafdruk verkrijgen.

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

Wijs vervolgens een resourcegroepnaam voor het cluster aan en stel de templateFilePath en parameterFilePath locaties in:

Notitie

De aangewezen resourcegroep moet al bestaan en zich in dezelfde regio bevinden als uw Key Vault.

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

Voer ten slotte de volgende opdracht uit om het eerste testcluster te implementeren:

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

Verbinding maken met het nieuwe cluster en de status controleren

Maak verbinding met het cluster en zorg ervoor dat alle vijf de knooppunten in orde zijn (vervang de clusterName en thumb variabelen door uw eigen waarden):

# 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

Nu zijn we klaar om de upgradeprocedure te starten.

Een nieuw primair knooppunttype implementeren met een bijgewerkte schaalset

Als u een knooppunttype (verticaal schalen) wilt upgraden, moeten we eerst een nieuw knooppunttype implementeren dat wordt ondersteund door een nieuwe schaalset en ondersteunende resources. De nieuwe schaalset wordt gemarkeerd als primair (isPrimary: truenet als de oorspronkelijke schaalset). Als u een niet-primair knooppunttype wilt opschalen, raadpleegt u Een Service Fabric-cluster omhoog schalen als niet-primair knooppunttype. De resources die in de volgende sectie zijn gemaakt, worden uiteindelijk het nieuwe primaire knooppunttype in uw cluster en de oorspronkelijke resources van het primaire knooppunt worden verwijderd.

De clustersjabloon bijwerken met de bijgewerkte schaalset

Hier volgen de sectie-per-sectie-wijzigingen van de oorspronkelijke clusterimplementatiesjabloon voor het toevoegen van een nieuw primair knooppunttype en ondersteunende resources.

De vereiste wijzigingen voor deze stap zijn al voor u aangebracht in het sjabloonbestand Step1-AddPrimaryNodeType.json . Hieronder worden deze wijzigingen in detail uitgelegd. Als u wilt, kunt u de uitleg overslaan en doorgaan met het verkrijgen van uw Key Vault-verwijzingen en het implementeren van de bijgewerkte sjabloon waarmee een nieuw primair knooppunttype aan uw cluster wordt toegevoegd.

Notitie

Zorg ervoor dat u namen gebruikt die uniek zijn van het oorspronkelijke knooppunttype, schaalset, load balancer, openbaar IP-adres en subnet van het oorspronkelijke primaire knooppunttype, omdat deze resources in een latere stap in het proces worden verwijderd.

Een nieuw subnet maken in het bestaande virtuele netwerk

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

Een nieuw openbaar IP-adres maken met een uniek domainNameLabel

{
    "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')]"
    }
}

Een nieuwe load balancer maken voor het openbare IP-adres

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

Een nieuwe virtuele-machineschaalset maken (met bijgewerkte VM- en os-SKU's)

Verwijzing van knooppunttype

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

VM-SKU

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

SKU van het besturingssysteem

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

Als u de SKU van het besturingssysteem wijzigt in een Linux-cluster

In het Windows-cluster is de waarde voor eigenschap vmImage 'Windows' terwijl de waarde van dezelfde eigenschap voor het Linux-cluster de naam is van de gebruikte installatiekopie van het besturingssysteem. Gebruik bijvoorbeeld Ubuntu20_04 (gebruik de naam van de meest recente VM-installatiekopieën).

Als u dus de VM-installatiekopie (OS SKU) in een Linux-cluster wijzigt, werkt u ook de vmImage-instelling bij op de Service Fabric-clusterresource.

#Update the property vmImage with the required OS name in your ARM template
{
    "vmImage": "[parameter(newVmImageName]”
}

Opmerking: Voorbeeld van newVmImageName: Ubuntu20_04

U kunt de clusterresource ook bijwerken met behulp van de volgende PowerShell-opdracht:

# Update cluster vmImage to target OS. This registers the SF runtime package type that is supplied for upgrades.
Update-AzServiceFabricVmImage -ResourceGroupName $resourceGroup -ClusterName $clusterName -VmImage Ubuntu20_04

Zorg er ook voor dat u eventuele extra extensies opneemt die vereist zijn voor uw workload.

Een nieuw primair knooppunttype toevoegen aan het cluster

Nu het nieuwe knooppunttype (vmNodeType1Name) een eigen naam, subnet, IP, load balancer en schaalset heeft, kan het alle andere variabelen van het oorspronkelijke knooppunttype (zoals nt0applicationEndPort, nt0applicationStartPorten nt0fabricTcpGatewayPort):

"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": true,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt1InstanceCount')]"

Zodra u alle wijzigingen in uw sjabloon- en parameterbestanden hebt geïmplementeerd, gaat u verder met de volgende sectie om uw Key Vault-verwijzingen te verkrijgen en de updates in uw cluster te implementeren.

Uw Key Vault-verwijzingen verkrijgen

Als u de bijgewerkte configuratie wilt implementeren, hebt u verschillende verwijzingen nodig naar het clustercertificaat dat is opgeslagen in uw Key Vault. De eenvoudigste manier om deze waarden te vinden, is via Azure Portal. U hebt het volgende nodig:

  • De Key Vault-URL van uw clustercertificaat. Selecteer in uw Key Vault in De Azure-portal Certificaten>de gewenste certificaatgeheim-id:>

    $certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
    
  • De vingerafdruk van uw clustercertificaat. (Waarschijnlijk hebt u het certificaat al als u verbinding hebt met het eerste cluster om de status ervan te controleren.) Kopieer vanaf dezelfde certificaatblade (Certificaten>naar gewenst certificaat) in De Azure-portal X.509 SHA-1-vingerafdruk (in hex):

    $thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
    
  • De resource-id van uw sleutelkluis. Selecteer in uw Key Vault in De Azure-portal de resource-id eigenschappen>:

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

De bijgewerkte sjabloon implementeren

Pas de benodigde bewerkingen templateFilePath aan en voer de volgende opdracht uit:

# 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

Wanneer de implementatie is voltooid, controleert u de clusterstatus opnieuw en zorgt u ervoor dat alle knooppunten op beide knooppunttypen in orde zijn.

Get-ServiceFabricClusterHealth

Seed-knooppunten migreren naar het nieuwe knooppunttype

We zijn nu klaar om het oorspronkelijke knooppunttype bij te werken als niet-primair en beginnen met het uitschakelen van de knooppunten. Als de knooppunten worden uitgeschakeld, worden de systeemservices en seed-knooppunten van het cluster gemigreerd naar de nieuwe schaalset.

Het oorspronkelijke knooppunttype opheffen als primair

Verwijder eerst de isPrimary aanduiding in de sjabloon uit het oorspronkelijke knooppunttype.

{
    "isPrimary": false,
}

Implementeer vervolgens de sjabloon met de update. Met deze implementatie wordt de migratie van seed-knooppunten naar de nieuwe schaalset gestart.

$templateFilePath = "C:\Step2-UnmarkOriginalPrimaryNodeType.json"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

Notitie

Het duurt even voordat de seed-knooppuntmigratie naar de nieuwe schaalset is voltooid. Om gegevensconsistentie te garanderen, kan slechts één seed-knooppunt tegelijk worden gewijzigd. Elke seed-knooppuntwijziging vereist een clusterupdate; voor het vervangen van een seed-knooppunt zijn dus twee clusterupgrades vereist (één voor het toevoegen en verwijderen van knooppunten). Als u de vijf seed-knooppunten in dit voorbeeldscenario bijwerkt, worden er tien clusterupgrades uitgevoerd.

Gebruik Service Fabric Explorer om de migratie van seed-knooppunten naar de nieuwe schaalset te bewaken. De knooppunten van het oorspronkelijke knooppunttype (nt0vm) moeten allemaal onwaar zijn in de kolom Is Seed Node en die van het nieuwe knooppunttype (nt1vm) moeten waar zijn.

De knooppunten in de oorspronkelijke schaalset voor knooppunttypen uitschakelen

Zodra alle seed-knooppunten zijn gemigreerd naar de nieuwe schaalset, kunt u de knooppunten van de oorspronkelijke schaalset uitschakelen.

# 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
  }
}

Gebruik Service Fabric Explorer om de voortgang van knooppunten in de oorspronkelijke schaalset te controleren van Uitschakelen naar Uitgeschakelde status.

Service Fabric Explorer met de status van uitgeschakelde knooppunten

Voor duurzaamheid van Silver en Gold krijgen sommige knooppunten de status Uitgeschakeld, terwijl andere mogelijk de status Uitschakelen hebben. Controleer in Service Fabric Explorer het tabblad Details van knooppunten met de status Uitschakelen. Als ze een in behandeling zijnde veiligheidscontrole van het type EnsurePartitionQuorem weergeven (ervoor zorgen dat quorum voor infrastructuurservicepartities wordt gegarandeerd), is het veilig om door te gaan.

U kunt doorgaan met het stoppen van gegevens en het verwijderen van knooppunten die vastzitten in de status Uitschakelen als ze een in behandeling zijnde veiligheidscontrole van het type EnsurePartitionQuorum weergeven.

Als uw cluster de duurzaamheid brons is, wacht u totdat alle knooppunten de status Uitgeschakeld hebben.

Gegevens op de uitgeschakelde knooppunten stoppen

U kunt nu gegevens op de uitgeschakelde knooppunten stoppen.

# 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
  }
}

Het oorspronkelijke knooppunttype verwijderen en de bijbehorende resources opschonen

We zijn klaar om het oorspronkelijke knooppunttype en de bijbehorende resources te verwijderen om de verticale schaalprocedure te sluiten.

De oorspronkelijke schaalset verwijderen

Verwijder eerst de schaalset voor backing van het knooppunttype.

$scaleSetName = "nt0vm"
$scaleSetResourceType = "Microsoft.Compute/virtualMachineScaleSets"

Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force

De oorspronkelijke IP- en load balancer-resources verwijderen

U kunt nu het oorspronkelijke IP-adres en de load balancer-resources verwijderen. In deze stap werkt u ook de DNS-naam bij.

Notitie

Deze stap is optioneel als u al een openbaar IP-adres en een load balancer van de Standard-SKU gebruikt. In dit geval kunt u meerdere schaalsets/knooppunttypen hebben onder dezelfde load balancer.

Voer de volgende opdrachten uit, waarbij u de $lbname waarde indien nodig wijzigt.

# 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"

$oldPrimaryPublicIP = Get-AzPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $resourceGroupName
$primaryDNSName = $oldPrimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldPrimaryPublicIP.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 = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
Set-AzPublicIpAddress -PublicIpAddress $PublicIP

Knooppuntstatus verwijderen uit het oorspronkelijke knooppunttype

Op de oorspronkelijke knooppunten van het knooppunttype wordt nu Fout weergegeven voor de status van het knooppunt. Verwijder de status van het knooppunt uit het cluster.

# 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
  }
}

Service Fabric Explorer moet nu alleen de vijf knooppunten van het nieuwe knooppunttype (nt1vm) weergeven, allemaal met de statusstatuswaarden van OK. De status van het cluster wordt nog steeds Fout weergegeven. We herstellen dat vervolgens door de sjabloon bij te werken om de meest recente wijzigingen weer te geven en opnieuw te implementeren.

De implementatiesjabloon bijwerken om het zojuist opgeschaalde primaire knooppunttype weer te geven

De vereiste wijzigingen voor deze stap zijn al voor u aangebracht in het Step3-CleanupOriginalPrimaryNodeType.json sjabloonbestand. In de volgende secties worden deze sjabloonwijzigingen in detail uitgelegd. Als u wilt, kunt u de uitleg overslaan en doorgaan met het implementeren van de bijgewerkte sjabloon en de zelfstudie voltooien.

Het eindpunt voor clusterbeheer bijwerken

Werk het cluster managementEndpoint in de implementatiesjabloon bij om te verwijzen naar het nieuwe IP-adres (door vmNodeType0Name bij te werken met vmNodeType1Name).

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

De verwijzing naar het oorspronkelijke knooppunttype verwijderen

Verwijder de oorspronkelijke verwijzing naar het knooppunttype uit de Service Fabric-resource in de implementatiesjabloon:

"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": true,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt0InstanceCount')]"

Statusbeleid configureren om bestaande fouten te negeren

Alleen voor Silver- en hogere duurzaamheidsclusters werkt u de clusterresource in de sjabloon bij en configureert u statusbeleid om de toepassingsstatus te negeren fabric:/System door applicationDeltaHealthPolicies toe te voegen onder clusterresource-eigenschappen, zoals hieronder wordt aangegeven. Het onderstaande beleid negeert bestaande fouten, maar staat geen nieuwe statusfouten toe.

"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 
           } 
       } 
   } 
 } 
}

Ondersteunende resources verwijderen voor het oorspronkelijke knooppunttype

Verwijder alle andere resources met betrekking tot het oorspronkelijke knooppunttype uit de ARM-sjabloon en het parameterbestand. Verwijder het volgende:

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

De voltooide sjabloon implementeren

Implementeer ten slotte de gewijzigde Azure Resource Manager-sjabloon.

# Deploy the updated template file
$templateFilePath = "C:\Step3-CleanupOriginalPrimaryNodeType"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

Notitie

Deze stap duurt een tijdje, meestal maximaal twee uur.

Tijdens de upgrade worden de instellingen voor InfrastructureService gewijzigd. Daarom is opnieuw opstarten van het knooppunt nodig. In dit geval wordt forceRestart genegeerd. De parameter upgradeReplicaSetCheckTimeout geeft de maximale tijd aan die Service Fabric wacht tot een partitie in een veilige status is, als deze nog niet in een veilige status staat. Zodra de veiligheidscontroles zijn geslaagd voor alle partities op een knooppunt, gaat Service Fabric verder met de upgrade op dat knooppunt. De waarde voor de parameter upgradeTimeout kan worden teruggebracht tot 6 uur, maar voor maximale veiligheid 12 uur moet worden gebruikt.

Zodra de implementatie is voltooid, controleert u in Azure Portal of de Service Fabric-resourcestatus gereed is. Controleer of u het nieuwe Service Fabric Explorer-eindpunt kunt bereiken, of de status van het cluster ok is en of de geïmplementeerde toepassingen correct werken.

U hebt nu een primair clusterknooppunttype verticaal geschaald.

Volgende stappen