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:
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.
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
- Ha tudni szeretné, hogy a fürt Resource Manager hogyan kezeli és egyensúlyozza a fürt terhelését, tekintse meg a terheléselosztásról szóló cikket.
- Ha tudni szeretné, hogy a szolgáltatások hogyan korlátozhatók arra, hogy csak bizonyos csomópontokon legyenek elhelyezve, tekintse meg a Csomópont tulajdonságai és elhelyezési kényszerei című témakört.