EDU::GAMF::Felhőalapú-szolgáltatások::AWS

Innen: Farkas Attila Wiki
A lap korábbi változatát látod, amilyen ApelPro (vitalap | szerkesztései) 2022. október 17., 17:01-kor történt szerkesztése után volt. (→‎Launch configuration létrehozása)
Ugrás a navigációhoz Ugrás a kereséshez

Amazon Web Services regisztráció

Az AWS mindenki számára biztosít 1 év ingyenes próbaverziót. Ehhez regisztrálnunk kell a rendszerbe, amihez szükségünk lesz egy email címre, egy telefonszámra a megerősítéshez és egy netes vásárlásra alkalmas bankkártyára. A regisztráció során az AWS 1$-ral meg terheli a számlát, de később erre nem tart igény, így a tranzakció lejáratakor jóváíródik a számlán.

Ingyenes verzió korlátai

Az ingyenes verzióban nem minden érhető el és ami mégis, az sem korlátlan ideig (750 óra EC2 futási idő például), amit ha átlépünk, akkor fizetési kötelezettségünk jelentkezik a szolgáltató felé. Igyekezzünk mindent leállítani az órai munka illetve az otthoni gyakorlás után, hogy lehetőleg ne kerüljön pénzbe a féléves munkánk. A hallgatók által elszenvedett károkért sem az iskola sem Én nem tudunk felelősséget vállalni, de azt meg tudjuk ígérni, hogy fizetős szolgáltatást nem használunk és nem is kérünk számon.

Felhő alapok

Szolgáltatási szintek

A felhőszolgáltatások, így az AWS is, alapvetően 3 szolgáltatási szintet különböztetnek meg:

IaaS, azaz Infrastructure as a Service

Ez a legalacsonyabb szintű szolgáltatás. Ebben az esetben a szolgáltató infrastruktúráját vesszük igénybe: nem kell virtualizálással, szerverezéssel és L1-L2 szintű hálózati beállításokkal foglalkoznunk, ezt készen kapjuk. Efölött azonban mindenért mi, a vevő felelünk, tehát mi tartjuk karban az operációs rendszert, mi döntjük el, hogy milyen alkalmazásokat telepítünk rájuk és azok frissítését hogyan oldjuk meg; mi felelünk az alkalmazásunk működéséért.
Például: EC2

PaaS, azaz Platform as a Service

Egy szinttel az IaaS felett van: csupán az applikációért és az adatok helyességéért felelünk, minden alsóbb szintet a szolgáltató tart karban. Hozzáférést is csak az applikációhoz tartozó eszközök segítségével kapunk, az alsóbb szinteket nem érjük el (nem tudunk be SSH-zni a szerverre pl.).
Például: RDS

SaaS, azaz Service as a Service

Ez a legmagasabb szintű szolgáltatás. Ez esetben egy konkrét alkalmazást veszünk igénybe, tehát az alkalmazás és az annak működését biztosító adatok menedzselése is a szolgáltató hatáskörében marad. Tipikusan ilyen az email, a közösségi média, de ilyen lehet az Office 365 által kínált online tér is, ahol gyakorlatilag dokumentumot is tudunk szerkeszteni a gépre telepített alkalmazások nélkül is, online eszközökkel (bár ez nem AWS-en belüli példa, talán ezek a legismertebb szolgáltatások).

Felhők típusai

Privát felhő

Az adatok nincsenek megosztva harmadik féllel, a kontrollt teljes egészében a struktúrát kialakító rendszergazda kezében van. Természetesen nem korlátozódik a cég helyszínén üzemeltetett szerverekre a fogalom, szóba jöhetnek harmadik féltől bérelt VPS, VDS, de komplett bérelt szerverek is, de általában az eszközök VPN alagúton keresztül cserélnek információt, ezzel védve az adatokat.

Publikus felhő

Az adatokat egy harmadik fél által kialakított hálózaton keresztül használjuk, ami a csomagokat a publikus IP hálózaton keresztül továbbítják egymás között. Óriási előnye, hogy nincs üzemeltetési költsége a szolgáltatást igénybe vevőnek, általában a CPU idő után kell fizetni, tehát flexibilis költséget hoz magával.

Hibrid felhő

A publikus és a privát felhő kombinációja, így a kiemelt biztonságot igénylő adatok nem kerülnek ki az internetre, míg a kevésbé érzékeny adatok továbbíthatók a publikus felhő segítségével, ezzel kihasználva annak minden előnyét.

AWS alapok

Figyelem! Az iskolai hálózatból csak az eu-west-1 és az eu-central-1, azaz Írország és Frankfurt IP címei vannak engedélyezve, ezekre fogunk tudni SSH kapcsolaton keresztül csatlakozni.
Figyelem! Próbaidőszak alatt minden szolgáltatás mellett keressük a Free tier eligible megjegyzést, különben fizetési kötelezettségünk adódhat!

EC2 szolgáltatásai

Az EC2 gyakorlatilag egy VPS-nek feleltethető meg és nem is tévedünk vele hatalmasat. A neve az Elastic Cloud Compute szavak kezdőbetűiből kialakuló ECC-ből fakad, a 2-es a végén jelzi, hogy a C betűből kettő van.
A különbséget a VPS-hez az EC2 futási ideje okozza: bár nem feltétlen, de meg van a lehetősége, hogy egyik napról a másikra megszűnjön egy EC2 úgy, hogy az alkalmazásunk mégis működőképes marad. E tulajdonsága miatt kapta az Elastic nevet, amit körültekintően kell kezelni: semmilyen adatot nem tárolhatunk úgy egy alkalmazáson belül, mint egy VPS esetén: a dinamikus adatok (pl. PHP Session, feltöltött fájok) egy EC2 csere esetén elvesznek, így ezeket nem helyben fogjuk tárolni.

Az EC2 szolgáltatásait a keresőmezőbe írt „EC2” kulcsszóval és az eredményekben megjelenő EC2-re való kattintással érhetjük el.

GAMFAWS search EC2.png.png

Az alapértelmezetten megjelenő menüpont a Dashboard, ahol információkat találhatunk az EC2 köré felhúzható szolgáltatásokról, melyeknek egy részét a továbbiakban tárgyalni is fogunk. Az összefoglaló táblázat az alább látható módon jelenik meg. Figyelem, a táblázat csak az adott régióban elindított/elérhető szolgáltatásokat mutatja, régió váltása előtt érdemes az esetlegesen létrehozott, régió függő elemeket leállítani, hogy később ne jelenjen meg fizetési kötelezettség.

GAMFAWS ec2 dashboard.png

EC2 telepítése és beállítása

EC2 létrehozásához meg kell nyomnunk a Launch instance gombot, melyet több helyen is elérhetünk:

  • A Dashboardon
  • A bal oldali menüben található Intances menüpont megnyitása után jobb felül

A gomb minden esetben a következőképp néz ki: GAMFAWS ec2 launch instance button.png

A gombra kattintva egy űrlap jelenik meg, amely segítségével elvégezhetjük a szükséges beállításokat:

Név és tag beállítok
Megadása nem kötelező, de több szerver futtatása esetén könnyebben azonosíthatjuk be őket ezek segítségével
GAMFAWS ec2 setup name and tags.png
Az Add additional tags gombra kattintva további kulcs=érték párokat adhatunk hozzá, amivel dinamikusan csatolhatjuk össze egyéb szolgáltatásokkal, amelyek egy-egy kulcsot keresve döntik el, hogy melyik szolgáltatásokkal kell együttműködniük (például monitorozás bekapcsolása 'monitoring=true' kulcs=érték pár alapján.
Kezdeti képfájl kiválasztása
 Az Amazon többféle indítóképpel is rendelkezik, így nagy valószínűséggel meg fogjuk találni a hozzánk közelálló operációs rendszert. Új hozzáadására nincs lehetőségünk, de készíthetünk az alapképfájlokból olyan verziót, ami már  tartalmazza a saját konfigurációnkat (lásd itt).
GAMFAWS ec2 setup AMI choose2.png
Az órákon az Ubuntu legújabb verzióját használjuk, mivel ennek a Desktop változata az egyik legelterjedtebb a Linux felhasználók körében, így nem kell más környezetet megszoknia egy átlag hallgatónak. Érdemes lehet azonban egyéb disztribúciók kipróbálása is, különösen a Debian-t, Suse-t/OpenSuse-t, ReadHat-et és annak ingyenes változatait (AlmaLinux, RockyLinuxtm, amelyek az egykori CentOS-t hivatottak váltani), mivel céges környezetben ezek sűrűbben előfordulnak: némelyik a kisebb erőforrásigénye, míg másik az Enterprise szolgáltatásai miatt.
Szerver típusának meghatározása
Különböző erősségű szerverkonfigurációk közül választhatunk, de természetesen nem mindegyik érhető el az ingyenes verzióban. A számítógépek ára a konfiguráció függvényében változik, de csak azért az időért kell fizetni, amíg a szerver Running állapotban volt. Az órán az alapértelmezett t2.micro-t használjuk.
GAMFAWS ec2 setup instance type.png
Kulcspár hozzárendelése
Az Amazonon belüli szolgáltatásokat felhasználónév/jelszó páros helyett SSH kulcspárok segítségével érjük el. Minden felhasználó számára készíthetünk egyet és jogosultságok segítségével korlátozhatjuk, hogy mihez férhet hozzá (IAM).
Ebben a szekcióban ki kell választanunk, hogy a telepíteni kívánt EC2-höz milyen kulcspárral lehet majd hozzáférni. Amennyiben nem rendelkezünk még kulcspárral, úgy van lehetőségünk helyben elkészíteni a Create new keypair gomb segítségével, amelynek lépési megegyeznek az itt leírtakkal.
GAMFAWS ec2 setup keypair.png
Hálózati és biztonsági beállítások
Az EC2-k közötti kommunikációs csatornák kialakításához definiálnunk kell, hogy melyik virtuális hálózatba akarjuk elhelyezni és milyen alkalmazásokat szeretnénk elérhetővé tenni. Ezt a VPC és a Security Group beállításával tehetjük meg. Előbbi a virtuális hálózatnak felel meg, míg utóbbi hasonlóan egy tűzfalhoz, meghatározza, hogy a szerveren milyen portokat érhetünk el. Érdemes az SSH-t engedélyezni és ha webes alkalmazást szeretnénk rajta futtatni a későbbiekben, akkor a HTTP és/vagy HTTPS szolgáltatást/szolgáltatásokat is, így később nem kell szerkeszteni ezeket a beállításokat.
GAMFAWS ec2 setup networking.png
Tárhely beállítások
Ebben a részben adhatjuk meg, hogy a szerverünk mekkora tárhellyel rendelkezzen. Egy Linux alapú operációs rendszernek nem kell 8GB-nél több, így az alapértéken hagyhatjuk. Az itt megadott érték inkább csak egy korlát, valójában csak akkora tárhelyet vesz igénybe, amennyire ténylegesen szüksége van a rendszernek. Ez az érték alatt látható figyelmeztetés miatt lényeges, hiszen a 30GB-t elhagyva fizetőssé válik a tárterület is, ám ez nem jelenti, hogy csak 4 szervert tudnánk elindítani az ingyenes keretek között.
GAMFAWS ec2 setup ebs.png
Ezt a szolgáltatást EBS-nek nevezik (Elastic Block Store) és az EC2 megszűnésekor minden erre mentett adat elveszik, így általában az OS-t és az applikáció kódját tároljuk ezen - semmi dinamikus adatot.
Haladó beállítások
Ebben a szekcióban különböző beállításokat végezhetünk el, ám ezeket az órán nem módosítjuk. Érdekes lehet azonban a menüt lenyitva legalul található User data opció, amivel parancsokat adhatunk meg az új operációs rendszer számára, hogy miket futtasson le. Ennek segítségével lehetőségünk nyílik applikációk telepítésére - pl. git - és a kód letöltésére egy másik szerverről, amennyiben a kiválasztott képfájl nem tartalmazta azt.
Az órai keretek között ezt a funkciót nem használjuk ki, de érdemes lehet kipróbálni, mivel valós alkalmazások üzemeltetésekor jól jöhet.
GAMFAWS ec2 setup userdata.png
Összefoglaló
A beállító panel mellett jobbra találhatjuk az összefoglaló ablakot, amelyben megtalálható a Launch Instance gomb. Ennek segítségével kezdhetjük meg a végleges telepítést, ha erre rá nyomunk, akkor a rendszer megkezdi a kiválasztott konfiguráció telepítését. Ha ebben az ablakban pénzösszegeket látunk, akkor az egészen biztosan fizetési kötelezettséget vonz magával, legyünk körültekintőek.
GAMFAWS ec2 setup summary.png
Az elkészült instance tulajdonságai
A futó szerverek az Instances menüpontban érhetők el. Az egyes sorokra kattintva alul megtekinthetjük a beállításait, amely tartalmazza az AWS által kiosztott publikus és privát IP címeket és domain neveket. Ezeken keresztül tudunk kommunikálni szerverünkkel.
GAMFAWS ec2 properties.png
Jelen példában a külső IP címünk: 3.252.168.207, amit a mellette található ikonnal egyszerűen a vágólapra másolhatunk.
Csatlakozás Linux terminálból
A csatlakozáshoz nyissunk meg egy terminált a CTRL+T billentyűkombinációval, majd navigáljunk a cd parancs segítségével a letöltött kulcsfájl mappájába. Az SSH megköveteli, hogy a csatlakozáshoz használt kulcsfájlhoz csak a tulajdonos felhasználó férjen hozzá, így a következő parancsot futtassuk le rajta: chmod 600 test.pem
A következő paranccsal tudunk kapcsolódni: ssh -i test.pem ubuntu@3.252.168.207
Ha a fenti parancs kéri, fogadjuk el a tanúsítványt. Amennyiben Permission error hibát kapunk, akkor a fenti chmod parancsra van szükségünk, vagy nem mi vagyunk a kulcsfájl tulajdonosai (ls -l segíthet).
A test.pem az AWS rendszerből letöltött .pem formátumú kulcsfájl, az ubuntu a szerveren elérhető felhasználó. A különböző disztribúcióknál használt felhasználónevekről ezen a linken tájékozódhatsz.
GAMFAWS ec2 connect linux.png
Csatlakozás Putty használatával
Amennyiben a .pem kiterjesztésű állományt töltöttük le az AWS rendszeréből, akkor a puttygen eszköz segítségével ki kell exportálni belőle a privát kulcsot. Ezen a linken részletes segédlet található a programcsomaghoz, ahol további funkciók is bemutatásra kerülnek (pl. kulcsgenerálás).

Kulcspár létrehozása

A kulcspárok kezeléséhez a Key Pairs linket nyissuk meg a bal oldali menüből. Újat a jobb oldalon látható Create key pair gomb segítségével készíthetünk. GAMFAWS ec2 keypair create.png

A gombra kattintva egy űrlapot kapunk, amely végig vezet minket a létrehozás lépésein.

  1. Név megadása
  2. Típus kiválasztása - RSA-val dolgozunk az órán
  3. Letöltendő kulcs típusa - Linux terminálból való csatlakozáshoz a .pem fájlra lesz szükségünk
  4. Esetleges tag-ek hozzárendelése
  5. A Create key pair gombra kattintva letölthetjük a kulcspárt

Kulcspár létrehozása

Figyelem! A kulcspár csak a létrehozás után tölthető le egyetlen egyszer, az elvesztett fájlok nem reprodukálhatók! Amennyiben egy EC2 csak az elhagyott kulcspárral érhető el, úgy annak (EC2) törlése és újrakonfigurálása szükséges egy új kulccsal.

Security Group

A Security Group-ok segítségével kontrollálhatjuk, hogy a szervereinkhez milyen portokon férhetnek hozzá, tehát mintegy tűzfal működik. Egy Security Group több gépre is ráhúzható és függetlenül működik, azaz a megadott szabályokat nem másolja át az operációs rendszer konfigurációs állományaiba, mintegy a szerver elé telepített eszköz működik. Ennek köszönhetően futási időben változtathatjuk a szabályokat, életbelépésükhöz nem kell újracsinálni az EC2-ket.

A bal oldali sávban, a Network & Security csoportban érhető el.
Security Group hozzáadása
Egy új szabályrendszer felvételét kezdeményezhetjük az EC2 telepítésekor, ahogyan azt itt is láthattuk, de készíthetünk előre meghatározottakat is.

Az előre definiált csoportokat a Create Security Group gomb segítségével hozhatjuk létre, amelyet a jobb felső sarokban találhatunk meg.
[[Fájl:GAMFAWS ec2 secg new button.png|bélyeg]sdfsad]

A gomb megnyomását követően egy űrlapot kapunk, melynek 3 fő része van:

  1. Általános adatok
    Általános adatok
    • A név és a leírás mező megadása is kötelező
    • Itt választhatjuk ki, hogy mely VPC-ben szeretnénk elérhetővé tenni.
  2. Bejövő csomagok szabályozása
    Inbound rules
    • Az itt megjelenő szabályok lesznek engedélyezve a szerverünk felé, minden más csomag eldobásra kerül
    • Háromféle szabályból választhatunk:
      • Anywhere (IPv4, IPv6): A megadott IP típusból mindenhonnan elfogadjuk a csomagokat
      • Custom: Csak a megadott IP címekről/IP tartományokból érjük el az adott portot
      • MyIP: automatikusan beillesztésre kerül az felhasználó aktuális IP címe (hasonló a custom lehetőséghez)
  3. Kimenő csomagok szabályozása
    Outbound rules
    • A kimenő forgalom szabályozása biztonsági szempontból megfontolandó, de természetesen a publikus alkalmazások esetében (pl. web) nem tudunk ilyen szűrést alkalmazni.
    • Alkalmazhatjuk például SSH-ra, hogy megszüntessük annak a lehetőségét, hogy egy esetleges fertőzésből kifolyólag SSH-t hackelgető botnetté változzunk (volt már hasonló tapasztalat).
    • Az órán ezzel bővebben nem foglalkozunk, de éles környezetben ne felejtsünk el ezen szabályok definiálására időt szánni.
  4. Tag-ek megadása
Security Group szerkesztése

A szerkeszteni kívánt soron kattintsunk jobb gombbal és válasszuk ki a szerkeszteni kívánt szabályok csoportját:

  • Edit inbound rules, ha a bejövő csomagok szűrését szeretnénk módosítani,
  • Edit outbound rules, ha a kimenő forgalmat szeretnénk szűrni.

A megnyíló ablakban ugyanazon a módon vehetünk fel szabályokat, ahogyan a létrehozásnál. A módosítások mentés után életbe lépnek.
GAMFAWS ec2 secg context menu.png

AMI

Az AMI gyakorlatilag egy bitről-bitre lemásolt HDD képfájl, amely tömörítve lett. Így tárolja az összes elmentett adat- és konfigurációs állományt. Ha egy alkalmazást készítünk, akkor a következő okokból készítünk ilyen képfájlt:

  1. Biztonsági mentés a telepített szolgáltatásokról, így később nem kell egy esetleges hiba miatt újrakonfigurálni az egészet
  2. AutoScaling group-ba szeretnénk rendezni az alkalmazásunkat, annak pedig meg kell mondani, hogy melyik képfájlt indítsa el
Figyelem! A képfájlok úgynevezett snapshot-okat hoznak létre, amelyek tárolásáért fizetni kell, ha az összméret meghaladja a 8GB-ot. (A snapshotok az éppen futó rendszer miatt készülnek: minden írási műveletet lezár, majd a snapshot készítés után elindított írási műveletek már a háttértár egyéb területeire történik, amelyet a mentés nem fog tartalmazni, így garantálható, hogy nem lesznek félig lezárt fájlok a mentésben. Lásd bővebben: BTRFS (linux) és NTFS support). A pillanatképek nem törölhetők, amíg a belőlük készült AMI létezik!
AMI létrehozás lépései

Navigáljunk az Instances menüpontra, ahol láthatjuk, hogy milyen EC2 szolgáltatások vannak a rendszerünkben.

  1. Kattintsunk jobb gombbal azon az elemen, amelyet menteni szeretnénk
  2. Nyissuk ki az Image and templates menüpontot
  3. Kattintsunk a Create image lehetőségre

GAMFAWS ec2 ami create.png

Nevezzük el a képfájlt tetszés szerint
GAMFAWS ec2 ami setup.png

Navigáljunk a bal oldalon található menüben az Images szekcióhoz és válasszuk ki az AMIs elemet. Itt megtekinthetjük és törölhetjük a létrehozott képfájljainkat.
GAMFAWS ec2 ami list.png

Ha a mentés sikeresen elkészült, akkor az EC2 létrehozásánál kiválaszthatjuk azt.
GAMFAWS ec2 setup own ami select.png

Indítási konfigurációk elkészítése

Launch configuration létrehozása

Launch template létrehozása

Auto Scaling Group létrehozása terheléselosztással

Target Group

Load Balancer

RDS szolgáltatások

MySQL adatbázis telepítése

Csatlakozás MySQL adatbázishoz CLI-ből

VPC beállításai

VPC létrehozása

Subnetek létrehozása

S3

Alkalmazás létrehozása AWS-ben

VPC létrehozása

MySQL létrehozása

API létrehozása

Szerver konfigurálása

ASG létrehozása terheléselosztással

UI létrehozása

Szerver konfigurálása

ASG létrehozása terheléselosztással

Alkalmazás tesztelése

Hasznos linkek

SaaS vs PaaS vs IaaS