AWS Auto Scaling: a szolgáltatás definíciója és működése

Szeretnéd, hogy a felhőalkalmazásod mindig bírja a terhelést, de nem akarsz éjjel-nappal a szerverekkel foglalkozni? Az AWS Auto Scaling a megoldás! Ez a szolgáltatás automatikusan növeli vagy csökkenti a számítási kapacitást a tényleges igényekhez igazodva. Tudj meg többet arról, hogyan működik, és hogyan spórolhatsz pénzt vele!
ITSZÓTÁR.hu
29 Min Read

Az AWS Auto Scaling egy felhő alapú szolgáltatás, amely lehetővé teszi az alkalmazások számára, hogy automatikusan hozzáigazítsák a számítási kapacitásukat a pillanatnyi igényekhez. Ez azt jelenti, hogy amikor a forgalom megnő, az Auto Scaling automatikusan több Amazon EC2 példányt indít el, hogy kezelje a terhelést. Amikor pedig a forgalom csökken, az Auto Scaling automatikusan megszünteti a felesleges példányokat, ezáltal optimalizálva a költségeket.

Az Auto Scaling nem csak a terheléshez való alkalmazkodást teszi lehetővé, hanem a magas rendelkezésre állást is biztosítja. Ha egy EC2 példány meghibásodik, az Auto Scaling automatikusan egy újat indít el a helyére, minimalizálva a kiesést.

Az AWS Auto Scaling alapvetően egy rugalmas erőforrás-kezelő, amely biztosítja, hogy az alkalmazás mindig elegendő számítási kapacitással rendelkezzen a megfelelő teljesítményhez, miközben optimalizálja a költségeket.

A szolgáltatás működésének alapja a skálázási csoport (Auto Scaling Group – ASG). Az ASG tartalmazza az EC2 példányokat, valamint a skálázási szabályokat. Ezek a szabályok határozzák meg, hogy mikor kell új példányokat indítani vagy megszüntetni. A skálázási szabályok alapulhatnak különböző metrikákon, például a CPU kihasználtságon, a hálózati forgalmon vagy az egyedi alkalmazás metrikákon.

Az Auto Scaling konfigurálása során meg kell adni a minimum, a maximum és a kívánt számú példányt. A minimum érték biztosítja, hogy mindig legyen elegendő kapacitás az alkalmazás futtatásához, míg a maximum érték korlátozza a költségeket. A kívánt érték pedig az az ideális példányszám, amelyet az Auto Scaling igyekszik fenntartani.

Ráadásul az Auto Scaling integrálható más AWS szolgáltatásokkal, mint például a CloudWatch (a monitorozáshoz) és az Elastic Load Balancing (a terhelés elosztásához). Ez a szoros integráció lehetővé teszi, hogy az Auto Scaling valós időben reagáljon a változó körülményekre, és biztosítsa az alkalmazás optimális teljesítményét.

Az Auto Scaling alapelvei: Mi az a skálázás és miért van rá szükség?

Az AWS Auto Scaling szolgáltatás lényege, hogy automatikusan képes növelni vagy csökkenteni az alkalmazásodhoz rendelt számítási kapacitást a valós idejű igények alapján. Ezáltal biztosítható, hogy az alkalmazásod mindig optimális teljesítményt nyújtson, miközben minimalizálja a költségeket.

A skálázás elengedhetetlen a modern alkalmazások számára, mert a felhasználói forgalom és az erőforrásigény dinamikusan változhat. Képzeld el, hogy egy webáruházad van, ahol a karácsonyi szezonban hirtelen megnő a látogatók száma. Ha nincs automatikus skálázás, az áruházad lelassulhat, vagy akár le is állhat, ami bevételkiesést és elégedetlen ügyfeleket eredményezhet.

Az Auto Scaling három fő komponensből áll:

  • Launch Configuration (Indítási konfiguráció): Ez a sablon határozza meg, hogy milyen típusú EC2 példányokat indítson el az Auto Scaling csoport.
  • Auto Scaling Group (Auto Scaling csoport): Ez a gyűjtő, amelyben az EC2 példányok futnak. Meghatározza a minimális, maximális és kívánt példányszámot.
  • Scaling Policies (Skálázási irányelvek): Ezek az irányelvek határozzák meg, hogy mikor és hogyan növelje vagy csökkentse az Auto Scaling csoport a példányszámot.

Az Auto Scaling célja, hogy a rendelkezésre állás maximalizálása és a költségek optimalizálása mellett a felhasználói élményt is javítsa.

A skálázási irányelvek lehetnek célkövetőek (pl. CPU használat 50%-on tartása) vagy ütemezettek (pl. hétköznapokon 9-17 óra között több példány futtatása). Az Auto Scaling folyamatosan figyeli a metrikákat (pl. CPU használat, hálózati forgalom) és ennek megfelelően módosítja a példányszámot.

A manuális skálázás helyett az Auto Scaling automatikusan reagál a változó igényekre, így a fejlesztőknek és üzemeltetőknek nem kell folyamatosan figyelniük az infrastruktúrát és manuálisan beavatkozniuk.

Az AWS Auto Scaling komponensei: Launch Configuration/Template, Auto Scaling Group, Scaling Policies

Az AWS Auto Scaling automatikusan képes beállítani a megfelelő számú EC2 példányt az alkalmazásunk számára, igazodva a terheléshez. Ennek a folyamatnak a kulcsfontosságú elemei a Launch Configuration/Template, az Auto Scaling Group (ASG) és a Scaling Policies.

A Launch Configuration (LC) vagy a Launch Template (LT) határozza meg, *hogyan* indítsuk el az EC2 példányokat. Ez a sablon tartalmazza az összes szükséges információt egy új példány létrehozásához, például:

  • Az Amazon Machine Image (AMI), amely az operációs rendszert és az előre telepített szoftvereket tartalmazza.
  • A példánytípus (pl. t2.micro, m5.large), amely meghatározza a CPU-t, memóriát és hálózati teljesítményt.
  • A biztonsági csoportok, amelyek szabályozzák a bejövő és kimenő forgalmat.
  • A kulcspár, amely lehetővé teszi a biztonságos SSH hozzáférést a példányhoz.
  • A felhasználói adatok (user data), amelyek a példány indításakor futtatható szkriptek.

A Launch Template a Launch Configuration továbbfejlesztett változata, amely több funkciót kínál, például verziózást és tag-ek alkalmazását. Javasolt a Launch Template használata a Launch Configuration helyett.

Az Auto Scaling Group (ASG) a példányok logikai csoportja, amelyet az Auto Scaling kezel. Az ASG határozza meg, *hol* és *mennyit* indítsunk az EC2 példányokból. Főbb jellemzői:

  • A minimális kapacitás: az ASG által mindig futtatott példányok száma.
  • A kívánt kapacitás: az ASG által ideális esetben futtatott példányok száma.
  • A maximális kapacitás: az ASG által futtatható példányok maximális száma.
  • A rendelkezésre állási zónák (Availability Zones), ahol a példányok futhatnak.
  • A terheléselosztó (Load Balancer), amely elosztja a forgalmat a példányok között.

Az Auto Scaling Group tehát a dinamikusan változó kapacitásért felelős, a Launch Configuration/Template pedig a példányok létrehozásának alapját képezi.

A Scaling Policies határozzák meg, *mikor* és *hogyan* skálázzuk az ASG-t. Ezek a szabályok automatikusan növelik vagy csökkentik a példányok számát a terhelés változásainak megfelelően. Többféle Scaling Policy létezik:

  1. Target Tracking Scaling: A leggyakoribb típus, amely egy metrikát (pl. CPU kihasználtság) próbál egy meghatározott célértéken tartani.
  2. Step Scaling: A metrika értékétől függően különböző mértékben skálázza az ASG-t.
  3. Simple Scaling: Egy egyszerű szabály, amely egy fix számú példányt ad hozzá vagy távolít el az ASG-ből.
  4. Scheduled Scaling: Egy előre meghatározott időpontban vagy ütemezés szerint skálázza az ASG-t.

Például, beállíthatunk egy Target Tracking Scaling Policy-t, amely a CPU kihasználtságot 50%-on tartja. Ha a CPU kihasználtság meghaladja az 50%-ot, az Auto Scaling automatikusan elindít egy új példányt. Ha a CPU kihasználtság 50% alá esik, az Auto Scaling automatikusan leállít egy példányt.

A Scaling Policies használata lehetővé teszi, hogy az alkalmazásunk automatikusan alkalmazkodjon a változó terheléshez, biztosítva a magas rendelkezésre állást és a költséghatékonyságot.

Launch Configuration vs. Launch Template: A különbségek és mikor melyiket használjuk

A Launch Template rugalmasabb és újabb, mint a Launch Configuration.
A Launch Template modernebb, rugalmasabb megoldás, támogatja az új AWS funkciókat, szemben a Launch Configuration-nel.

Az AWS Auto Scaling szolgáltatásban a Launch Configuration és a Launch Template határozzák meg, hogy milyen EC2 példányokat indítson el a rendszer az Auto Scaling csoportban. Mindkettő kulcsfontosságú, de jelentős különbségek vannak a funkcionalitásuk és a használati esetük között.

A Launch Configuration egy régebbi megoldás. Lényegében egy sablon, ami meghatározza az EC2 példány indításához szükséges konfigurációs paramétereket, mint például az AMI (Amazon Machine Image), az instance type, a key pair, a security group és az EBS volumes. Egy Launch Configuration létrehozása után nem módosítható. Ha változtatni szeretnél rajta, újat kell létrehoznod, és frissítened kell az Auto Scaling csoportot, hogy az új konfigurációt használja.

Ezzel szemben a Launch Template egy modernebb és rugalmasabb megközelítés. Lehetővé teszi a verziókövetést, azaz több verziót is tárolhatsz ugyanabból a sablonból, és könnyen válthatsz közöttük. A Launch Template támogatja az EC2 On-Demand Capacity Reservations használatát is, ami a Launch Configuration esetében nem volt elérhető.

A Launch Template módosítható, és az Auto Scaling csoport frissítése során fokozatosan alkalmazhatók a változtatások.

Mikor melyiket érdemes használni?

  • Launch Configuration: Ha egyszerű, nem változó konfigurációra van szükséged, és a régebbi megoldásokkal való kompatibilitás fontos szempont.
  • Launch Template: Ha rugalmasabb, verziókövetett és fejlettebb konfigurációs lehetőségekre van szükséged, például On-Demand Capacity Reservations használatára, vagy ha gyakran kell módosítani az indítási paramétereket.

Összességében a Launch Template a javasolt megoldás az új implementációkhoz, mivel több funkciót kínál és jobban skálázható.

Auto Scaling Group (ASG) részletesen: Példányok kezelése, rendelkezésre állás, és a kívánt kapacitás

Az Auto Scaling Group (ASG) az AWS Auto Scaling szolgáltatásának központi eleme. Ez egy logikai csoport, amely EC2 példányokat tartalmaz, és automatikusan kezeli a példányok számát a beállított paraméterek alapján. Az ASG célja a rendelkezésre állás fenntartása és a kívánt kapacitás biztosítása.

Az ASG alapvető működése a következő:

  • Példányok indítása és leállítása: Az ASG automatikusan indít új EC2 példányokat, ha a terhelés megnő, vagy ha egy meglévő példány meghibásodik. Hasonlóképpen, leállít példányokat, ha a terhelés csökken.
  • Health Check: Az ASG rendszeresen ellenőrzi a példányok állapotát. Ha egy példány nem felel meg az állapotellenőrzésnek, az ASG automatikusan kicseréli.
  • Kívánt kapacitás fenntartása: Az ASG folyamatosan törekszik a beállított kívánt kapacitás fenntartására. Ez a kívánt kapacitás a példányok számát jelenti, amelyet az ASG mindig futtatni próbál.

A kívánt kapacitás beállításakor megadhatunk egy minimum, egy maximum és egy kívánt értéket. A minimum az ASG által futtatott példányok legkisebb számát jelenti, a maximum a legnagyobb számot, a kívánt pedig az ASG által ideálisan futtatni kívánt példányok számát. Az ASG a minimum és maximum határok között skálázódik, a terheléstől függően.

Az ASG a rendelkezésre állást több módon is biztosítja:

  • Több Availability Zone (AZ) használata: Az ASG képes példányokat indítani több AZ-ban, így ha egy AZ kiesik, a többi AZ-ban futó példányok tovább működnek.
  • Health Check: Ahogy említettük, az ASG rendszeresen ellenőrzi a példányok állapotát, és kicseréli a meghibásodott példányokat.
  • Automatikus helyreállítás: Ha egy példány valamilyen okból leáll, az ASG automatikusan elindít egy újat a helyére.

Az Auto Scaling Group nem csak skálázza az erőforrásokat, hanem gondoskodik a folyamatos működésről is, automatikusan helyreállítva a kieső példányokat.

Az ASG konfigurálásakor meg kell adni egy Launch Template-et vagy Launch Configuration-t. Ez a sablon határozza meg, hogy milyen típusú EC2 példányokat indítson az ASG (pl. példány típusa, AMI, security group, stb.). A Launch Template a modernebb megoldás, és több funkciót kínál a Launch Configuration-höz képest.

Az ASG skálázási szabályokat használ a példányok számának automatikus beállításához. Ezek a szabályok alapulhatnak CPU használaton, hálózati forgalmon, egyedi metrikákon (CloudWatch segítségével), vagy akár időzítésen is. A skálázási szabályok meghatározzák, hogy mikor és hogyan indítson vagy állítson le az ASG példányokat.

Skálázási irányelvek (Scaling Policies): Egyszerű, lépésenkénti és célkövető skálázás

Az AWS Auto Scaling lehetővé teszi az alkalmazások kapacitásának automatikus beállítását a terheléshez igazodva. Ennek központi elemei a skálázási irányelvek (scaling policies), melyek meghatározzák, hogy mikor és hogyan történjen a kapacitás növelése vagy csökkentése. Három fő típusa létezik:

  • Egyszerű skálázás (Simple Scaling)
  • Lépésenkénti skálázás (Step Scaling)
  • Célkövető skálázás (Target Tracking Scaling)

Egyszerű skálázás a legdirektebb megközelítés. Egyetlen metrika alapján dönt, és egyetlen skálázási műveletet hajt végre. Például, ha a CPU kihasználtság meghaladja a 70%-ot, adjunk hozzá 2 új példányt. A probléma ezzel az, hogy a skálázási művelet befejezéséig és a metrika stabilizálódásáig nem hajt végre újabb skálázást (cool-down period). Ez azt jelentheti, hogy a rendszer alulméretezett maradhat a csúcsidőszakokban.

Lépésenkénti skálázás finomabb irányítást tesz lehetővé. A metrika értéke alapján különböző lépéseket definiálhatunk. Például:

  1. CPU kihasználtság 70-80% között: adjunk hozzá 1 példányt.
  2. CPU kihasználtság 80-90% között: adjunk hozzá 2 példányt.
  3. CPU kihasználtság 90% felett: adjunk hozzá 3 példányt.

Ez a módszer lehetővé teszi a terheléshez jobban igazodó skálázást, elkerülve a hirtelen, túlzott kapacitásnövelést vagy -csökkentést. A lépések definiálásakor figyelembe kell venni a rendszer reakcióidejét és a terhelés ingadozásait.

A célkövető skálázás automatikusan beállítja az Auto Scaling csoport kapacitását, hogy egy adott metrika értéke a kívánt célszinten maradjon.

Például, beállíthatjuk, hogy az Application Load Balancer (ALB) kérések átlagos válaszideje 200 ms legyen. Az Auto Scaling automatikusan növeli vagy csökkenti a példányok számát annak érdekében, hogy ez a cél teljesüljön. Ez a legkényelmesebb megoldás, mivel nem kell manuálisan beállítani a skálázási lépéseket, az AWS automatikusan optimalizálja a kapacitást. A célkövető skálázás használatához ki kell választanunk egy megfelelő metrikát, amely jól tükrözi a rendszer terheltségét és a felhasználói élményt. Ilyen lehet a CPU kihasználtság, a memóriahasználat, a hálózati forgalom vagy az ALB kérések válaszideje.

Mindegyik skálázási irányelvnek megvannak a maga előnyei és hátrányai. Az egyszerű skálázás könnyen beállítható, de kevésbé rugalmas. A lépésenkénti skálázás finomabb irányítást tesz lehetővé, de több konfigurációt igényel. A célkövető skálázás a legautomatikusabb, de a megfelelő metrika kiválasztása kulcsfontosságú a hatékony működéshez.

Skálázási eseményindítók (Scaling Triggers): CloudWatch metrikák és egyéni metrikák használata

Az AWS Auto Scaling lényeges eleme a skálázási eseményindítók, melyek a tényleges skálázási folyamatot elindítják. Ezek az eseményindítók jellemzően CloudWatch metrikák alapján kerülnek meghatározásra. A CloudWatch folyamatosan monitorozza az AWS erőforrásaid teljesítményét, és különböző metrikákat szolgáltat, mint például a CPU kihasználtság, a hálózati forgalom, vagy a lemezes I/O műveletek száma.

Amikor egy adott metrika értéke meghalad egy előre definiált küszöbértéket, a skálázási eseményindító aktiválódik. Például, ha a CPU kihasználtság egy webkiszolgálón eléri a 70%-ot, az Auto Scaling csoport automatikusan elindíthat egy újabb EC2 példányt, hogy a terhelést eloszlassa.

A skálázási eseményindítók konfigurálásánál kritikus a megfelelő metrika és küszöbérték kiválasztása, mivel ez közvetlenül befolyásolja a rendszer reagálóképességét és költséghatékonyságát.

A CloudWatch által biztosított alap metrikákon túl lehetőség van egyéni metrikák használatára is. Ez különösen akkor hasznos, ha olyan speciális mérőszámok alapján szeretnénk skálázni, amelyek nem tartoznak a CloudWatch alapértelmezett metrikái közé. Például, egy e-kereskedelmi alkalmazás esetében a kosárba helyezett termékek száma, vagy a sikeres tranzakciók száma egyéni metrikaként definiálható, és felhasználható a skálázási folyamat vezérlésére.

Az egyéni metrikák létrehozásához az alkalmazásnak magának kell a mérőszámokat a CloudWatch-nak elküldenie. Ez programozottan, az AWS SDK segítségével történhet. Az egyéni metrikák használatával az Auto Scaling sokkal finomabban hangolható, és pontosabban igazítható az alkalmazás egyedi igényeihez.

A skálázási eseményindítók konfigurálása során figyelembe kell venni a skálázási időt (cooldown period) is. Ez az az időtartam, amíg az Auto Scaling csoport nem hajt végre újabb skálázási műveletet, miután egy korábbi művelet befejeződött. A cooldown period célja, hogy elkerülje a felesleges skálázásokat, amelyek a metrikák rövid távú ingadozásai miatt következhetnek be.

Az Auto Scaling integrációja más AWS szolgáltatásokkal: ELB, EC2, CloudWatch, RDS

Az Auto Scaling automatikusan méretezi az EC2 példányokat CloudWatch alapján.
Az Auto Scaling zökkenőmentesen integrálódik az ELB, EC2, CloudWatch és RDS szolgáltatásokkal a dinamikus erőforrás-kezelésért.

Az AWS Auto Scaling ereje abban rejlik, hogy zökkenőmentesen integrálódik más AWS szolgáltatásokkal, lehetővé téve a dinamikus és automatizált infrastruktúra-kezelést. Nézzük meg, hogyan működik ez a gyakorlatban a legfontosabb szolgáltatásokkal:

Elastic Load Balancing (ELB): Az Auto Scaling csoportok szorosan együttműködnek az ELB-vel. Amikor egy új EC2 példány elindul az Auto Scaling csoportban, az automatikusan regisztrálásra kerül az ELB mögött, így azonnal képes fogadni a bejövő forgalmat. Hasonlóképpen, amikor egy példány megszűnik, a rendszer automatikusan eltávolítja a terheléselosztóból, megelőzve a hibás útvonalakat és a szolgáltatás megszakadását. Ez biztosítja a magas rendelkezésre állást és a folyamatos felhasználói élményt.

Amazon EC2: Az EC2 az Auto Scaling alapja. Az Auto Scaling csoportok EC2 példányokat indítanak és állítanak le a beállított szabályok alapján. A launch configuration vagy launch template határozza meg, hogy milyen típusú EC2 példányokat kell használni, milyen AMI-t (Amazon Machine Image), milyen biztonsági csoportokat és egyéb konfigurációkat. Ezáltal biztosíthatjuk, hogy az új példányok azonnal készen álljanak a munkára, a megfelelő szoftverekkel és konfigurációkkal.

Amazon CloudWatch: A CloudWatch kulcsfontosságú az Auto Scaling működésének megfigyelésében és a skálázási döntések meghozatalában. Az Auto Scaling CloudWatch metrikákat használ a példányok teljesítményének figyelésére, például a CPU kihasználtságot, a hálózati forgalmat vagy az egyéni metrikákat. Amikor egy metrika átlépi a beállított küszöbértéket, a CloudWatch riasztást küld az Auto Scalingnek, ami elindíthat egy skálázási eseményt (új példány indítása vagy meglévő példány leállítása).

Az Auto Scaling a CloudWatch metrikák alapján automatikusan növeli vagy csökkenti az EC2 példányok számát, biztosítva a megfelelő erőforrásokat a változó terheléshez.

Amazon RDS: Bár az Auto Scaling közvetlenül nem skálázza az RDS adatbázisokat, fontos szerepet játszik az alkalmazások skálázásában, amelyek az RDS-t használják. Az Auto Scaling segítségével rugalmasan skálázhatjuk az alkalmazás rétegét, amely az RDS-hez kapcsolódik. Ez biztosítja, hogy az adatbázis ne legyen túlterhelve, és az alkalmazás továbbra is gyorsan és hatékonyan működjön. Például, ha az alkalmazásnak több számítási erőre van szüksége az adatbázis-műveletekhez, az Auto Scaling automatikusan több EC2 példányt indíthat el, hogy kezelje a megnövekedett terhelést.

Az Auto Scaling és ezen AWS szolgáltatások integrációja lehetővé teszi a teljesen automatizált, rugalmas és költséghatékony infrastruktúra létrehozását, amely képes alkalmazkodni a változó üzleti igényekhez.

Auto Scaling használatának előnyei: Költségoptimalizálás, rendelkezésre állás, teljesítmény

Az AWS Auto Scaling használata számos előnnyel jár, melyek közül kiemelkedik a költségoptimalizálás, a rendelkezésre állás növelése és a teljesítmény javítása.

A költségoptimalizálás terén az Auto Scaling lehetővé teszi, hogy pontosan annyi számítási kapacitást használjunk, amennyire szükség van. Ahelyett, hogy a csúcsterheléshez igazítanánk az infrastruktúrát, az Auto Scaling automatikusan skálázza a kapacitást a valós igényekhez igazodva. Így elkerülhetjük a felesleges erőforrások fenntartásának költségeit, és csak a ténylegesen felhasznált kapacitásért fizetünk. Például, éjszaka, amikor a forgalom alacsonyabb, az Auto Scaling csökkentheti az aktív EC2 instance-ok számát, ezzel jelentős megtakarítást eredményezve.

A rendelkezésre állás növelése kritikus fontosságú minden alkalmazás számára. Az Auto Scaling automatikusan helyettesíti a meghibásodott instance-okat, és gondoskodik arról, hogy mindig elegendő számú instance álljon rendelkezésre a kérések kiszolgálásához. Ez minimálisra csökkenti az állásidőt és biztosítja a folyamatos működést, még akkor is, ha váratlan terhelésnövekedés vagy infrastruktúra probléma merül fel.

Az Auto Scaling proaktívan skálázza az infrastruktúrát, megelőzve a teljesítményromlást és biztosítva a felhasználói élményt.

A teljesítmény javítása szorosan összefügg a költségoptimalizálással és a rendelkezésre állással. Az Auto Scaling biztosítja, hogy az alkalmazás mindig a megfelelő erőforrásokkal rendelkezzen a terhelés kezeléséhez. Ez azt jelenti, hogy a felhasználók gyorsabb válaszidőket tapasztalnak, és az alkalmazás képes kezelni a váratlan terhelésnövekedéseket anélkül, hogy lelassulna vagy összeomlana. A terheléselosztóval (Load Balancer) kombinálva az Auto Scaling egyenletesen osztja el a forgalmat az instance-ok között, optimalizálva a teljesítményt és elkerülve a túlterhelést.

Auto Scaling konfigurálása lépésről lépésre: Példa egy webalkalmazás skálázására

Az Auto Scaling konfigurálása egy webalkalmazás skálázására az AWS-en lépésről lépésre történik. Tegyük fel, hogy egy egyszerű webalkalmazásunk van, ami EC2 instance-eken fut, és szeretnénk automatikusan skálázni a terhelés függvényében.

Az első lépés egy Launch Configuration létrehozása. Ez a konfiguráció meghatározza, hogy milyen típusú EC2 instance-et fogunk használni, milyen AMI-t (Amazon Machine Image), milyen security group-ot és milyen instance profile-t. Például, választhatunk egy t2.micro instance típust egy saját készítésű AMI-val, ami a webalkalmazásunkat tartalmazza.

A következő lépés egy Auto Scaling Group (ASG) létrehozása. Az ASG használja a Launch Configuration-t az új instance-ek indításához. Itt kell beállítani a minimális, a kívánt és a maximális instance számot. Tegyük fel, hogy a minimális instance szám 2, a kívánt 3, és a maximális 5. Ez azt jelenti, hogy az ASG legalább 2 instance-et fog fenntartani, alapértelmezetten 3 fut, és szükség esetén akár 5-re is fel tud skálázni.

A skálázási szabályok beállítása kulcsfontosságú. Ezek a szabályok határozzák meg, hogy mikor és hogyan skáláz az ASG. Két fő típusa van a skálázási szabályoknak: célkövető (Target Tracking) és lépésenkénti (Step Scaling). A célkövető skálázás megpróbál egy adott metrikát egy bizonyos értéken tartani. Például, beállíthatjuk, hogy az átlagos CPU kihasználtság az instance-eken ne lépje túl a 60%-ot. A lépésenkénti skálázás pedig konkrét lépéseket hajt végre a metrikák változására reagálva. Például, ha a CPU kihasználtság 80% fölé emelkedik, adjunk hozzá egy instance-et.

Fontos beállítani a Health Check-et. Az ASG folyamatosan ellenőrzi az instance-ek állapotát. Ha egy instance nem válaszol a Health Check-re (például egy HTTP endpoint-en keresztül), az ASG automatikusan kicseréli egy új instance-re.

A terhelés elosztásához használjunk egy Load Balancer-t (pl. Application Load Balancer). Az ASG automatikusan regisztrálja az új instance-eket a Load Balancer-hez, és eltávolítja a megszűnő instance-eket. A Load Balancer egyenletesen osztja el a bejövő forgalmat az instance-ek között.

Az Auto Scaling nem csak a terhelés növekedésére reagál, hanem a terhelés csökkenésére is. Ha a terhelés csökken, az ASG automatikusan eltávolítja az instance-eket, hogy optimalizálja a költségeket.

Íme egy példa a konfigurációs lépésekre:

  1. Hozz létre egy Launch Configuration-t.
  2. Hozz létre egy Auto Scaling Group-ot, ami a Launch Configuration-t használja.
  3. Állíts be minimális, kívánt és maximális instance számot.
  4. Konfigurálj egy célkövető skálázási szabályt a CPU kihasználtság alapján.
  5. Állíts be egy Health Check-et a webalkalmazás endpoint-jére.
  6. Hozd létre az Application Load Balancer-t és regisztráld az ASG-t a Load Balancer-hez.

Ezzel a konfigurációval a webalkalmazásunk automatikusan skálázódik a terhelés függvényében, biztosítva a magas rendelkezésre állást és az optimális költséghatékonyságot.

Gyakori problémák és hibaelhárítás az Auto Scaling használata során

Az AWS Auto Scaling használata során számos problémával találkozhatunk, melyek befolyásolhatják az alkalmazásunk rendelkezésre állását és teljesítményét. A leggyakoribb problémák közé tartozik a nem megfelelő konfiguráció, a hibás állapotjelzők és a kapacitáshiány.

A nem megfelelő konfiguráció gyakran a launch configuration vagy launch template hibáiból ered. Például, ha a beállított AMI (Amazon Machine Image) elavult, vagy nem tartalmazza a szükséges szoftvereket, az új instance-ok nem fognak megfelelően elindulni. Ennek elkerülése érdekében rendszeresen ellenőrizzük és frissítsük a launch configuration-t vagy launch template-et.

A hibás állapotjelzők (health checks) szintén problémát okozhatnak. Ha az Auto Scaling csoport az instance-okat hibásan azonosítja nem működőképesként, akkor feleslegesen indíthat el új instance-okat, vagy leállíthatja a működőket. Győződjünk meg arról, hogy az állapotjelzők pontosan tükrözik az instance-ok valós állapotát. Használhatunk EC2 health checks-et, vagy ELB (Elastic Load Balancer) health checks-et a pontosabb monitorozás érdekében.

A kapacitáshiány akkor fordul elő, ha az AWS régióban nincs elegendő rendelkezésre álló erőforrás az új instance-ok elindításához. Ezt elkerülhetjük, ha több availability zone-t használunk, és instance típusokat diverzifikálunk. Így ha egy availability zone-ban kapacitásprobléma merül fel, az Auto Scaling csoport más zónákban is képes lesz új instance-okat indítani.

A problémák elhárításának kulcsa a részletes monitorozás és a gyors reagálás.

A monitorozáshoz használhatjuk a CloudWatch metrikákat, amelyek részletes információkat nyújtanak az Auto Scaling csoport teljesítményéről és állapotáról. Ha problémát észlelünk, azonnal vizsgáljuk meg a launch configuration-t, az állapotjelzőket és a kapacitás rendelkezésre állását.

Gyakori hibák és azok javítása:

  • Instance launch failed: Ellenőrizzük a launch configuration-t/template-et, a security group-okat és az IAM role-okat.
  • Health check failed: Ellenőrizzük az állapotjelzők konfigurációját és az instance-ok logjait.
  • Scaling activity failed: Ellenőrizzük a scaling policy-ket és a CloudWatch riasztásokat.

A hibaelhárítás során ne felejtsük el a naplózást sem. Az Auto Scaling csoportok eseményeit és az instance-ok logjait elemezve gyorsan azonosíthatjuk a probléma okát és megtalálhatjuk a megfelelő megoldást.

Biztonsági szempontok az Auto Scaling használatakor: IAM szerepkörök, engedélyek

Az IAM szerepkörök szigorú kezelése elengedhetetlen az Auto Scalingben.
Az IAM szerepkörök pontos szabályozása kritikus az Auto Scaling biztonságához, minimalizálva az illetéktelen hozzáférés kockázatát.

Az Auto Scaling csoportok biztonsága nagymértékben függ az IAM szerepköröktől és engedélyektől. Ezek határozzák meg, hogy az Auto Scaling csoport által indított EC2 példányok milyen AWS erőforrásokhoz férhetnek hozzá.

A legfontosabb, hogy a példányokhoz rendelt IAM szerepkörök csak a legszükségesebb engedélyeket tartalmazzák.

Például, ha egy alkalmazásnak S3 bucket-ből kell adatot olvasnia, a szerepkörnek csak read-only hozzáférést kell biztosítani a konkrét bucket-hez, és semmi máshoz. Kerülni kell a „adminisztrátori” jogosultságok használatát, mivel ez jelentősen növeli a biztonsági kockázatot.

Az Auto Scaling szolgáltatás maga is egy IAM szerepkört használ, melynek segítségével az EC2 példányokat tudja elindítani és kezelni. Ennek a szerepkörnek is minimalista engedélyekkel kell rendelkeznie, elegendőnek kell lennie a példányok elindításához, leállításához és a CloudWatch metrikák lekérdezéséhez.

Gyakori hiba, hogy az Auto Scaling csoport nem megfelelően konfigurált biztonsági csoportokat használ, ami lehetővé teszi a nem kívánt forgalmat a példányok felé. A biztonsági csoportok szabályait szigorúan kell definiálni, csak a szükséges portokon és forrásokból engedélyezve a bejövő forgalmat.

Auto Scaling monitorozása és naplózása: CloudWatch Logs, CloudTrail

Az AWS Auto Scaling működésének elengedhetetlen része a monitorozás és naplózás. Ennek megvalósításában a CloudWatch Logs és a CloudTrail szolgáltatások játszanak kulcsszerepet.

A CloudWatch Logs lehetővé teszi az Auto Scaling csoportok által generált naplóadatok gyűjtését és tárolását. Ezek a naplók tartalmazhatnak információkat a példányok indításáról, leállításáról, valamint a méretezési eseményekről. A naplóadatok alapján riaszásokat állíthatunk be, például ha egy példány indítása sikertelen, vagy ha a csoport mérete a vártnál jobban eltér.

A CloudTrail az AWS-fiókunkban végrehajtott API-hívásokat rögzíti. Ezáltal nyomon követhető, hogy ki, mikor és milyen műveletet hajtott végre az Auto Scaling csoporttal kapcsolatban. Például, ha valaki manuálisan módosítja a csoport minimális vagy maximális méretét, az a CloudTrail naplóiban rögzítve lesz. Ez segít a biztonsági incidensek kivizsgálásában és a megfelelőségi követelmények teljesítésében.

A CloudTrail naplók elengedhetetlenek a biztonsági auditokhoz, mivel teljes körű képet adnak az Auto Scaling csoport konfigurációjának változásairól.

A két szolgáltatás együttes használata biztosítja, hogy az Auto Scaling csoportunk működését teljes körűen átlássuk, és időben reagálhassunk a felmerülő problémákra. A CloudWatch Logs a példányok működésére vonatkozó részletes információkat nyújt, míg a CloudTrail az Auto Scaling konfigurációjában történt változásokat rögzíti.

Share This Article
Leave a comment

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük