Vertikální navýšení kapacity primárního typu uzlu clusteru Service Fabric

Tento článek popisuje, jak vertikálně navýšit kapacitu primárního typu uzlu clusteru Service Fabric s minimálními výpadky. Místní upgrady skladových položek nejsou podporované v uzlech clusteru Service Fabric, protože tyto operace mohou zahrnovat ztrátu dat a dostupnosti. Nejbezpečnější, nejspolehlivější a doporučovanou metodou vertikálního navýšení kapacity uzlu typu Service Fabric je:

  1. Přidejte do clusteru Service Fabric nový typ uzlu podporovaný upgradovanou (nebo upravenou) skladovou položkou a konfigurací škálovací sady virtuálních počítačů. Tento krok také zahrnuje nastavení nového nástroje pro vyrovnávání zatížení, podsítě a veřejné IP adresy pro škálovací sadu.

  2. Jakmile původní i upgradované škálovací sady běží vedle sebe, zakažte jednu po druhé původní instance uzlů, aby se systémové služby (nebo repliky stavových služeb) migrovaly do nové škálovací sady.

  3. Ověřte, že cluster a nové uzly jsou v pořádku, a pak odeberte původní škálovací sadu (a související prostředky) a stav uzlu odstraněných uzlů.

Následující postup vás provede procesem aktualizace velikosti virtuálního počítače a operačního systému virtuálních počítačů typu primárního uzlu v ukázkovém clusteru se stříbrnou odolností, která je zajištěna jednou škálovací sadou s pěti uzly. Budeme upgradovat primární typ uzlu:

  • Z Standard_D2_V2 velikosti virtuálního počítače na standardní D4_V2 a
  • Z operačního systému virtuálního počítače s Windows Serverem 2019 Datacenter na Windows Server 2022 Datacenter.

Upozornění

Před pokusem o tento postup v produkčním clusteru doporučujeme prostudovat si ukázkové šablony a ověřit proces v testovacím clusteru. Cluster také může být po krátkou dobu nedostupný.

Nepokoušejte se vertikálně navyšovat kapacitu primárního uzlu, pokud stav clusteru není v pořádku, protože tím se cluster ještě více stabilizuje.

Podrobné šablony nasazení Azure, které použijeme k dokončení tohoto ukázkového scénáře upgradu, jsou k dispozici na GitHubu.

Nastavení testovacího clusteru

Pojďme nastavit počáteční testovací cluster Service Fabric. Nejprve si stáhněte ukázkové šablony Azure Resource Manager, které použijeme k dokončení tohoto scénáře.

Pak se přihlaste ke svému účtu Azure.

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

Pak otevřete soubor parameters.json a aktualizujte hodnotu pro clusterName na něco jedinečného (v rámci Azure).

Následující příkazy vás provedou vygenerováním nového certifikátu podepsaného svým držitelem a nasazením testovacího clusteru. Pokud už máte certifikát, který chcete použít, přejděte k části Použití existujícího certifikátu k nasazení clusteru.

Vygenerování certifikátu podepsaného svým držitelem a nasazení clusteru

Nejprve přiřaďte proměnné, které potřebujete pro nasazení clusteru Service Fabric. Upravte hodnoty pro resourceGroupName, certSubjectName, parameterFilePatha templateFilePath pro váš konkrétní účet a prostředí:

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

Poznámka

Před spuštěním certOutputFolder příkazu k nasazení nového clusteru Service Fabric se ujistěte, že umístění existuje na místním počítači.

Pak nasaďte testovací cluster Service Fabric:

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

Po dokončení nasazení vyhledejte soubor .pfx ($certPfx) na místním počítači a naimportujte ho do úložiště certifikátů:

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

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

Operace vrátí kryptografický otisk certifikátu, který teď můžete použít k připojení k novému clusteru a ke kontrole jeho stavu. (Následující část přeskočte, což je alternativní přístup k nasazení clusteru.)

Použití existujícího certifikátu k nasazení clusteru

Alternativně můžete k nasazení testovacího clusteru použít existující certifikát Azure Key Vault. K tomu potřebujete získat odkazy na Key Vault a kryptografický otisk certifikátu.

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

Dále určete název skupiny prostředků pro cluster a nastavte templateFilePath umístění a parameterFilePath :

Poznámka

Určená skupina prostředků už musí existovat a musí být umístěná ve stejné oblasti jako váš Key Vault.

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

Nakonec spuštěním následujícího příkazu nasaďte počáteční testovací cluster:

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

Připojení k novému clusteru a kontrola stavu

Připojte se ke clusteru a ujistěte se, že všech pět jeho uzlů je v pořádku (proměnné a thumb nahraďte clusterName vlastními hodnotami):

# 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

Teď jsme připraveni zahájit postup upgradu.

Nasazení nového primárního typu uzlu s upgradovanou škálovací sadou

Abychom mohli upgradovat (vertikálně škálovat) typ uzlu, musíme nejprve nasadit nový typ uzlu, který je podporovaný novou škálovací sadou a podpůrnými prostředky. Nová škálovací sada se označí jako primární (isPrimary: true) stejně jako původní škálovací sada. Pokud chcete vertikálně navýšit kapacitu jiného než primárního typu uzlu, přečtěte si téma Vertikální navýšení kapacity clusteru Service Fabric, který není primárním typem uzlu. Prostředky vytvořené v následující části se nakonec stanou novým primárním typem uzlu ve vašem clusteru a původní prostředky primárního typu uzlu se odstraní.

Aktualizace šablony clusteru pomocí upgradované škálovací sady

Tady jsou úpravy původní šablony nasazení clusteru v jednotlivých oddílech pro přidání nového primárního typu uzlu a podpůrných prostředků.

Požadované změny pro tento krok už byly provedeny v souboru šablony Step1-AddPrimaryNodeType.json a následující část tyto změny podrobně vysvětluje. Pokud chcete, můžete vysvětlení přeskočit a pokračovat v získávání Key Vault odkazů a nasadit aktualizovanou šablonu, která do clusteru přidá nový primární typ uzlu.

Poznámka

Ujistěte se, že používáte názvy, které jsou jedinečné z původního typu uzlu, škálovací sady, nástroje pro vyrovnávání zatížení, veřejné IP adresy a podsítě původního primárního typu uzlu, protože tyto prostředky se v pozdějším kroku procesu odstraní.

Vytvoření nové podsítě ve stávající virtuální síti

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

Vytvoření nové veřejné IP adresy s jedinečnou doménou 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')]"
    }
}

Vytvoření nového nástroje pro vyrovnávání zatížení pro veřejnou IP adresu

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

Vytvoření nové škálovací sady virtuálních počítačů (s upgradovanými skladovými jednotkami virtuálních počítačů a operačních systémů)

Odkaz na typ uzlu

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

Skladová položka virtuálního počítače

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

SKU operačního systému

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

Pokud měníte skladovou položku operačního systému v clusteru s Linuxem

V clusteru s Windows je hodnota vlastnosti vmImage "Windows", zatímco hodnota stejné vlastnosti pro cluster s Linuxem je název použité image operačního systému. Příklad: Ubuntu20_04(použijte název nejnovější image virtuálního počítače).

Pokud tedy měníte image virtuálního počítače (SKU operačního systému) v clusteru s Linuxem, aktualizujte nastavení vmImage také u prostředku clusteru Service Fabric.

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

Poznámka: Příklad newVmImageName: Ubuntu20_04

Prostředek clusteru můžete také aktualizovat pomocí následujícího příkazu PowerShellu:

# 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

Nezapomeňte také zahrnout všechna další rozšíření, která jsou pro vaši úlohu nutná.

Přidání nového primárního typu uzlu do clusteru

Když teď má nový typ uzlu (vmNodeType1Name) vlastní název, podsíť, IP adresu, nástroj pro vyrovnávání zatížení a škálovací sadu, může znovu použít všechny ostatní proměnné z původního typu uzlu (například nt0applicationEndPort, nt0applicationStartPorta 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')]"

Po implementaci všech změn v šabloně a souborech parametrů přejděte k další části, kde získáte odkazy na Key Vault a nasadíte aktualizace do clusteru.

Získání referencí Key Vault

Pokud chcete nasadit aktualizovanou konfiguraci, potřebujete několik odkazů na certifikát clusteru uložený v Key Vault. Nejjednodušší způsob, jak tyto hodnoty najít, je pomocí Azure Portal. Budete potřebovat:

  • Adresa URL Key Vault certifikátu clusteru. V Key Vault v Azure Portal vyberte Certifikáty> Požadovanýidentifikátor tajného klíčecertifikátu>:

    $certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
    
  • Kryptografický otisk certifikátu clusteru. (Pokud jste se připojili k počátečnímu clusteru, abyste zkontrolovali jeho stav, pravděpodobně už certifikát máte.) Ze stejného okna certifikátu (Certifikáty>požadovaný certifikát) v Azure Portal zkopírujte kryptografický otisk X.509 SHA-1 (v šestnáctkovém formátu):

    $thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
    
  • ID prostředku vašeho Key Vault. V Key Vault v Azure Portal vyberte Vlastnosti>ID prostředku:

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

Nasazení aktualizované šablony

templateFilePath Podle potřeby upravte a spusťte následující příkaz:

# 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 dokončení nasazení znovu zkontrolujte stav clusteru a ujistěte se, že jsou všechny uzly v obou typech uzlů v pořádku.

Get-ServiceFabricClusterHealth

Migrace počátečních uzlů na nový typ uzlu

Teď jsme připraveni aktualizovat původní typ uzlu na neprimární a začít zakazovat jeho uzly. Při zakázání uzlů se systémové služby a počáteční uzly clusteru migrují do nové škálovací sady.

Zrušení označení původního typu uzlu jako primárního

Nejprve odeberte isPrimary označení v šabloně z původního typu uzlu.

{
    "isPrimary": false,
}

Pak nasaďte šablonu s aktualizací. Toto nasazení zahájí migraci počátečních uzlů do nové škálovací sady.

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

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

Poznámka

Dokončení migrace počátečního uzlu do nové škálovací sady bude nějakou dobu trvat. Chcete-li zajistit konzistenci dat, může se najednou měnit pouze jeden počáteční uzel. Každá změna počátečního uzlu vyžaduje aktualizaci clusteru. Proto nahrazení počátečního uzlu vyžaduje dva upgrady clusteru (každý jeden pro přidání a odebrání uzlu). Upgrade pěti počátečních uzlů v tomto ukázkovém scénáři povede k deseti upgradům clusteru.

Pomocí Service Fabric Explorer můžete monitorovat migraci počátečních uzlů do nové škálovací sady. Uzly původního typu uzlu (nt0vm) by měly mít ve sloupci Je počáteční uzelhodnotu false a uzly nového typu uzlu (nt1vm) by měly mít hodnotu true.

Zakázání uzlů ve škálovací sadě původního typu uzlu

Po migraci všech počátečních uzlů do nové škálovací sady můžete uzly původní škálovací sady zakázat.

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

Pomocí Service Fabric Explorer můžete monitorovat průběh uzlů v původní škálovací sadě ze stavu Zakázáno do stavu Zakázáno.

Service Fabric Explorer se stavem zakázaných uzlů

V případě stříbrné a zlaté odolnosti přejdou některé uzly do zakázaného stavu, zatímco jiné můžou zůstat ve stavu zákazu . V Service Fabric Explorer zkontrolujte kartu Podrobnosti uzlů ve stavu Zakázání. Pokud se zobrazí čekající bezpečnostní kontrolatypu EnsurePartitionQuorem (zajištění kvora pro oddíly služby infrastruktury), je bezpečné pokračovat.

Pokud uzly zablokované ve stavu Zákaz zobrazují čekající bezpečnostní kontrolu Typu EnsurePartitionQuorum, můžete pokračovat v zastavování dat a odebírání uzlů.

Pokud je váš cluster bronzový, počkejte, až se všechny uzly dostanou do zakázaného stavu.

Zastavení dat na zakázaných uzlech

Teď můžete zastavit data na zakázaných uzlech.

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

Odeberte původní typ uzlu a vyčistěte jeho prostředky.

Jsme připraveni odebrat původní typ uzlu a jeho přidružené prostředky, abychom mohli dokončit postup vertikálního škálování.

Odebrání původní škálovací sady

Nejprve odeberte záložní škálovací sadu typu uzlu.

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

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

Odstranění původní IP adresy a prostředků nástroje pro vyrovnávání zatížení

Teď můžete odstranit původní IP adresu a prostředky nástroje pro vyrovnávání zatížení. V tomto kroku také aktualizujete název DNS.

Poznámka

Tento krok je volitelný, pokud už používáte veřejnou IP adresu a nástroj pro vyrovnávání zatížení se skladovou položkou Standard . V takovém případě můžete mít ve stejném nástroji pro vyrovnávání zatížení několik typů škálovacích sad nebo uzlů.

Spusťte následující příkazy a upravte $lbname hodnotu podle potřeby.

# 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

Odebrání stavu uzlu z původního typu uzlu

U uzlů původního typu uzlu se teď u jejich stavu zobrazí chyba. Odeberte stav uzlu z clusteru.

# 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 by teď mělo odrážet pouze pět uzlů nového typu uzlu (nt1vm), všechny s hodnotami stavu OK. Stav clusteru se bude i nadále zobrazovat Chyba. V dalším kroku to napravíme aktualizací šablony tak, aby odrážela nejnovější změny, a opětovným nasazením.

Aktualizace šablony nasazení tak, aby odrážela nově škálovaný typ primárního uzlu

Požadované změny pro tento krok už byly provedeny v souboru šablony Step3-CleanupOriginalPrimaryNodeType.json a následující části tyto změny šablony podrobně vysvětlují. Pokud chcete, můžete vysvětlení přeskočit a pokračovat v nasazení aktualizované šablony a dokončit kurz.

Aktualizace koncového bodu správy clusteru

Aktualizujte cluster managementEndpoint v šabloně nasazení tak, aby odkazoval na novou IP adresu (aktualizací vmNodeType0Name na vmNodeType1Name).

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

Odebrání odkazu na původní typ uzlu

Odeberte původní odkaz na typ uzlu z prostředku Service Fabric v šabloně nasazení:

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

Konfigurace zásad stavu tak, aby ignorovaly existující chyby

Pouze v případě clusterů Se stříbřitou a vyšší odolností aktualizujte prostředek clusteru v šabloně a nakonfigurujte zásady stavu tak, aby ignorovaly fabric:/System stav aplikace, a to přidáním applicationDeltaHealthPolicies do vlastností prostředků clusteru, jak je uvedeno níže. Následující zásady budou ignorovat stávající chyby, ale nepovolí nové chyby stavu.

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

Odebrání podpůrných prostředků pro původní typ uzlu

Odeberte všechny ostatní prostředky související s původním typem uzlu ze šablony ARM a ze souboru parametrů. Odstraňte následující položky:

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

Nasazení finalizované šablony

Nakonec nasaďte upravenou šablonu 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

Poznámka

Tento krok bude chvíli trvat, obvykle až dvě hodiny.

Upgrade změní nastavení na InfrastructureService. proto je nutné restartovat uzel. V tomto případě se forceRestart ignoruje. Parametr upgradeReplicaSetCheckTimeout určuje maximální dobu, po kterou Service Fabric čeká, než bude oddíl v bezpečném stavu, pokud ještě není v bezpečném stavu. Jakmile projdou bezpečnostní kontroly pro všechny oddíly na uzlu, Service Fabric pokračuje v upgradu na daném uzlu. Hodnotu parametru upgradeTimeout lze snížit na 6 hodin, ale pro maximální bezpečnost by se mělo použít 12 hodin.

Po dokončení nasazení ověřte v Azure Portal, že stav prostředku Service Fabric je Připraveno. Ověřte, že se můžete připojit k novému koncovému bodu Service Fabric Explorer, stav clusteru je v pořádku a že všechny nasazené aplikace fungují správně.

Teď jste vertikálně škálovali primární typ uzlu clusteru.

Další kroky