Aracılığıyla paylaş


Azure Service Fabric için kapasite planlama ve ölçeklendirme

Herhangi bir Azure Service Fabric kümesi oluşturmadan veya kümenizi barındıran işlem kaynaklarını ölçeklendirmeden önce kapasiteyi planlamak önemlidir. Kapasite planlaması hakkında daha fazla bilgi için bkz . Service Fabric küme kapasitesini planlama. Küme ölçeklenebilirliği hakkında daha fazla en iyi uygulama kılavuzu için bkz . Service Fabric ölçeklenebilirlik konuları.

Düğüm türü ve küme özelliklerini dikkate almaya ek olarak, bir üretim ortamı için ölçeklendirme işlemlerinin tamamlanmasının bir saatten uzun sürmesini beklemeniz gerekir. Eklediğiniz VM sayısından bağımsız olarak bu önemli nokta geçerlidir.

Otomatik ölçeklendirme

Kaynak yapılandırmalarını kod olarak ele almak en iyi yöntem olduğundan Ölçeklendirme işlemlerini Azure Resource Manager şablonları aracılığıyla gerçekleştirmeniz gerekir.

Sanal makine ölçek kümeleri aracılığıyla otomatik ölçeklendirmenin kullanılması, sürümlendirilmiş Resource Manager şablonunuzun sanal makine ölçek kümeleri için örnek sayılarınızı yanlış şekilde tanımlamasını sağlar. Yanlış tanım, gelecekteki dağıtımların istenmeyen ölçeklendirme işlemlerine neden olacağı riskini artırır. Genel olarak, aşağıdaki durumlarda otomatik ölçeklendirme kullanmanız gerekir:

  • Resource Manager şablonlarınızı bildirilen uygun kapasiteyle dağıtmak, kullanım örneğinizi desteklemez.

    El ile ölçeklendirmeye ek olarak, Azure kaynak grubu dağıtım projelerini kullanarak Azure DevOps Services'da sürekli tümleştirme ve teslim işlem hattı yapılandırabilirsiniz. Bu işlem hattı genellikle Azure İzleyici REST API'sinden sorgulanan sanal makine performans ölçümlerini kullanan bir mantıksal uygulama tarafından tetiklenir. İşlem hattı, Resource Manager şablonları için iyileştirme yaparken istediğiniz ölçümlere göre etkili bir şekilde otomatik ölçeklendirme sağlar.

  • Aynı anda yalnızca bir sanal makine ölçek kümesi düğümünü yatay olarak ölçeklendirmeniz gerekir.

    Bir kerede üç veya daha fazla düğümün ölçeğini genişletmek için bir sanal makine ölçek kümesi ekleyerek Service Fabric kümesinin ölçeğini genişletmeniz gerekir. Sanal makine ölçek kümelerini yatay olarak ölçeklendirin ve ölçeklendirin her seferinde bir düğüm olacak şekilde daraltmak en güvenlidir.

  • Service Fabric kümeniz için Silver güvenilirliğiniz veya daha yüksektir ve otomatik ölçeklendirme kurallarını yapılandırdığınız herhangi bir ölçekte Silver dayanıklılığı veya daha yüksektir.

    Otomatik ölçeklendirme kuralları için en düşük kapasite beş sanal makine örneğine eşit veya bundan büyük olmalıdır. Ayrıca, birincil düğüm türünüz için Güvenilirlik Katmanı minimumunuza eşit veya ondan büyük olmalıdır.

Not

Service Fabric durum bilgisi olan service fabric:/System/InfrastructureService/<NODE_TYPE_NAME> , Silver veya daha yüksek dayanıklılığa sahip her düğüm türünde çalışır. Küme düğüm türlerinden herhangi birinde Azure'da çalıştırılması desteklenen tek sistem hizmetidir.

Önemli

Service Fabric otomatik ölçeklendirmesi, sanal NewestVM makine ölçek kümesi ölçekleme yapılandırmalarını desteklerDefault.

Dikey ölçeklendirmeyle ilgili dikkat edilmesi gerekenler

Azure Service Fabric'te bir düğüm türünün dikey olarak ölçeklenmesi için bir dizi adım ve önemli nokta gerekir. Örneğin:

  • Ölçeklendirmeden önce kümenin iyi durumda olması gerekir. Aksi takdirde kümenin istikrarını daha da bozarsınız.
  • Durum bilgisi olan hizmetleri barındıran tüm Service Fabric küme düğümü türleri için gümüş dayanıklılık düzeyi veya üstü gereklidir.

Not

Durum bilgisi olan Service Fabric sistem hizmetlerini barındıran birincil düğüm türünüz Silver dayanıklılık düzeyi veya üzeri olmalıdır. Silver dayanıklılığını etkinleştirdikten sonra, sistem işlem hızı üzerinden veri güvenliği için iyileştirildiği için yükseltmeler, düğümleri ekleme veya kaldırma gibi küme işlemleri daha yavaş olacaktır.

Sanal makine ölçek kümesini yalnızca kaynak SKU'sunu değiştirerek dikey ölçeklendirme yıkıcı bir işlemdir çünkü konaklarınızı yeniden görüntüler ve böylece tüm yerel olarak kalıcı durum kaldırılır. Bunun yerine, istenen SKU ile yeni bir ölçek kümesi ekleyerek kümenizi yatay olarak ölçeklendirmek ve ardından güvenli bir dikey ölçeklendirme işlemini tamamlamak için hizmetlerinizi yeni ölçek kümesine geçirmek isteyeceksiniz.

Kümeniz, uygulamanızın hizmetlerini nerede barındıracağınıza karar vermek için Service Fabric düğümü özelliklerini ve yerleştirme kısıtlamalarını kullanır. Birincil düğüm türünü dikey olarak ölçeklendirirken, ikinci bir birincil düğüm türü dağıtacak ve ardından ("isPrimary": false) özgün birincil düğüm türüne ayarlayıp düğümlerini devre dışı bırakmaya ve ölçek kümesini ve ilgili kaynaklarını kaldırmaya devam edersiniz. Ayrıntılar için bkz . Service Fabric kümesi birincil düğüm türünün ölçeğini artırma.

Not

Üretim ortamında değişiklik yapmaya çalışmadan önce test ortamlarındaki işlemleri her zaman doğrulayın. Varsayılan olarak, Service Fabric küme sistemi hizmetleri yalnızca hedef birincil düğüm türüne yönelik bir yerleştirme kısıtlamasına sahiptir.

Düğüm özellikleri ve yerleştirme kısıtlamaları bildirilirken, aşağıdaki adımları bir kerede bir VM örneğini uygulayın. Bu, yeni çoğaltmalar başka bir yerde oluşturulurken kaldırdığınız VM örneğinde sistem hizmetlerinin (ve durum bilgisi olan hizmetlerinizin) düzgün bir şekilde kapatılmasını sağlar.

  1. PowerShell'de, kaldıracağınız düğümü devre dışı bırakmak için amaç RemoveNode ile komutunu çalıştırınDisable-ServiceFabricNode. En yüksek sayıya sahip düğüm türünü kaldırın. Örneğin, altı düğümlü bir kümeniz varsa "MyNodeType_5" sanal makine örneğini kaldırın.
  2. Düğümün devre dışı bırakıldığından emin olmak için komutunu çalıştırın Get-ServiceFabricNode . Aksi takdirde düğüm devre dışı bırakılana kadar bekleyin. Bu işlem her düğüm için birkaç saat sürebilir. Düğüm devre dışı bırakılana kadar devam etmeyin.
  3. Vm sayısını bu düğüm türünde bir azalt. En yüksek VM örneği artık kaldırılacak.
  4. 1 ile 3 arasındaki adımları gerektiği gibi yineleyin, ancak hiçbir zaman birincil düğüm türlerindeki örnek sayısı, güvenilirlik katmanının sağladığından daha az ölçeklendirilemez. Önerilen örneklerin listesi için bkz . Service Fabric küme kapasitesini planlama.
  5. Tüm VM'ler kaybolduktan sonra ("Aşağı" olarak gösterilir) doku:/System/InfrastructureService/[node name] bir Hata durumu gösterir. Ardından düğüm türünü kaldırmak için küme kaynağını güncelleştirebilirsiniz. ARM şablonu dağıtımını kullanabilir veya Azure resource manager aracılığıyla küme kaynağını düzenleyebilirsiniz. Bu işlem, hata durumundaki fabric:/System/InfrastructureService/[node type] hizmetini kaldıran bir küme yükseltmesi başlatır.
  6. Bundan sonra isteğe bağlı olarak VMScaleSet'i silebilirsiniz, ancak yine de düğümleri Service Fabric Explorer görünümünden "Aşağı" olarak görürsünüz. Son adım, bunları komutla Remove-ServiceFabricNodeState temizlemek olacaktır.

Yatay ölçeklendirme

Yatay ölçeklendirmeyi el ile veya program aracılığıyla yapabilirsiniz.

Not

Silver veya Gold dayanıklılığına sahip bir düğüm türünü ölçeklendiriyorsanız ölçeklendirme yavaş olacaktır.

Ölçeği genişletme

Belirli bir sanal makine ölçek kümesinin örnek sayısını artırarak Service Fabric kümesinin ölçeğini genişletme. Kapasiteyi artırmak için ve istenen ölçek kümesinin kimliğini kullanarak AzureClient program aracılığıyla ölçeği genişletebilirsiniz.

var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
var newCapacity = (int)Math.Min(MaximumNodeCount, scaleSet.Capacity + 1);
scaleSet.Update().WithCapacity(newCapacity).Apply(); 

Ölçeği el ile genişletmek için istenen sanal makine ölçek kümesi kaynağının SKU özelliğindeki kapasiteyi güncelleştirin.

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

Ölçeği daraltma

ölçeğini daraltmak için ölçeği genişletmeye kıyasla daha fazla dikkat edilmesi gerekir. Mesela:

  • Service Fabric sistem hizmetleri kümenizdeki birincil düğüm türünde çalışır. Bu düğüm türü için örnek sayısını hiçbir zaman kapatmayın veya ölçeklendirmeyin, böylece güvenilirlik katmanının sağladığından daha az örnek elde edin.
  • Durum bilgisi olan bir hizmet için, kullanılabilirliği korumak ve hizmetinizin durumunu korumak için her zaman çalışır durumda olan belirli sayıda düğüme ihtiyacınız vardır. En azından, bölümün veya hizmetin hedef çoğaltma kümesi sayısına eşit sayıda düğüme ihtiyacınız vardır.

Ölçeği el ile daraltmak için şu adımları izleyin:

  1. PowerShell'de, kaldıracağınız düğümü devre dışı bırakmak için amaç RemoveNode ile komutunu çalıştırınDisable-ServiceFabricNode. En yüksek sayıya sahip düğüm türünü kaldırın. Örneğin, altı düğümlü bir kümeniz varsa "MyNodeType_5" sanal makine örneğini kaldırın.
  2. Düğümün devre dışı bırakıldığından emin olmak için komutunu çalıştırın Get-ServiceFabricNode . Aksi takdirde düğüm devre dışı bırakılana kadar bekleyin. Bu işlem her düğüm için birkaç saat sürebilir. Düğüm devre dışı bırakılana kadar devam etmeyin.
  3. Vm sayısını bu düğüm türünde bir azalt. En yüksek VM örneği artık kaldırılacak.
  4. İstediğiniz kapasiteyi sağlayana kadar 1 ile 3 arasındaki adımları gerektiği gibi yineleyin. Birincil düğüm türlerindeki örnek sayısını, güvenilirlik katmanının sağladığından daha az olacak şekilde ölçeklendirmeyin. Önerilen örneklerin listesi için bkz . Service Fabric küme kapasitesini planlama.

Ölçeği el ile daraltmak için, istenen sanal makine ölçek kümesi kaynağının SKU özelliğindeki kapasiteyi güncelleştirin.

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

Düğümü program aracılığıyla ölçeklendirilecek şekilde kapatmaya hazırlamanız gerekir. Kaldırılacak düğümü (en yüksek örnek düğümü) bulun. Örneğin:

using (var client = new FabricClient())
{
    var mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync())
        .Where(n => n.NodeType.Equals(NodeTypeToScale, StringComparison.OrdinalIgnoreCase))
        .Where(n => n.NodeStatus == System.Fabric.Query.NodeStatus.Up)
        .OrderByDescending(n =>
        {
            var instanceIdIndex = n.NodeName.LastIndexOf("_");
            var instanceIdString = n.NodeName.Substring(instanceIdIndex + 1);
            return int.Parse(instanceIdString);
        })
        .FirstOrDefault();

Önceki kodda kullandığınız aynı örneği (clientbu örnekte) ve düğüm örneğini (instanceIdStringbu örnekte) kullanarak FabricClient düğümü devre dışı bırakın ve kaldırın:

var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);

// Remove the node from the Service Fabric cluster
ServiceEventSource.Current.ServiceMessage(Context, $"Disabling node {mostRecentLiveNode.NodeName}");
await client.ClusterManager.DeactivateNodeAsync(mostRecentLiveNode.NodeName, NodeDeactivationIntent.RemoveNode);

// Wait (up to a timeout) for the node to gracefully shut down
var timeout = TimeSpan.FromMinutes(5);
var waitStart = DateTime.Now;
while ((mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Up || mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Disabling) &&
        DateTime.Now - waitStart < timeout)
{
    mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync()).FirstOrDefault(n => n.NodeName == mostRecentLiveNode.NodeName);
    await Task.Delay(10 * 1000);
}

// Decrement virtual machine scale set capacity
var newCapacity = (int)Math.Max(MinimumNodeCount, scaleSet.Capacity - 1); // Check min count 

scaleSet.Update().WithCapacity(newCapacity).Apply();

Not

Kümede ölçeklendirme yaptığınızda, kaldırılan düğümün/VM örneğinin Service Fabric Explorer'da iyi durumda olmadığını görürsünüz. Bu davranışın açıklaması için bkz . Service Fabric Explorer'da gözlemleyebileceğin davranışlar. Şunları yapabilirsiniz:

Güvenilirlik düzeyleri

Güvenilirlik düzeyi , Service Fabric küme kaynağınızın bir özelliğidir. Tek düğüm türleri için farklı şekilde yapılandırılamaz. Küme için sistem hizmetlerinin çoğaltma faktörünü denetler ve küme kaynak düzeyinde bir ayardır.

Güvenilirlik düzeyi, birincil düğüm türünüzün sahip olması gereken en düşük düğüm sayısını belirler. Güvenilirlik katmanı aşağıdaki değerleri alabilir:

  • Platin: Sistem hizmetlerini yedi ve dokuz çekirdek düğümden oluşan hedef çoğaltma kümesi sayısıyla çalıştırır.
  • Altın: Sistem hizmetlerini yedi ve yedi çekirdek düğümden oluşan hedef çoğaltma kümesi sayısıyla çalıştırır.
  • Silver: Beş ve beş çekirdek düğümden oluşan hedef çoğaltma kümesi sayısıyla sistem hizmetlerini çalıştırır.
  • Bronz: Sistem hizmetlerini üç ve üç çekirdek düğümden oluşan bir hedef çoğaltma kümesi sayısıyla çalıştırır.

Önerilen en düşük güvenilirlik düzeyi Silver'dır.

Güvenilirlik düzeyi, Microsoft.ServiceFabric/clusters kaynağının özellikler bölümünde şöyle ayarlanır:

"properties":{
    "reliabilityLevel": "Silver"
}

Dayanıklılık düzeyleri

Uyarı

Bronz dayanıklılıkla çalışan düğüm türleri ayrıcalık elde etmez. Durum bilgisi olmayan iş yüklerinizi etkileyen altyapı işleri durdurulmayacak veya geciktirilmez ve bu da iş yüklerinizi etkileyebilir.

Bronz dayanıklılığı yalnızca durum bilgisi olmayan iş yükleri çalıştıran düğüm türleri için kullanın. Üretim iş yüklerinde durum tutarlılığı sağlamak için Silver veya üzerini çalıştırın. Kapasite planlaması belgelerindeki kılavuza göre doğru güvenilirliği seçin.

Dayanıklılık düzeyi iki kaynakta ayarlanmalıdır. Bunlardan biri, sanal makine ölçek kümesi kaynağının uzantı profilidir:

"extensionProfile": {
    "extensions":          {
        "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
        "properties": {
            "settings": {
                "durabilityLevel": "Bronze"
            }
        }
    }
}

Diğer kaynak, Microsoft.ServiceFabric/clusters kaynağında altındadırnodeTypes:

"nodeTypes": [
    {
        "name": "[variables('vmNodeType0Name')]",
        "durabilityLevel": "Bronze"
    }
]

Sonraki adımlar

  • Windows Server çalıştıran VM'lerde veya bilgisayarlarda küme oluşturma: Windows Server için Service Fabric kümesi oluşturma.
  • Linux çalıştıran VM'lerde veya bilgisayarlarda küme oluşturma: Linux kümesi oluşturma.
  • Service Fabric destek seçenekleri hakkında bilgi edinin.