Bir kümenin ölçeğini daraltma veya genişletme

Uyarı

Ölçeklendirmeden önce bu bölümü okuyun

Uygulama iş yükünüzü kaynak olarak sağlamak için işlem kaynaklarını ölçeklendirmek kasıtlı planlama gerektirir, üretim ortamı için tamamlanması neredeyse her zaman bir saatten uzun sürer ve iş yükünüzü ve iş bağlamınızı anlamanız gerekir; aslında bu etkinliği daha önce hiç yapmadıysanız, bu belgenin geri kalanına devam etmeden önce Service Fabric küme kapasitesi planlama konularını okuyarak ve anlayarak başlamanız önerilir. Bu öneri, istenmeyen LiveSite sorunlarından kaçınmaktır ve ayrıca üretim dışı bir ortamda gerçekleştirmeye karar vereceğiniz işlemleri başarılı bir şekilde test etmenizi öneririz. İstediğiniz zaman üretim sorunlarını bildirebilir veya Azure için ücretli destek isteyebilirsiniz. Uygun bağlama sahip bu işlemleri gerçekleştirmek üzere ayrılan mühendisler için, bu makalede ölçeklendirme işlemleri açıklanır, ancak hangi işlemlerin kullanım örneğiniz için uygun olduğuna karar vermeniz ve anlamanız gerekir; ölçeklendirilecek kaynaklar (CPU, Depolama, Bellek), ölçeklendirme yönü (Dikey veya Yatay) ve gerçekleştirilecek işlemler (Kaynak Şablonu dağıtımı, Portal, PowerShell/CLI) gibi.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Otomatik ölçeklendirme kurallarını kullanarak veya el ile Service Fabric kümesinin ölçeğini daraltma veya genişletme

Sanal makine ölçek kümeleri, bir sanal makine koleksiyonunu küme olarak dağıtmak ve yönetmek için kullanabileceğiniz bir Azure işlem kaynağıdır. Service Fabric kümesinde tanımlanan her düğüm türü ayrı bir sanal makine ölçek kümesi olarak ayarlanır. Ardından her düğüm türü bağımsız olarak ölçeklendirilebilir veya genişletilebilir, farklı bağlantı noktası kümeleri açık olabilir ve farklı kapasite ölçümlerine sahip olabilir. Service Fabric düğüm türleri belgesinde bu konuda daha fazla bilgi edinin. Kümenizdeki Service Fabric düğüm türleri arka uçtaki sanal makine ölçek kümelerinden yapıldığından, her düğüm türü/sanal makine ölçek kümesi için otomatik ölçeklendirme kuralları ayarlamanız gerekir.

Not

Aboneliğinizin bu kümeyi oluşturan yeni VM'leri eklemek için yeterli çekirdeği olması gerekir. Şu anda model doğrulaması yoktur, bu nedenle kota sınırlarından herhangi birine ulaşılırsa dağıtım süresi hatası alırsınız.

Not

Hyper-V rolü etkinken Windows işletim sistemi görüntüsü kullanılıyorsa, örneğin. vm iç içe sanallaştırma için yapılandırılır, Kullanılabilir Bellek Ölçümü kullanılamaz, çünkü VM içindeki dinamik bellek sürücüsü durdurulmuş durumda olur.

Ölçeklendirilecek düğüm türünü/Sanal Makine ölçek kümesini seçin

Şu anda portalı kullanarak Bir Service Fabric Kümesi oluşturmak için sanal makine ölçek kümeleri için otomatik ölçeklendirme kurallarını belirtemediğiniz için düğüm türlerini listelemek ve sonra bunlara otomatik ölçeklendirme kuralları eklemek için Azure PowerShell (1.0+) kullanalım.

Kümenizi oluşturan sanal makine ölçek kümelerinin listesini almak için aşağıdaki cmdlet'leri çalıştırın:

Get-AzResource -ResourceGroupName <RGname> -ResourceType Microsoft.Compute/VirtualMachineScaleSets

Get-AzVmss -ResourceGroupName <RGname> -VMScaleSetName <virtual machine scale set name>

Düğüm türü/sanal makine ölçek kümesi için otomatik ölçeklendirme kuralları ayarlama

Kümenizde birden çok düğüm türü varsa, ölçeklendirmek istediğiniz (içeri veya dışarı) her düğüm türü/sanal makine ölçek kümesi için bu işlemi yineleyin. Otomatik ölçeklendirmeyi ayarlamadan önce sahip olmanız gereken düğüm sayısını dikkate alın. Birincil düğüm türü için gereken düğüm sayısı alt sınırı seçmiş olduğunuz güvenilirlik düzeyi tarafından yönetilir. Güvenilirlik düzeyleri hakkında daha fazla bilgi edinin.

Not

Birincil düğüm türünün minimum sayıdan küçük bir değere ölçeklenmesi, kümenin kararsız olmasına ve hatta azaltmasına neden olur. Bu, uygulamalarınız ve sistem hizmetleri için veri kaybına neden olabilir.

Şu anda otomatik ölçeklendirme özelliği, uygulamalarınızın Service Fabric'e bildirdiği yükler tarafından yönlendirilmemektedir. Bu nedenle, şu anda elde ettiğiniz otomatik ölçeklendirme yalnızca sanal makine ölçek kümesi örneklerinin her biri tarafından yayılan performans sayaçları tarafından yönlendirilir.

Her sanal makine ölçek kümesi için otomatik ölçeklendirmeyi ayarlamak için bu yönergeleri izleyin.

Not

Bir senaryoda, düğüm türünüzün dayanıklılık düzeyi Altın veya Gümüş değilse uygun düğüm adıyla Remove-ServiceFabricNodeState cmdlet'ini çağırmanız gerekir. Bronz dayanıklılığı için, bir kerede birden fazla düğümde ölçeklendirmek önerilmez.

Vm'leri düğüm türüne/sanal makine ölçek kümesine el ile ekleme

Ölçeği genişlettiğinizde, ölçek kümesine daha fazla sanal makine örneği eklersiniz. Bu örnekler, Service Fabric tarafından kullanılan düğümler haline gelir. Service Fabric, ölçek kümesine ne zaman daha fazla örnek eklendiğini bilir (ölçek genişletilerek) ve otomatik olarak tepki verir.

Not

VM'lerin eklenmesi zaman alır, bu nedenle eklemelerin anlık olmasını beklemeyin. Çoğaltmaların/hizmet örneklerinin yerleştirilmesi için VM kapasitesinin kullanılabilir duruma gelmesi için 10 dakikadan fazla süre tanıyarak kapasiteyi önceden eklemeyi planlayın.

Şablon kullanarak VM ekleme

Her düğüm türündeki VM sayısını değiştirmek için hızlı başlangıç şablonu galerisindeki örneği/yönergeleri izleyin.

PowerShell veya CLI komutlarını kullanarak VM ekleme

Aşağıdaki kod, ada göre bir ölçek kümesi alır ve ölçek kümesinin kapasitesini 1 artırır.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity += 1

Update-AzVmss -ResourceGroupName $scaleset.ResourceGroupName -VMScaleSetName $scaleset.Name -VirtualMachineScaleSet $scaleset

Bu kod, kapasiteyi 6 olarak ayarlar.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 6

Vm'leri düğüm türünden/sanal makine ölçek kümesinden el ile kaldırma

Bir düğüm türüne ölçeklendirdiğinizde, ölçek kümesinden VM örneklerini kaldırırsınız. Düğüm türü Bronz dayanıklılık düzeyi ise, Service Fabric ne olduğunu fark etmez ve bir düğümün kaybolduğunu bildirir. Daha sonra Service Fabric, küme için kötü bir durum olduğunu bildirir. Bu kötü durumu önlemek için düğümü kümeden açıkça kaldırmanız ve düğüm durumunu kaldırmanız gerekir.

Service Fabric sistem hizmetleri kümenizdeki birincil düğüm türünde çalışır. Birincil düğüm türünde ölçeklendirme yaparken, hiçbir zaman örnek sayısını güvenilirlik katmanının garanti ettiğinden daha az olacak şekilde ölçeklendirmeyin.

Durum bilgisi olan bir hizmet için, kullanılabilirliği korumak ve hizmetinizin durumunu korumak için her zaman belirli sayıda düğüme sahip olmanız gerekir. En azından, bölümün/hizmetin hedef çoğaltma kümesi sayısına eşit düğüm sayısına ihtiyacınız vardır.

Service Fabric düğümünü kaldırma

Düğüm durumunu el ile kaldırma adımları yalnızca Bronz dayanıklılık katmanına sahip düğüm türleri için geçerlidir. Silver ve Gold dayanıklılık katmanı için bu adımlar platform tarafından otomatik olarak gerçekleştirilir. Dayanıklılık hakkında daha fazla bilgi için bkz. Service Fabric küme kapasitesi planlaması.

Not

Dayanıklılık düzeyi Altın veya Gümüş olan herhangi bir sanal makine ölçek kümesi için en az beş düğüm sayısını koruyun. Bu eşiğin altına ölçeklendirirseniz kümeniz hata durumuna girer ve kaldırılan düğümleri el ile temizlemeniz gerekir.

Küme düğümlerini yükseltme ve hata etki alanlarına eşit olarak dağıtarak eşit bir şekilde kullanılmalarını sağlamak için önce en son oluşturulan düğümün kaldırılması gerekir. Başka bir deyişle düğümler, oluşturma sırasının tersine kaldırılmalıdır. En son oluşturulan düğüm, virtual machine scale set InstanceId özelliğinin değeri en yüksek olandır. Aşağıdaki kod örnekleri en son oluşturulan düğümü döndürür.

Get-ServiceFabricNode | Sort-Object NodeInstanceId -Descending | Select-Object -First 1
sfctl node list --query "sort_by(items[*], &name)[-1]"

Service Fabric kümesinin, bu düğümün kaldırılacağını bilmesi gerekir. Uygulamanız gereken üç adım vardır:

  1. Artık veriler için çoğaltma olmaması için düğümü devre dışı bırakın.
    PowerShell: Disable-ServiceFabricNode
    sfctl: sfctl node disable

  2. Service Fabric çalışma zamanının düzgün şekilde kapanması ve uygulamanızın bir sonlandırma isteği alması için düğümü durdurun.
    PowerShell: Start-ServiceFabricNodeTransition -Stop
    sfctl: sfctl node transition --node-transition-type Stop

  3. Kümeden düğümü kaldırın.
    PowerShell: Remove-ServiceFabricNodeState
    sfctl: sfctl node remove-state

Bu üç adım düğüme uygulandıktan sonra ölçek kümesinden kaldırılabilir. Bronz’un yanı sıra dayanıklılık katmanları kullanıyorsanız ölçek kümesi örneği kaldırıldığında bu adımlar sizin için uygulanır.

Aşağıdaki kod bloğu, en son oluşturulan düğümü alır, düğümü devre dışı bırakır, durdurur ve kümeden kaldırır.

#### After you've connected.....
# Get the node that was created last
$node = Get-ServiceFabricNode | Sort-Object { $_.NodeName.Substring($_.NodeName.LastIndexOf('_') + 1) } -Descending | Select-Object -First 1

# Node details for the disable/stop process
$nodename = $node.NodeName
$nodeid = $node.NodeInstanceId

$loopTimeout = 10

# Run disable logic
Disable-ServiceFabricNode -NodeName $nodename -Intent RemoveNode -TimeoutSec 300 -Force

$state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus

while (($state -ne [System.Fabric.Query.NodeStatus]::Disabled) -and ($loopTimeout -ne 0))
{
    Start-Sleep 5
    $loopTimeout -= 1
    $state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus
    Write-Host "Checking state... $state found"
}

# Exit if the node was unable to be disabled
if ($state -ne [System.Fabric.Query.NodeStatus]::Disabled)
{
    Write-Error "Disable failed with state $state"
}
else
{
    # Stop node
    $stopid = New-Guid
    Start-ServiceFabricNodeTransition -Stop -OperationId $stopid -NodeName $nodename -NodeInstanceId $nodeid -StopDurationInSeconds 300

    $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
    $loopTimeout = 10

    # Watch the transaction
    while (($state -eq [System.Fabric.TestCommandProgressState]::Running) -and ($loopTimeout -ne 0))
    {
        Start-Sleep 5
        $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
        Write-Host "Checking state... $state found"
    }

    if ($state -ne [System.Fabric.TestCommandProgressState]::Completed)
    {
        Write-Error "Stop transaction failed with $state"
    }
    else
    {
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $nodename -TimeoutSec 300 -Force
    }
}

Aşağıdaki sfctl kodunda, en son oluşturulan düğümün node-name değerini almak için şu komut kullanılır: sfctl node list --query "sort_by(items[*], &name)[-1].name"

# Inform the node that it is going to be removed
sfctl node disable --node-name _nt1vm_5 --deactivation-intent 4 -t 300

# Stop the node using a random guid as our operation id
sfctl node transition --node-instance-id 131541348482680775 --node-name _nt1vm_5 --node-transition-type Stop --operation-id c17bb4c5-9f6c-4eef-950f-3d03e1fef6fc --stop-duration-in-seconds 14400 -t 300

# Remove the node from the cluster
sfctl node remove-state --node-name _nt1vm_5

İpucu

Her bir adımın durumunu denetlemek için şu sfctl sorgularını kullanın

Devre dışı bırakma durumunu denetlemesfctl node list --query "sort_by(items[*], &name)[-1].nodeDeactivationInfo"

Durdurma durumunu denetlemesfctl node list --query "sort_by(items[*], &name)[-1].isStopped"

Ölçek kümesinin ölçeğini daraltma

Şimdi Service Fabric düğümü kümeden kaldırıldığına göre sanal makine ölçek kümesinin ölçeği daraltılabilir. Aşağıdaki örnekte, ölçek kümesi kapasitesi 1 azaltılır.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity -= 1

Update-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm -VirtualMachineScaleSet $scaleset

Bu kod, kapasiteyi 5 olarak ayarlar.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 5

Service Fabric Explorer gözlemlediğiniz davranışlar

Bir kümenin ölçeğini genişlettiğiniz zaman, Service Fabric Explorer kümenin parçası olan düğüm sayısını (sanal makine ölçek kümesi örnekleri) yansıtır. Ancak, içindeki bir kümeyi ölçeklendirirken, remove-ServiceFabricNodeState cmd'sini uygun düğüm adıyla çağırmadığınız sürece kaldırılan düğüm/VM örneğinin iyi durumda olmadığını görürsünüz.

Bu davranışın açıklaması aşağıdadır.

Service Fabric Explorer'de listelenen düğümler, Service Fabric sistem hizmetlerinin (FM özel olarak) kümenin sahip olduğu/sahip olduğu düğüm sayısı hakkında bildiklerinin bir yansımasıdır. Sanal makine ölçek kümesinin ölçeğini daralttığınızda VM silindi ancak FM sistem hizmeti yine de düğümün (silinen VM'ye eşlenmiş olan) geri geleceğini düşünüyor. Bu nedenle Service Fabric Explorer düğümü görüntülemeye devam eder (sistem durumu hata veya bilinmeyen olabilir).

VM kaldırıldığında düğümün kaldırıldığından emin olmak için iki seçeneğiniz vardır:

  1. Kümenizdeki düğüm türleri için dayanıklılık düzeyi olan Gold veya Silver'ı seçerek altyapı tümleştirmesini sağlayın. Ölçeği daralttığınızda düğümler sistem hizmetleri (FM) durumumuzdan otomatik olarak kaldırılır. Dayanıklılık düzeyleriyle ilgili ayrıntılara buradan bakın

Not

Dayanıklılık düzeyi Altın veya Gümüş olan herhangi bir sanal makine ölçek kümesi için en az beş düğüm sayısını koruyun. Bu eşiğin altına ölçeklendirirseniz kümeniz hata durumuna girer ve kaldırılan düğümleri el ile temizlemeniz gerekir.

  1. VM örneği ölçeklendirildikten sonra Remove-ServiceFabricNodeState cmdlet'ini çağırmanız gerekir.

Not

Service Fabric kümeleri, kullanılabilirliği korumak ve durumu korumak için her zaman belirli sayıda düğümün açık olmasını gerektirir. Bu durum "çekirdeği koruma" olarak adlandırılır. Bu nedenle, durumunuzun tam yedeklemesini ilk kez gerçekleştirmediğiniz sürece kümedeki tüm makineleri kapatmak genellikle güvenli değildir.

Sonraki adımlar

Küme kapasitesini planlama, küme yükseltme ve hizmetleri bölümleme hakkında da bilgi edinmek için aşağıdakileri okuyun: