Magas rendelkezésre állás Azure alapokon

Bejegyzés dátuma:
2020-01-09

Egy infrastruktúra tervezése során a hiányos ismeretek félreértésekhez, később problémákhoz vezethetnek. Ha nem tudjuk, mit és miért csinálunk, annak előbb-utóbb nem várt következményei lesznek. 

A következőkben a saját tapasztalataimat szeretném megosztani az Azure felhő szolgáltatással kapcsolatban.

Egy olyan üzleti alkalmazásnál, ahol folyamatos kiszolgálásra van szükség, a magas rendelkezésre állás kulcsfontosságú tényező.

Mit értünk magas rendelkezésre állás alatt?

Az SLA meghatározása

Az SLA a Service Level Agreement rövidítése, ami ‘szolgáltatási szint megállapodás’-t jelent szó szerint. A megrendelő és a szolgáltató között létrejött szerződéskor létrejött megállapodás nem csak azt tartalmazza, hogy mit kell csinálni, hanem a feltételeket is, amelyeknek a teljesülése esetén tekinthető elfogadhatónak az adott szolgáltatás. 

Az SLA szerződések legfontosabb célja a folyamatos szolgáltatás minőségének biztosítása a teljes szerződés időtartama alatt.

A rendelkezésre állási szint meghatározása

A rendelkezésre állás jelzi, hogy az adott infrastruktúra (adatok, alkalmazások) milyen mértékben állnak készen a hozzáférésre, ha szükség van rájuk. A különböző cégek rendelkezésre állási igényei eltérőek lehetnek, illetve gyakran egy adott cégen belül is a különböző rendszerekkel szemben támasztott igények is változhatnak. A rendelkezésre állás meghatározásánál fontos megismerni a kapcsolódó fogalmakat, mint például:

Üzletmenet folytonosság

Az üzletmenet folytonosság az adott cég tűrőképessége arra az időszakra, amikor az adott rendszere elérhetetlenné válik. Az üzletmenet-folytonossági megoldás lefedi az adatokat, a működési környezetet, alkalmazásokat, az alkalmazást kiszolgáló környezetet, felhasználói felületeket. Fontos, hogy a terv a katasztrófa utáni helyreállítást is magában foglalja, illetve tartalmazza a magas szintű rendelkezésre állás ismertetését is.

Katasztrófa utáni helyreállítás

Az adott cég teljes üzem kimaradásának esetére biztosít egy tervet. Egy konkrét helyreállítási célt határoz meg.

Magas szintű rendelkezésre állás

Az adott rendszer tűrőképessége, mekkora kimaradást képes még elviselni úgy, hogy ezzel nem keletkezik kára, vesztesége. Ez a szint teljesen eltérő minden esetben, meghatározásához a teljes üzleti folyamatokat ismerni kell. A rendelkezésre állást leállásokban mérik, tehát az az időszak, amikor a rendszer nem áll a felhasználók rendelkezésére. Fontos, hogy itt megkülönböztethetünk tervezett és nem tervezett leállást is. A tervezett leállás során szándékosan tesszük a rendszert elérhetetlenné, mert ilyenkor karbantartás céljából műveleteket végzünk. Például: frissítések telepítése, mentések, konfigurációk módosítása. A be nem tervezett leállásokat viszont általában meghibásodások okozzák. Például: lemez meghibásodások, rendszerhiba, tápellátási probléma, hálózati probléma. Ha a be nem tervezett leállás teljes rendszerleállást okoz, akkor részletes katasztrófa-helyreállítási tervre van szükség a rendszer ismételt üzembe helyezéséhez.

A rendelkezésre állási szint szükséglete eltérő és az elérni kívánt nagyobb szint költsége is nagyobb. A szint meghatározásánál fontos felmérni az üzleti igényeket és ezek alapján meghatározni a rendelkezésre állási szintet. Gyakran látunk különböző százalékokat feltüntetve, érdemes tisztában lenni azzal, hogy ez pontosan mit is takar. A rendelkezésre állás szintje egy évre vonatkoztatva:

  • 90 % -os szint esetén az egy év alatti leállások összesített időtartama: 36,5 nap
  • 95% -os szint esetén az egy év alatti lellások összesített időtartama: 18,25 nap
  • 99% -os szint esetén az egy év alatti leállások összesített időtartama: 3,65 nap
  • 99,9% -os szint esetén az egy év alatti leállások összesített időtartama: 8,76 óra
  • 99,99% -os szint esetén az egy év alatti leállások összesített időtartama: 50 perc
  • 99,999% -os szint esetén az egy év alatti leállások összesített időtartama: 5 perc

Azonban nem mindegy, hogy mikor vannak ezek a leállások. Azonos szintről beszélünk, ha például egy 99%-os szint esetén elosztva minden nap éjjel 2-3 perc kimaradás van, illetve, ha  3 napig folyamatosan nem elérhető az adott rendszer. Látható, hogy az azonos szint ellenére ez két nagyon különböző esetet is jelenthet.

Rendelkezésre állás az Azure környezetben

Egy webkiszolgáló esetén egy darab virtuális gép prémium szintű tárolóval ellátva 99,9%-os rendelkezési állási szintet jelent. Tehát amikor a felületen naponta 4-5 rendszerleállásról kapok értesítést, ami általában 1-10 percig tart (de előfordult 20 perces leállás is), teljesen normálisnak mondható. Ez egy privát honlap esetén megengedhető, de egy üzleti alkalmazásnál semmiképpen sem. Abban az esetben, ha kettő vagy több virtuális gép egy rendelkezésre állási csoportban kerül megvalósításra, a rendelkezésre állási idő legalább 99,95%. Abban az esetben, ha kettő vagy több virtuális gép kerül létrehozásra egy régión belül két vagy több rendelkezésre állási zónában, akkor a rendelkezésre állási idő legalább 99.99%.

Az Azure környezetben 3 fő esemény történhet, ami hatással van egy virtuális gép elérhetőségére:

  • Nem tervezett hardware karbantartási esemény

Amikor az Azure platform feltételezi, hogy valamilyen rendszerkomponens következtében hiba történt. Ilyenkor elindul egy élő migrációs folyamat, ami a hibás virtuális gépet egy másik, egészséges környezetbe helyezi. A migráció idejére a virtuális gép teljesítménye csökken, illetve nem lesz elérhető egy rövid ideig. Azokban az esetekben amikor az élő migráció nem megvalósítható, váratlan leállás esemény következik be.

  • Váratlan leállás

A hardverben vagy a fizikai infrastruktúrán belül valahol hiba keletkezik, ami lehet hálózati hiba, helyi lemez hiba vagy egyéb adatközpontban bekövetkezett hiba. A leállás során az ideiglenes tárolóban tárolt adatok elvesznek, és elindul az újraindítási folyamat, ami szintén bizonyos idejű kiesést okoz.

  • Tervezett karbantartási esemény

Olyan tervezett frissítési folyamatok, amelyeket a Microsoft végez tervezetten, hogy az adott platform megbízhatóságát, biztonságát növelje. Ezekben az esetekben elképzelhető, hogy a virtuális gép újraindítására is szükség lehet.

Az infrastruktúra tervezése során fontos figyelembe venni ezeket az eseményeket, hogy az üzletileg elvárt szolgáltatási szintnek megfeleljünk.

Hiba tartomány (fault domain):

A Hyper-V hostoknak egy meghatározott csoportja, amelyek érintettek lehetnek egy adott hiba bekövetkezésekor. Azok a virtuális gépek, amelyek egy hiba tartományban vannak, az alattuk lévő infrastruktúrában osztoznak egymással. Ez azt jelenti, ha bármilyen hiba bekövetkezik, az hatással lesz az összes benne lévő virtuális gépre.

Frissítési tartomány (update domain):

Az Azure infrastruktúrában minden frissítési tartomány egy adott fizikai gépet képvisel, amit lehet frissíteni és újraindítani egy időben. Az Azure Service Fabric biztosítja, hogy a tervezett frissítési folyamatok minden frissítési tartományra külön-külön történjenek. Amikor az egyik tartományra  befejeződött, folytatja a következővel.

Rendelkezésre állási csoport (availability set)

Kettő vagy több olyan virtuális gép logikai csoportosítása, amely egy hiba érzékeny pont elkerülése miatt különböző hiba tartományokba van telepítve. A csoportba szervezés biztosítja, hogy az adott hiba és frissítési tartományokba kerüljenek az adott gépek. Fontos tudni, hogy csak a virtuális gép létrehozásakor van lehetőség csoportba tenni, később nem. Fontos azt is tudni, hogy az így csoportba szervezett gépek között nincs szinkronizáció, csak a virtuális gépet teszi elérhetővé, semmi mást. A garantált rendelkezésre állási idő így 99,95%. A csoport biztosítja, hogy az újraindítások és az élő migrációk során bekövetkezett leállások ne legyenek hatással a gépek által nyújtott szolgáltatásra. Egy csoportba maximum 100 virtuális gépet tehetünk.

Ha a többrétegű alkalmazásunkat rendelkezésre állási csoportokba szervezzük, meg tudjuk védeni a különböző leállásoktól, kiesési időktől.

Az így létrehozott csoportban lévő gépek forgalom elosztására 3 különböző megoldás lehetséges:

  • Azure Load Balancer (layer 4 balancer, nem támogatja az SSL-t)
  • Application Gateway (layer 7 balancer, támogatott protokoll: http, https, websocket)
  • Traffic Manager

Rendelkezésre állási zóna  (availability zone)

A rendelkezési zónák fizikailag elkülönített helyek egy Azure-régión belül. Minden zóna egy vagy több független erőforrással, hálózatkezelési megoldással ellátott adatközpontból áll. A rendelkezésre állási zónában létrehozott gépek további biztonságot jelentenek, így nagyobb rendelkezésre állás is kapcsolódik hozzá: 99,99%. Jelenleg nem minden régióban érhetőek el. Egy régióban minimum 3 rendelkezésre állási zóna található.

Virtuális gép méretezési csoport (virtual machine scale set)

Azonos, automatikus skálázású virtuális gépek csoportja, amit a magasabb rendelkezésre állás ,valamint a terhelés kiszolgálása miatt hoznak létre. A terheléselosztó használatával egyszerűen beállítható a forgalom elosztása több példány között. Az általa létrehozott virtuális gépeket automatikusan egy rendelkezésre állási zónába helyezi el vagy rendelkezésre állási csoportot hoz létre.