Aracılığıyla paylaş


Alt kümelenmiş ölçümleri dengeleme

Alt kümeleme nedir?

Farklı yerleştirme kısıtlamaları olan hizmetlerin ortak bir ölçümü olduğunda ve her ikisi de bunun için yük bildirdiğinde alt kümeleme gerçekleşir. Hizmetler tarafından bildirilen yük önemli ölçüde farklılık gösteriyorsa, düğümlerdeki toplam yük büyük bir standart sapmaya sahip olur ve mümkün olan en iyi dengeye sahip olsa bile küme dengesiz gibi görünür.

Alt kümeleme yük dengelemeyi nasıl etkiler?

Farklı düğümlerdeki hizmetler tarafından bildirilen yükler önemli ölçüde farklılık gösteriyorsa, aslında bir dengesizlik olmamasına rağmen büyük bir dengesizlik varmış gibi görünebilir. Ayrıca, alt kümelemenin neden olduğu yanlış dengesizlik gerçek dengesizlik değerinden daha büyükse, Resource Manager dengeleme algoritmasının kafasını karıştırma ve kümede iyi durumda olmayan denge oluşturma potansiyeline sahiptir.

Örneğin, dört hizmetimiz olduğunu ve hepsinin Metric1 metriği için bir yük bildirdiğini varsayalım:

  • Hizmet A – "NodeType==Frontend" yerleştirme kısıtlaması vardır ve 10 yük rapor eder.
  • Hizmet B – "NodeType==Frontend" yerleştirme kısıtlamasına sahiptir ve 10 birim yük bildirir.
  • Hizmet C – "NodeType==Backend" yerleştirme kısıtlaması var, 100 yük bildirir
  • Hizmet D – üzerinde "NodeType==Backend" yerleştirme kısıtlaması olup yükü 100 olarak rapor eder.
  • Ve dört düğümümüz var. bunlardan ikisinde NodeType "Ön uç" olarak ayarlanmış ve diğer ikisi "Arka uç" olarak ayarlanmıştır

Ve aşağıdaki yerleştirmeye sahibiz:

Alt kümelenmiş yerleştirme örneği

Küme dengesiz görünebilir, 3 ve 4 düğümlerinde büyük bir yüke sahibiz, ancak bu yerleştirme bu durumda mümkün olan en iyi dengeyi oluşturur.

Resource Manager alt kümeleme durumlarını tanıyabilir ve neredeyse tüm durumlarda verilen durum için en uygun dengeyi sağlayabilir.

Resource Manager'ın alt kümelenmiş bir ölçümü en iyi şekilde dengeleyemediği bazı olağanüstü durumlarda alt kümelemesi algılar ve sorunu çözmenizi öneren bir sistem durumu raporu oluşturur.

Alt kümeleme türleri ve bunların nasıl işlenmeleri

Alt kümeleme durumları üç farklı kategoride sınıflandırılabilir. Belirli bir alt kümeleme durumunun kategorisi, Resource Manager tarafından nasıl işleneceğini belirler.

birinci kategori – kopuk düğüm gruplarıyla düz alt kümeleme

Bu kategori, düğümlerin farklı gruplara ayrılabildiği ve her hizmetin yalnızca bu gruplardan birindeki düğümlere yerleştirilebildiği en basit alt toplama biçimine sahiptir. Her düğüm yalnızca bir gruba ve yalnızca bir gruba aittir. Yukarıda açıklanan durum, alt kümeleme durumlarının çoğunda olduğu gibi bu kategoriye aittir.

Bu kategorideki durumlar için Resource Manager en uygun dengeyi üretebilir ve başka müdahale gerekmez.

İkinci kategori – hiyerarşik düğüm gruplarıyla alt kümeleme

Bu durum, bir hizmet için izin verilen bir düğüm grubu, başka bir hizmet için izin verilen düğüm grubunun bir alt kümesi olduğunda ortaya çıkar. Bu durumun en yaygın örneği, bazı hizmetlerde bir yerleştirme kısıtlaması tanımlandığı ve başka bir hizmetin yerleştirme kısıtlaması olmadığı ve herhangi bir düğüme yerleştirilebildiği durumlardır.

Örnek:

  • Hizmet A: yerleştirme kısıtlaması yok
  • Hizmet B: konumlandırma kısıtlaması "NodeType==Frontend"
  • Hizmet C: konumlandırma kısıtlaması "NodeType==Backend"

Bu yapılandırma, farklı hizmetler için düğüm grupları arasında bir alt küme üst küme ilişkisi oluşturur.

Alt küme üst küme alt kümeler

Bu durumda, kâfi derecede iyi olmayan bir denge kurulma olasılığı vardır.

Resource Manager bu durumu tanıyacak ve Hizmet A'yi ön uç düğümlerine yerleştirilebilen hizmet A1 ve Arka uç düğümlerine yerleştirilebilen Hizmet A2 olmak üzere iki hizmete bölmenizi tavsiye eden bir sistem durumu raporu oluşturur. Bu, en iyi şekilde dengelenebilen ilk kategori durumuna geri dönmemizi sağlayacaktır.

Üçüncü kategori – düğüm kümeleri arasında kısmi çakışma ile alt kümeleme

Bu durum, bazı hizmetlerin yerleştirilebileceği düğüm kümeleri arasında kısmi bir çakışma olduğunda ortaya çıkar.

Örneğin NodeColor adlı bir düğüm özelliğimiz varsa ve üç düğüme sahipsek:

  • Düğüm 1: NodeColor=Kırmızı
  • Düğüm 2: NodeColor=Mavi
  • Düğüm 3: NodeColor=Yeşil

Ve iki hizmetimiz var:

  • Hizmet A: yerleştirme kısıtlaması "Renk==Kırmızı || Renk==Mavi"
  • Hizmet B: yerleştirme kısıtlaması "Renk==Mavi || Renk==Yeşil"

Bu nedenle, Hizmet A 1 ve 2 düğümlerine, B Hizmeti ise 2. ve 3. düğümlere yerleştirilebilir.

Bu durumda, kâfi derecede iyi olmayan bir denge kurulma olasılığı vardır.

Resource Manager bu durumu algılar ve hizmetlerden bazılarını bölmenizi tavsiye eden bir sistem durumu raporu oluşturur.

Bu durum için Resource Manager, birden çok bölme yapılabilmesi ve hizmetleri bölmek için en uygun yolun hangisi olacağını tahmin etmenin bir yolu olmadığından hizmetlerin nasıl bölüneceği konusunda bir teklif veremez.

Alt kümelemenin yapılandırılması

Resource Manager'ın alt kümeleme davranışı, aşağıdaki yapılandırma parametreleri değiştirilerek değiştirilebilir:

  • SubclusteringEnabled - parametresi, yük dengeleme yapılırken Resource Manager'ın alt kümelemesi hesaba katıp almayacağını belirler. Bu parametre kapalıysa, Resource Manager alt kümelemesi yoksayar ve genel düzeyde en iyi dengeyi sağlamaya çalışır. Bu parametrenin varsayılan değeri false'tur.
  • SubclusteringReportingPolicy - Resource Manager'ın hiyerarşik ve kısmi örtüşen alt kümelendirme için sağlık raporlarını nasıl raporlayacağını belirler. Sıfır değeri, alt kümelemeyle ilgili sistem durumu raporlarının kapatıldığı, "1" ise en iyi olmayan alt kümeleme durumları için uyarı sistem durumu raporlarının oluşturulacağı ve "2" değerinin "Tamam" sistem durumu raporları oluşturacağı anlamına gelir. Bu parametrenin varsayılan değeri "1"dir.

ClusterManifest.xml:

        <Section Name="PlacementAndLoadBalancing">
            <Parameter Name="SubclusteringEnabled" Value="true" />
            <Parameter Name="SubclusteringReportingPolicy" Value="1" />
        </Section>

Tek başına dağıtımlar için ClusterConfig.json veya Azure tarafından barındırılan kümeler için Template.json aracılığıyla:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "SubclusteringEnabled",
          "value": "true"
      },
      {
          "name": "SubclusteringReportingPolicy",
          "value": "1"
      },
    ]
  }
]

Sonraki adımlar