Megosztás a következőn keresztül:


Az alkonyatos metrikák kiegyensúlyozása

Mi az az alclustering?

Az alkonyatolás akkor történik, ha a különböző elhelyezési korlátozásokkal rendelkező szolgáltatások közös metrikával rendelkeznek, és mindkettő jelentést készít a terhelésről. Ha a szolgáltatások által jelentett terhelés jelentősen eltér, a csomópontok teljes terhelése nagy szórással fog rendelkezni, és úgy tűnik, hogy a fürt kiegyensúlyozatlan, még akkor is, ha a lehető legjobb egyensúlyt biztosítja.

Az alkonyatolás hatása a terheléselosztásra

Ha a szolgáltatások által a különböző csomópontokon jelentett terhelés jelentősen eltér, úgy tűnhet, hogy nagy az egyensúlyhiány, ahol nincs. Továbbá, ha az alkonyat által okozott hamis egyensúlyhiány nagyobb, mint a tényleges egyensúlyhiány, akkor előfordulhat, hogy összekeveri a Resource Manager kiegyensúlyozó algoritmust, és az optimálisnál rosszabb egyensúlyt hoz létre a fürtben.

Tegyük fel például, hogy négy szolgáltatásunk van, és mindegyik a metrika1 terhelését jelenti:

  • A szolgáltatás – "NodeType==Frontend" elhelyezési kényszerrel rendelkezik, 10-es terhelést jelent
  • B szolgáltatás – "NodeType==Frontend" elhelyezési kényszerrel rendelkezik, 10-es terhelést jelent
  • C szolgáltatás – "NodeType==Backend" elhelyezési kényszerrel rendelkezik, 100-as terhelést jelent
  • D szolgáltatás – "NodeType==Backend" elhelyezési kényszerrel rendelkezik, 100-as terhelést jelent
  • És négy csomópontunk van. Két csomóponttípus "Előtérbeli" értékre van állítva, a másik kettő pedig a "Háttér"

És a következő elhelyezéssel rendelkezünk:

Alclustered elhelyezési példa

Előfordulhat, hogy a fürt kiegyensúlyozatlannak tűnik, a 3. és a 4. csomópontra nagy terhelés van, de ez az elhelyezés hozza létre a lehető legjobb egyensúlyt ebben a helyzetben.

Resource Manager képes felismerni az alkonyatos helyzeteket, és szinte minden esetben az adott helyzet optimális egyensúlyát hozza létre.

Bizonyos kivételes helyzetekben, amikor Resource Manager nem tudja optimálisan kiegyensúlyozni az alclustered metrikát, akkor is észleli az alkonyatolást, és létrehoz egy állapotjelentést, amely tanácsot ad a probléma megoldásához.

Az alkonfigurálással és kezelésük módjával kapcsolatos típusok

Az alkonyathelyzetek három különböző kategóriába sorolhatók. Egy adott alkonfigurálási helyzet kategóriája határozza meg, hogyan fogja kezelni a Resource Manager.

Első kategória – egybesimított alclustering különálló csomópontcsoportokkal

Ez a kategória a legegyszerűbb alkonfigurálással rendelkezik, ahol a csomópontok különböző csoportokra oszthatók, és minden szolgáltatás csak az egyik csoport csomópontjaira helyezhető. Minden csomópont egy csoporthoz és csak egy csoporthoz tartozik. A fent leírt helyzet ebbe a kategóriába tartozik, ahogy a legtöbb alclustering helyzet is.

Ebben a kategóriában a Resource Manager optimális egyensúlyt teremthetnek, és nincs szükség további beavatkozásra.

Második kategória – hierarchikus csomópontcsoportokkal rendelkező alclustering

Ez a helyzet akkor fordul elő, ha az egyik szolgáltatás számára engedélyezett csomópontok egy csoportja a másik szolgáltatás számára engedélyezett csomópontok csoportjának egy része. Erre a helyzetre a leggyakoribb példa az, ha egy szolgáltatásban meghatározva van egy elhelyezési kényszer, és egy másik szolgáltatás nem rendelkezik elhelyezési kényszerrel, és bármely csomóponton elhelyezhető.

Példa:

  • A szolgáltatás: nincs elhelyezési kényszer
  • B szolgáltatás: "NodeType==Frontend" elhelyezési kényszer
  • C szolgáltatás: "NodeType==Backend" elhelyezési kényszer

Ez a konfiguráció egy részhalmaz-szuperhalmaz-kapcsolatot hoz létre a különböző szolgáltatások csomópontcsoportjai között.

Részhalmaz-szuperhalmaz-alclusterek

Ebben a helyzetben fennáll annak az esélye, hogy az optimálisnál rosszabb egyensúly jön létre.

Resource Manager felismeri ezt a helyzetet, és létrehoz egy állapotjelentést, amely azt javasolja, hogy az A szolgáltatást két szolgáltatásra ossza fel: az A1 szolgáltatásra, amely az előtérbeli csomópontokon és a háttércsomópontokon helyezhető el az A2 szolgáltatásban. Ez visszahoz minket az első kategóriába, amely optimálisan kiegyensúlyozott.

Harmadik kategória – alclustering részleges átfedéssel a csomópontkészletek között

Ez a helyzet akkor fordul elő, ha részleges átfedés van a csomópontkészletek között, amelyeken egyes szolgáltatások elhelyezhetők.

Ha például van egy NodeColor nevű csomóponttulajdonságunk, és három csomópontunk van:

  • 1. csomópont: NodeColor=Red
  • 2. csomópont: NodeColor=Kék
  • 3. csomópont: NodeColor=Zöld

És két szolgáltatásunk van:

  • A szolgáltatás: "Color==Red || elhelyezési kényszerrel Color==Blue"
  • B szolgáltatás: "Color==Blue || elhelyezési kényszerrel Color==Zöld"

Emiatt az A szolgáltatás elhelyezhető az 1. és a 2. csomóponton, a B szolgáltatás pedig a 2. és a 3. csomóponton.

Ebben a helyzetben fennáll annak az esélye, hogy az optimálisnál rosszabb egyensúly jön létre.

Resource Manager felismeri ezt a helyzetet, és létrehoz egy állapotjelentést, amely a szolgáltatások egyes részeinek felosztását javasolja.

Ebben a helyzetben a Resource Manager nem tud javaslatot tenni a szolgáltatások felosztására, mivel több felosztás is elvégezhető, és nem lehet megbecsülni, hogy melyik lenne az optimális a szolgáltatások felosztásához.

Alkonfiguráció konfigurálása

Az Resource Manager működése az alábbi konfigurációs paraméterek módosításával módosítható:

  • SubclusteringEnabled – a paraméter azt határozza meg, hogy Resource Manager figyelembe veszi-e az alkonfigurálást a terheléselosztás során. Ha ez a paraméter ki van kapcsolva, Resource Manager figyelmen kívül hagyja az alkonyatolást, és globális szinten megpróbálja elérni az optimális egyensúlyt. Ennek a paraméternek az alapértelmezett értéke hamis.
  • SubclusteringReportingPolicy – azt határozza meg, hogy Resource Manager hogyan bocsát ki állapotjelentéseket a hierarchikus és részleges átfedésben lévő alclusteringhez. A nulla érték azt jelenti, hogy az alkonfigurálással kapcsolatos állapotjelentések ki vannak kapcsolva, az "1" azt jelenti, hogy a rendszer figyelmeztetési állapotjelentéseket készít az optimálisnál rosszabb alkonfigurálási helyzetekhez, a "2" érték pedig "OK" állapotjelentéseket hoz létre. A paraméter alapértelmezett értéke "1".

ClusterManifest.xml:

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

a ClusterConfig.json használatával önálló üzemelő példányokhoz vagy Az Azure által üzemeltetett fürtökhöz készült Template.json használatával:

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

Következő lépések