Javaslatok megbízható skálázási stratégia kialakításához
Az Azure Well-Architected-keretrendszer megbízhatósági ellenőrzőlistájára vonatkozó javaslat:
RE:06 | Időben és megbízható skálázási stratégiát valósít meg az alkalmazás, az adatok és az infrastruktúra szintjén. A skálázási stratégiát a tényleges vagy előrejelzett használati mintákra alapozhatja, és minimalizálhatja a manuális beavatkozást. |
---|
Kapcsolódó útmutató:Adatparticionálás
Ez az útmutató a megbízható skálázási stratégia kialakítására vonatkozó javaslatokat ismerteti.
Definíciók
Kifejezés | Definíció |
---|---|
Függőleges skálázás | Skálázási módszer, amely számítási kapacitást ad hozzá a meglévő erőforrásokhoz. |
Vízszintes skálázás | Egy skálázási módszer, amely egy adott típusú erőforrás példányait adja hozzá. |
Automatikus skálázás | Olyan skálázási módszer, amely automatikusan hozzáad vagy eltávolít erőforrásokat egy adott feltétel teljesülése esetén. |
Jegyzet
A skálázási műveletek lehetnek statikusak (rendszeresen ütemezett napi skálázás a normál terhelési mintáknak megfelelően), automatikus (automatikus folyamat a feltételek teljesülése esetén), vagy manuális (egy operátor egyszeri skálázási műveletet hajt végre egy váratlan terhelésváltozásra reagálva). A függőleges és a vízszintes skálázás is elvégezhető ezen módszerek bármelyikével. Az automatikus vertikális skálázás azonban további egyéni automatizálási fejlesztést igényel, és állásidőt okozhat a skálázott erőforrásoktól függően.
Főbb tervezési stratégiák
Tervezés terhelési minták szerint
Ha megbízható skálázási stratégiát szeretne tervezni a számítási feladatokhoz, koncentráljon a felhasználói és rendszerfolyamatok terhelési mintáinak azonosítására minden olyan számítási feladathoz, amely skálázási művelethez vezet. Íme néhány példa a különböző terhelési mintákra:
Statikus: Minden este 11:00 EST-ig az aktív felhasználók száma 100 alatt van, és az alkalmazáskiszolgálók processzorhasználata 90% csökken az összes csomóponton.
Dinamikus, rendszeres és kiszámítható: Minden hétfő reggel több régióban 1000 alkalmazott jelentkezik be az ERP-rendszerbe.
Dinamikus, szabálytalan és kiszámítható: A termék indítása a hónap első napján történik, és a korábbi indítások előzményadatai arról szólnak, hogyan nő a forgalom ezekben a helyzetekben.
Dinamikus, szabálytalan és kiszámíthatatlan: A nagy léptékű események miatt megnő a termék iránti kereslet. Például a párátlanítókat gyártó és értékesítő vállalatok hirtelen megnövekedett forgalmat tapasztalhatnak egy hurrikán vagy más árvízesemény után, amikor az érintett területeken lévő embereknek otthonukban kell száraz helyiségeket használniuk.
Miután azonosította az ilyen típusú terhelési mintákat, a következőkre van lehetőség:
Azonosítsa, hogy az egyes mintákhoz társított terhelésváltozás hogyan befolyásolja az infrastruktúrát.
Automatizálás létrehozása a skálázás megbízható kezelése érdekében.
Az előző példákban a skálázási stratégiák a következőek lehetnek:
Statikus: A számítási csomópontok skálázása a minimális számra (2) 23:00 és 6:00 óra között van ütemezve.
Dinamikus, rendszeres és kiszámítható: A számítási csomópontok ütemezett skálázása a normál napi kapacitásra történik, mielőtt az első régió elkezdené a munkát.
Dinamikus, szabálytalan és kiszámítható: A termékindítás reggelén a számítási és adatbázispéldányok egyszeri ütemezett felskálázását határozza meg, és egy hét után visszaskálázza.
Dinamikus, szabálytalan és kiszámíthatatlan: Automatikus skálázási küszöbértékek vannak meghatározva, hogy figyelembe vegyék a nem tervezett forgalomnövekedéseket.
Skálázási stratégiák automatizálása
A skálázási automatizálás tervezésekor mindenképpen figyelembe kell vennie az alábbi problémákat:
A számítási feladat minden összetevőjének alkalmasnak kell lennie a skálázásra. A legtöbb esetben az olyan globális szolgáltatások, mint a Microsoft Entra ID automatikusan és transzparensen skálázhatók az Ön és ügyfelei számára. Ügyeljen arra, hogy tisztában legyen a hálózati bejövő és kimenő vezérlők skálázási képességeivel, valamint a terheléselosztási megoldással.
Azokat az összetevőket, amelyek nem méretezhetők ki. Ilyenek például a nagy méretű, relációs adatbázisok, amelyek nem engedélyezve vannak a horizontális skálázásban, és jelentős hatás nélkül nem lehet újrabontásra. Dokumentálja a felhőszolgáltató által közzétett erőforráskorlátokat, és figyelje szorosan ezeket az erőforrásokat. Vegye fel ezeket az erőforrásokat a skálázható szolgáltatásokba való migrálás jövőbeli tervezésében.
A skálázási művelet végrehajtásához szükséges idő, hogy megfelelően ütemezze a műveletet, mielőtt a többletterhelés eléri az infrastruktúrát. Például, ha egy összetevő, mint az API Management skálázása 45 percet igényel, a skálázási küszöbérték beállítása 90% helyett 65%-ra segíthet abban, hogy korábban skálázzon, és felkészülhessen a várható terhelés növekedésére.
A folyamat összetevőinek viszonya a skálázási műveletek sorrendjében. Győződjön meg arról, hogy nem túlterheli véletlenül az alárendelt összetevőket egy felsőbb rétegbeli összetevő skálázásával.
Bármely állapottal rendelkező alkalmazáselem, amelyet egy skálázási művelet megszakíthat, és minden implementált munkamenet-affinitás (vagy munkamenet-ragadás). A ragadósság korlátozhatja a skálázási képességet, és egyetlen meghibásodási pontot vezet be.
Lehetséges szűk keresztmetszetek. A horizontális felskálázás nem old meg minden teljesítményproblémát. Ha például a háttéradatbázis szűk keresztmetszetet jelent, az nem segít további webkiszolgálók hozzáadásában. Először azonosítsa és oldja fel a rendszerben jelentkező szűk keresztmetszeteket, ahelyett, hogy egyszerűen több példányt hozzáadna. A szűk keresztmetszetek legvalószínűbb oka a rendszer állapotfüggő részei.
A üzembehelyezési bélyeg mintázatát követni segít az infrastruktúra kezelésében. A skálázási terv bélyegekre való alapozása méretezési egységekként is előnyös. Emellett segít a skálázási műveletek szigorú szabályozásában több számítási feladat és a számítási feladatok részhalmazai között. Ahelyett, hogy számos különböző erőforrás skálázási ütemezését és automatikus méretezési küszöbértékeit kezelnék, korlátozott skálázási definíciókat alkalmazhat az üzembehelyezési bélyegzőkre, majd szükség szerint tükrözheti a bélyegek között.
Kompromisszum: A felskálázás költségvonzatokkal jár, ezért optimalizálja a stratégiát, hogy a lehető leghamarabb csökkentse a skálázást, és segítse a költségek szabályozását. Győződjön meg arról, hogy a felskálázáshoz használt automatizálás rendelkezik olyan eseményindítókkal, amelyek a le- és felskálázást egyaránt lehetővé teszik.
Az Azure megkönnyítése
Az automatikus skálázási funkció számos Azure-szolgáltatásbanérhető el. Lehetővé teszi a feltételek egyszerű konfigurálását a példányok horizontális automatikus skálázásához. Egyes szolgáltatások beépített funkciói korlátozottak vagy nincsenek automatikusan skálázhatóak, ezért mindenképpen dokumentálja ezeket az eseteket, és határozza meg a skálázás kezelésére használható folyamatokat.
Számos Azure-szolgáltatás kínál olyan API-kat, amelyekkel egyéni automatikus skálázási műveleteket tervezhet Azure Automationhasználatával, például az Azure IoT Hub automatikus méretezésénekkódmintáit. Az eseményvezérelt automatikus skálázáshoz használhat olyan eszközöket, mint a KEDA, amely Azure Kubernetes Service és Azure Container Appsérhető el.
Az Azure Monitor automatikus skálázási funkciókat biztosít az Azure Virtual Machine Scale Sets, az Azure App Service, az Azure Spring Apps és más szolgáltatások számára. A skálázás ütemezés szerint vagy futtatókörnyezeti metrika alapján végezhető el, például processzor- vagy memóriahasználat alapján. Az ajánlott eljárásokért tekintse meg az Azure Monitor útmutatót.
Kompromisszumokat
Automatikus skálázási szempontok
Az automatikus skálázás nem azonnali megoldás. Ha egyszerűen erőforrásokat ad hozzá egy rendszerhez, vagy több folyamatpéldányt futtat, az nem garantálja, hogy a rendszer teljesítménye javulni fog. Az automatikus skálázási stratégia tervezésekor vegye figyelembe az alábbi szempontokat:
A rendszert vízszintesen skálázhatónak kell lennie. Kerülje a példány-affinitással kapcsolatos feltételezéseket. Ne tervezzen olyan megoldásokat, amelyek megkövetelik, hogy a kód mindig egy adott folyamatpéldányban fusson. Felhőszolgáltatás vagy webhely horizontális skálázása esetén ne feltételezze, hogy az ugyanabból a forrásból érkező kérések sorozata mindig ugyanarra a példányra lesz irányítva. Ugyanezen okból a tervezési szolgáltatások állapot nélkülinek kell lenniük, hogy ne követeljék meg, hogy egy alkalmazás kéréseinek sorozata mindig ugyanarra a szolgáltatáspéldányra legyen irányítva. Ha olyan szolgáltatást tervez, amely üzeneteket olvas be egy üzenetsorból, és feldolgozza őket, ne tegyen feltételezéseket arról, hogy a szolgáltatás melyik példánya kezeli az adott üzenetet. Az automatikus skálázás az üzenetsor hosszának növekedésével több szolgáltatáspéldányt is elindíthat. A konkurens fogyasztók mintája leírja, hogyan kell kezelni ezt a forgatókönyvet.
Ha a megoldás hosszan futó feladatot valósít meg, úgy tervezze meg ezt a feladatot, hogy támogassa a horizontális kinyitást és visszaskálázást is. Kellő gondosság nélkül egy ilyen feladat megakadályozhatja, hogy egy folyamat egy példánya teljesen le legyen állítva, amikor a rendszer felskálázódik. Vagy adatvesztést is okozhat, ha a folyamat kényszerítetten leáll. Ideális esetben egy hosszú ideig futó feladat újrabontása és az általa végzett feldolgozás lebontása kisebb, különálló adattömbökre. A csövek és szűrők mintája egy példa a megoldás elérésére.
Másik lehetőségként olyan ellenőrzőpont-mechanizmust is implementálhat, amely rendszeres időközönként rögzíti a tevékenység állapotadatait. Ezt az állapotot ezután tartós tárolóba mentheti, amely a feladatot futtató folyamat bármely példánya számára elérhető. Ily módon, ha a folyamat le van állítva, az elvégzett munkát egy másik példány folytathatja az utolsó ellenőrzőpontról. Vannak olyan kódtárak, amelyek biztosítják ezt a funkciót, például az NServiceBus és a MassTransit. Transzparensen megőrzik az állapotot, ahol az intervallumok igazodnak az üzenetsorokból érkező üzenetek feldolgozásához Azure Service Bus.
Ha a háttérfeladatok külön számítási példányokon futnak, például egy felhőszolgáltatások által üzemeltetett alkalmazás feldolgozói szerepköreiben, előfordulhat, hogy az alkalmazás különböző részeit különböző skálázási szabályzatok használatával kell skáláznia. Előfordulhat például, hogy további felhasználói felületi (UI) számítási példányokat kell üzembe helyeznie anélkül, hogy növelné a háttérbeli számítási példányok számát, vagy fordítva. Ha különböző szolgáltatási szinteket kínál, például alapszintű és prémium szolgáltatási csomagokat, előfordulhat, hogy a prémium szolgáltatási csomagok számítási erőforrásait agresszívabban kell felskáláznia, mint az alapszintű szolgáltatási csomagok esetében a szolgáltatásiszint-szerződések (SLA-k) teljesítéséhez.
Fontolja meg annak az üzenetsornak a hosszát, amelyen keresztül a felhasználói felület és a háttérben futó számítási folyamatok kommunikálnak. Használja az automatikus skálázási stratégiájának kritériumaként. Ez a probléma az egyik lehetséges mutatója a háttérfeladat aktuális terhelése és feldolgozási kapacitása közötti egyensúlyhiánynak vagy különbségnek. A skálázási döntések alapjául szolgáló valamivel összetettebb, de jobb attribútum az üzenet elküldése és a feldolgozás befejezése közötti idő használata. Ezt az időközt kritikus időnek nevezzük. Ha ez a kritikus időérték egy jelentős üzleti küszöbérték alatt van, akkor felesleges skálázni, még akkor is, ha az üzenetsor hossza hosszú.
Egy üzenetsorban például 50 000 üzenet lehet. A legrégebbi üzenet kritikus ideje azonban 500 ms, és a végpont egy külső webszolgáltatással való integrációval foglalkozik az e-mailek küldéséhez. Az üzleti érdekelt felek ezt valószínűleg olyan időszaknak tekintik, amely nem indokolná a skálázásra fordított többletköltséget.
Másfelől 500 üzenet lehet egy üzenetsorban ugyanazzal az 500 ms-os kritikus idővel, de a végpont a kritikus út része egy valós idejű online játékban, ahol az üzleti érdekelt felek 100 ms-os vagy annál kisebb válaszidőt határoztak meg. Ebben az esetben a horizontális felskálázásnak van értelme.
Ha kritikus időt szeretne használni az automatikus skálázási döntésekhez, hasznos lehet, ha egy tár automatikusan hozzáadja a releváns információkat az üzenetek fejlécéhez az üzenetek elküldése és feldolgozása során. A funkciót biztosító egyik kódtár az NServiceBus .
Ha az automatikus skálázási stratégiát olyan számlálókra alapozza, amelyek az üzleti folyamatokat mérik, például az óránként leadott rendelések számát vagy egy összetett tranzakció átlagos futási idejét, győződjön meg arról, hogy teljes mértékben tisztában van az ilyen típusú számlálók eredményei és a tényleges számítási kapacitás követelményei közötti kapcsolatokkal. Előfordulhat, hogy egynél több összetevőt vagy számítási egységet kell skálázni az üzleti folyamatszámlálók változásaira reagálva.
Annak érdekében, hogy a rendszer ne próbálja meg túlzottan felskálázni a skálázást, és hogy elkerülje a sok ezer példány futtatásával járó költségeket, fontolja meg az automatikusan hozzáadott példányok maximális számának korlátozását. A legtöbb automatikus skálázási mechanizmus lehetővé teszi egy szabály példányainak minimális és maximális számának megadását. Emellett fontolja meg a rendszer által biztosított funkciók kecses romlását, ha a példányok maximális száma üzembe lett helyezve, és a rendszer még mindig túlterhelt.
Ne feledje, hogy előfordulhat, hogy az automatikus skálázás nem a legmegfelelőbb mechanizmus a számítási feladatok hirtelen kirobbanásának kezelésére. Időt vesz igénybe egy szolgáltatás új példányainak kiépítése és elindítása, vagy erőforrások hozzáadása egy rendszerhez, és a maximális igény a további erőforrások rendelkezésre állásának idejére is áttelhet. Ebben a forgatókönyvben jobb lehet a szolgáltatás korlátozása. További információ: Teljesítménykorlátozási minta.
Ezzel szemben, ha kapacitásra van szüksége az összes kérés feldolgozásához, amikor a forgalom gyorsan ingadozik, és a költség nem jelentős szempont, fontolja meg egy agresszív automatikus skálázási stratégia használatát, amely gyorsabban elindít több példányt. Ütemezett irányelvet is használhat, amely elegendő számú példányt indít el a terhelés maximális értékének teljesítése érdekében, még mielőtt a terhelés elérné azt az értéket.
Az automatikus skálázási mechanizmusnak figyelnie kell az automatikus skálázási folyamatot, és naplóznia kell az egyes automatikus skálázási események részleteit (mi aktiválta, milyen erőforrások lettek hozzáadva vagy eltávolítva, és mikor). Ha egyéni automatikus skálázási mechanizmust hoz létre, győződjön meg arról, hogy ez magában foglalja ezt a képességet. Elemezze az információkat az automatikus skálázási stratégia hatékonyságának méréséhez és szükség esetén finomhangolásához. Rövid távon mindkettőt finomhangolhatja, mivel a használati minták egyre nyilvánvalóbbá válnak, és hosszú távon az üzlet bővülése vagy az alkalmazás követelményeinek fejlődése során. Ha egy alkalmazás eléri az automatikus skálázáshoz meghatározott felső korlátot, a mechanizmus riasztást is kaphat egy operátorról, aki szükség esetén manuálisan indíthat el több erőforrást. Ilyen körülmények között az operátor felelős lehet az erőforrások manuális eltávolításáért is, miután a számítási feladatok enyhülnek.
Példa
Tekintse meg az AKS referenciaalapú architektúráját és a skálázási útmutatót.
Kapcsolódó hivatkozások
Megbízhatósági ellenőrzőlista
Tekintse meg a javaslatok teljes készletét.