Service Fabric kümesi birincil düğüm türünün ölçeğini artırma

Bu makalede, bir Service Fabric kümesi birincil düğüm türünün en düşük kapalı kalma süresiyle nasıl ölçeklendirildiği açıklanır. Yerinde SKU yükseltmeleri Service Fabric küme düğümlerinde desteklenmez çünkü bu tür işlemler potansiyel olarak veri ve kullanılabilirlik kaybı içerir. Service Fabric düğüm türünün ölçeğini artırmak için en güvenli, en güvenilir ve önerilen yöntem:

  1. Yükseltilmiş (veya değiştirilmiş) sanal makine ölçek kümeniz SKU'su ve yapılandırması tarafından desteklenen yeni bir düğüm türünü Service Fabric kümenize ekleyin. Bu adım ayrıca ölçek kümesi için yeni bir yük dengeleyici, alt ağ ve genel IP ayarlamayı içerir.

  2. Hem özgün hem de yükseltilen ölçek kümeleri yan yana çalıştığında, sistem hizmetlerinin (veya durum bilgisi olan hizmetlerin çoğaltmalarının) yeni ölçek kümesine geçirilmesi için özgün düğüm örneklerini birer birer devre dışı bırakın.

  3. Kümenin ve yeni düğümlerin iyi durumda olduğunu doğrulayın, ardından silinen düğümler için özgün ölçek kümesini (ve ilgili kaynakları) ve düğüm durumunu kaldırın.

Aşağıda, beş düğümlü tek bir ölçek kümesi tarafından desteklenen , Silver dayanıklılığa sahip bir örnek kümenin birincil düğüm türü VM'lerinin VM boyutunu ve işletim sistemini güncelleştirme işleminde size yol gösterilir. Birincil düğüm türünü yükselteceğiz:

  • VM boyutu Standard_D2_V2Standart D4_V2 ve
  • VM işletim sisteminden Windows Server 2019 Datacenter'danWindows Server 2022 Datacenter'a.

Uyarı

Bu yordamı bir üretim kümesinde denemeden önce, örnek şablonları incelemenizi ve bir test kümesine karşı işlemi doğrulamanızı öneririz. Küme kısa bir süre için de kullanılamayabilir.

Küme durumu iyi durumda değilse birincil düğüm türü ölçeği artırma yordamını denemeyin çünkü bu durum yalnızca kümenin daha da istikrarını bozacaktır.

Bu örnek yükseltme senaryosunu tamamlamak için kullanacağımız adım adım Azure dağıtım şablonları GitHub'da kullanılabilir.

Test kümesini ayarlama

İlk Service Fabric test kümesini ayarlayalım. İlk olarak, bu senaryoyu tamamlamak için kullanacağımız Azure Resource Manager örnek şablonlarını indirin.

Ardından Azure hesabınızda oturum açın.

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

Ardından parameters.json dosyasını açın ve değerini clusterName benzersiz bir değerle (Azure içinde) güncelleştirin.

Aşağıdaki komutlar, yeni bir otomatik olarak imzalanan sertifika oluşturma ve test kümesini dağıtma konusunda size yol gösterir. Kullanmak istediğiniz bir sertifikanız zaten varsa, Kümeyi dağıtmak için var olan bir sertifikayı kullanma bölümüne atlayın.

Otomatik olarak imzalanan bir sertifika oluşturma ve kümeyi dağıtma

İlk olarak, Service Fabric küme dağıtımı için ihtiyacınız olan değişkenleri atayın. Hesabınız ve ortamınız için resourceGroupName, certSubjectName, parameterFilePathve templateFilePath değerlerini ayarlayın:

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

Not

certOutputFolder Yeni bir Service Fabric kümesi dağıtmak için komutunu çalıştırmadan önce yerel makinenizde konumun mevcut olduğundan emin olun.

Ardından Service Fabric test kümesini dağıtın:

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

Dağıtım tamamlandıktan sonra yerel makinenizde .pfx dosyasını ($certPfx) bulun ve sertifika deponuza aktarın:

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

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

İşlem, artık yeni kümeye bağlanmak ve sistem durumunu denetlemek için kullanabileceğiniz sertifika parmak izini döndürür. (Küme dağıtımına alternatif bir yaklaşım olan aşağıdaki bölümü atlayın.)

Kümeyi dağıtmak için var olan bir sertifikayı kullanma

Alternatif olarak, test kümesini dağıtmak için mevcut bir Azure Key Vault sertifikasını kullanabilirsiniz. Bunu yapmak için, Key Vault ve sertifika parmak izinize başvurular almanız gerekir.

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

Ardından küme için bir kaynak grubu adı belirleyin ve ve parameterFilePath konumlarını templateFilePath ayarlayın:

Not

Belirlenen kaynak grubu zaten mevcut olmalı ve Key Vault ile aynı bölgede bulunmalıdır.

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

Son olarak, ilk test kümesini dağıtmak için aşağıdaki komutu çalıştırın:

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

Yeni kümeye bağlanın ve sistem durumunu denetleyin

Kümeye bağlanın ve düğümlerinin beşinin de iyi durumda olduğundan emin olun (ve thumb değişkenlerini kendi değerlerinizle değiştirinclusterName):

# 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

Yükseltme yordamına başlamaya hazırız.

Yükseltilmiş ölçek kümesiyle yeni bir birincil düğüm türü dağıtma

Bir düğüm türünü yükseltmek (dikey olarak ölçeklendirmek) için öncelikle yeni bir ölçek kümesi ve destekleyici kaynaklar tarafından desteklenen yeni bir düğüm türü dağıtmamız gerekir. Yeni ölçek kümesi, aynı özgün ölçek kümesi gibi birincil ()isPrimary: true olarak işaretlenir. Birincil olmayan bir düğüm türünün ölçeğini genişletmek istiyorsanız bkz. Birincil olmayan bir Service Fabric kümesinin ölçeğini artırma düğüm türü. Aşağıdaki bölümde oluşturulan kaynaklar sonunda kümenizdeki yeni birincil düğüm türü olur ve özgün birincil düğüm türündeki kaynaklar silinir.

Küme şablonunu yükseltilmiş ölçek kümesiyle güncelleştirme

Yeni bir birincil düğüm türü ve destekleyici kaynaklar eklemek için özgün küme dağıtım şablonunun bölümler arası değişiklikleri aşağıdadır.

Bu adım için gerekli değişiklikler Step1-AddPrimaryNodeType.json şablon dosyasında sizin için zaten yapılmıştır ve aşağıda bu değişiklikler ayrıntılı olarak açıklanmaktadır. İsterseniz, açıklamayı atlayabilir ve Key Vault başvurularınızı edinmeye devam edebilir ve kümenize yeni bir birincil düğüm türü ekleyen güncelleştirilmiş şablonu dağıtabilirsiniz.

Not

Özgün düğüm türünden, ölçek kümesinden, yük dengeleyiciden, genel IP'den ve özgün birincil düğüm türünün alt ağından benzersiz adları kullandığınızdan emin olun; bu kaynaklar işlemin sonraki bir adımında silinir.

Mevcut sanal ağda yeni bir alt ağ oluşturma

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

Benzersiz bir domainNameLabel ile yeni bir genel IP oluşturma

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

Genel IP için yeni bir yük dengeleyici oluşturma

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

Yeni bir sanal makine ölçek kümesi oluşturma (yükseltilmiş VM ve işletim sistemi SKU'ları ile)

Düğüm Türü Başvurusu

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

VM SKU

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

İşletim sistemi SKU'su

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

Linux Kümesinde İşletim Sistemi SKU'su değiştiriliyorsa

Windows kümesinde vmImage özelliğinin değeri 'Windows', Linux kümesi için de aynı özelliğin değeri kullanılan işletim sistemi görüntüsünün adıdır. Örneğin - Ubuntu20_04 (en son vm görüntüsü adını kullanın).

Bu nedenle, bir Linux kümesindeki VM görüntüsünü (OS SKU) değiştiriyorsanız Service Fabric küme kaynağındaki vmImage ayarını da güncelleştirin.

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

Not: newVmImageName örneği: Ubuntu20_04

Küme kaynağını güncelleştirmek için aşağıdaki PowerShell komutunu da kullanabilirsiniz:

# 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

Ayrıca, iş yükünüz için gereken ek uzantıları eklediğinizden emin olun.

Kümeye yeni bir birincil düğüm türü ekleme

Artık yeni düğüm türünün (vmNodeType1Name) kendi adı, alt ağı, IP,yük dengeleyicisi ve ölçek kümesi olduğuna göre, özgün düğüm türünden (, ve nt0fabricTcpGatewayPortgibint0applicationEndPortnt0applicationStartPort) diğer tüm değişkenleri yeniden kullanabilir:

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

Şablon ve parametre dosyalarınızdaki tüm değişiklikleri uyguladıktan sonra, Key Vault başvurularınızı almak ve güncelleştirmeleri kümenize dağıtmak için sonraki bölüme geçin.

Key Vault başvurularınızı alma

Güncelleştirilmiş yapılandırmayı dağıtmak için, Key Vault depolanan küme sertifikasına birkaç başvuruya ihtiyacınız vardır. Bu değerleri bulmanın en kolay yolu Azure portal. Gerekenler:

  • Küme sertifikanızın Key Vault URL'si. Azure portal'daki Key Vault Sertifikalar>İstediğiniz sertifika>Gizli Dizi Tanımlayıcısı'nı seçin:

    $certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
    
  • Küme sertifikanızın parmak izi. (Sistem durumunu denetlemek için ilk kümeye bağlandıysanız sertifikaya zaten sahipsinizdir.) Azure portal'deki aynı sertifika dikey penceresinden (İstediğiniz sertifikayısertifikalar>) X.509 SHA-1 Parmak İzi'ni (onaltılık) kopyalayın:

    $thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
    
  • Key Vault Kaynak Kimliği. Azure portal'daki Key Vault ÖzelliklerKaynak Kimliği'ni> seçin:

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

Güncelleştirilmiş şablonu dağıtma

öğesini templateFilePath gerektiği gibi ayarlayın ve aşağıdaki komutu çalıştırın:

# 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

Dağıtım tamamlandığında kümenin sistem durumunu yeniden denetleyin ve her iki düğüm türündeki tüm düğümlerin iyi durumda olduğundan emin olun.

Get-ServiceFabricClusterHealth

Çekirdek düğümlerini yeni düğüm türüne geçirme

Artık özgün düğüm türünü birincil olmayan olarak güncelleştirmeye ve düğümlerini devre dışı bırakmaya başlamaya hazırız. Düğümler devre dışı bırakdıkça kümenin sistem hizmetleri ve çekirdek düğümleri yeni ölçek kümesine geçirildi.

Özgün düğüm türünün işaretini birincil olarak kaldırma

İlk olarak şablondaki gösterimi özgün düğüm türünden kaldırın isPrimary .

{
    "isPrimary": false,
}

Ardından şablonu güncelleştirmeyle dağıtın. Bu dağıtım, çekirdek düğümlerinin yeni ölçek kümesine geçişini başlatır.

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

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

Not

Yeni ölçek kümesine tohum düğümü geçişini tamamlamak biraz zaman alır. Veri tutarlılığını garanti etmek için aynı anda yalnızca bir tohum düğümü değişebilir. Her tohum düğümü değişikliği için bir küme güncelleştirmesi gerekir; bu nedenle bir çekirdek düğümünü değiştirmek için iki küme yükseltmesi gerekir (düğüm ekleme ve kaldırma için her biri bir tane). Bu örnek senaryoda beş çekirdek düğümlerinin yükseltilmesi on küme yükseltmesine neden olur.

Çekirdek düğümlerinin yeni ölçek kümesine geçişini izlemek için Service Fabric Explorer kullanın. Özgün düğüm türündeki (nt0vm) düğümlerin tümü, Çekirdek Düğümü sütununda false, yeni düğüm türündeki (nt1vm) düğümlerin de true olması gerekir.

Özgün düğüm türü ölçek kümesindeki düğümleri devre dışı bırakma

Tüm çekirdek düğümleri yeni ölçek kümesine geçirildikten sonra, özgün ölçek kümesinin düğümlerini devre dışı bırakabilirsiniz.

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

İlk ölçek kümesindeki düğümlerin Devre Dışı Bırakma durumundan Devre Dışı Durumuna geçişini izlemek için Service Fabric Explorer kullanın.

Devre dışı bırakılan düğümlerin durumunu gösteren Service Fabric Explorer

Silver ve Gold dayanıklılığı için bazı düğümler Devre Dışı durumuna geçerken, diğerleri Devre Dışı Bırakma durumunda kalabilir. Service Fabric Explorer'da, Devre dışı bırakma durumundaki düğümlerin Ayrıntılar sekmesine bakın. Bir Tür Bekleyen Güvenlik DenetimiGösteriyorsa EnsurePartitionQuorem (altyapı hizmeti bölümleri için çekirdek sağlama), devam etmek güvenlidir.

'EnsurePartitionQuorum' türünde bekleyen bir güvenlik denetimi gösteriyorsa verileri durdurma ve 'Devre dışı bırakma' durumunda takılı kalan düğümleri kaldırma işlemine devam edebilirsiniz.

Kümeniz Bronz dayanıklılık ise, tüm düğümlerin Devre dışı durumuna ulaşmasını bekleyin.

Devre dışı bırakılan düğümlerde verileri durdurma

Artık devre dışı bırakılan düğümlerde verileri durdurabilirsiniz.

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

Özgün düğüm türünü kaldırma ve kaynaklarını temizleme

Dikey ölçeklendirme yordamını sona erdirmek için özgün düğüm türünü ve ilişkili kaynaklarını kaldırmaya hazırız.

Özgün ölçek kümesini kaldırma

İlk olarak düğüm türünün yedekleme ölçek kümesini kaldırın.

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

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

Özgün IP ve yük dengeleyici kaynaklarını silme

Artık özgün IP'yi ve yük dengeleyici kaynaklarını silebilirsiniz. Bu adımda DNS adını da güncelleştireceksiniz.

Not

Standart SKU genel IP'sini ve yük dengeleyiciyi zaten kullanıyorsanız bu adım isteğe bağlıdır. Bu durumda aynı yük dengeleyici altında birden çok ölçek kümesi /düğüm türü olabilir.

Aşağıdaki komutları çalıştırarak $lbname değeri gerektiği gibi değiştirin.

# 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

Özgün düğüm türünden düğüm durumunu kaldırma

Özgün düğüm türü düğümleri artık Sistem Durumu için Hata gösterecektir. Düğüm durumunu kümeden kaldırın.

# 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 artık yeni düğüm türünün (nt1vm) yalnızca beş düğümünü yansıtması gerekir ve bunların tümü Tamam Sistem Durumu değerlerine sahip olmalıdır. Küme Sistem Durumu'nuzda Hata gösterilmeye devam edecektir. Bundan sonra şablonu en son değişiklikleri yansıtacak şekilde güncelleştirerek ve yeniden dağıtarak bunu düzelteceğiz.

Dağıtım şablonunu yeni ölçeklendirilen birincil düğüm türünü yansıtacak şekilde güncelleştirin

Bu adım için gerekli değişiklikler Step3-CleanupOriginalPrimaryNodeType.json şablon dosyasında sizin için zaten yapılmıştır ve aşağıdaki bölümlerde bu şablon değişiklikleri ayrıntılı olarak açıklanmaktadır. İsterseniz, açıklamayı atlayabilir ve güncelleştirilmiş şablonu dağıtmaya devam edebilir ve öğreticiyi tamamlayabilirsiniz.

Küme yönetim uç noktasını güncelleştirme

Yeni IP'ye başvurmak için dağıtım şablonundaki kümeyi managementEndpoint güncelleştirin ( vmNodeType0Name değerini vmNodeType1Name ile güncelleştirerek).

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

Özgün düğüm türü başvuruyu kaldırma

Dağıtım şablonundaki Service Fabric kaynağından özgün düğüm türü başvurusunu kaldırın:

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

Sistem durumu ilkelerini mevcut hataları yoksayacak şekilde yapılandırma

Yalnızca Silver ve daha yüksek dayanıklılığa sahip kümeler için şablondaki küme kaynağını güncelleştirin ve aşağıda gösterildiği gibi küme kaynağı özellikleri altına applicationDeltaHealthPolicies ekleyerek sistem durumu ilkelerini uygulama durumunu yoksayacak fabric:/System şekilde yapılandırın. Aşağıdaki ilke mevcut hataları yoksayar ancak yeni sistem durumu hatalarına izin vermez.

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

Özgün düğüm türü için destekleyici kaynakları kaldırma

ÖZGÜN düğüm türüyle ilgili diğer tüm kaynakları ARM şablonundan ve parametre dosyasından kaldırın. Aşağıdakileri silin:

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

Son haline getirilmiş şablonu dağıtma

Son olarak, değiştirilen Azure Resource Manager şablonunu dağıtın.

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

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

Not

Bu adım genellikle iki saate kadar sürebilir.

Yükseltme, ayarları InfrastructureService olarak değiştirir; bu nedenle, bir düğümün yeniden başlatılması gerekir. Bu durumda forceRestart yoksayılır. parametresi upgradeReplicaSetCheckTimeout , Service Fabric'in bir bölümün güvenli durumda olmasını beklediği en uzun süreyi (güvenli durumda değilse) belirtir. Bir düğümdeki tüm bölümler için güvenlik denetimleri geçtikten sonra Service Fabric bu düğümdeki yükseltmeye devam eder. Parametrenin upgradeTimeout değeri 6 saate düşürülebilir, ancak en yüksek güvenlik için 12 saat kullanılmalıdır.

Dağıtım tamamlandıktan sonra Azure portal Service Fabric kaynak Durumunun Hazır olduğunu doğrulayın. Yeni Service Fabric Explorer uç noktasına ulaşabildiğinizi, Küme Sistem Durumu'nauygun olduğunu ve dağıtılan uygulamaların düzgün çalıştığını doğrulayın.

Şimdi bir küme birincil düğüm türünü dikey olarak ölçeklendirdiniz!

Sonraki adımlar