Skip to content

Latest commit

 

History

History
189 lines (145 loc) · 9.03 KB

ec2.md

File metadata and controls

189 lines (145 loc) · 9.03 KB

Virtuális gépek (Compute)

Tartalomjegyzék

EC2 instances (virtuális gépek)

Néhány hasznos parancs, vagy segédlet.

Egyedi képfájl létrehozása CloudShell-ből: https://github.com/cloudsteak/cloud-custom-images

Linux szerver web kiszolgálóként

  1. Nyissuk meg az EC2 dashboard-ot: https://eu-central-1.console.aws.amazon.com/ec2/home
  2. Kattintsunk a Lunch instance gombra
  3. Name: AWS-Web
  4. Amazom Machine Image: Amazon Linux
  5. Instance type: t2.micro
  6. Key pair name:
    • Ha van már létező kulcs párunk, akkor válasszuk azt
    • Ha még nincs, akkor kattintsunk a Create new key pair linkre
  7. A Network settings részben pipáljuk be az Allow HTTP traffic from internet lehetőséget
  8. Advanced details részt nyissuk le és görgessünk az oldal aljára
  9. A User data mezőbe illeszkük bele az alábbi kódot:
#!/bin/bash
yum update -y
yum install -y httpd.x86_64
systemctl start httpd.service
systemctl enable httpd.service
echo "<html><head><style>body{font-family: Verdana, Geneva, Tahoma, sans-serif;background-image: url('https://github.com/cloudsteak/azurestaticwebsite/blob/main/assets/images/wallpaper-2024-07.jpg?raw=true');background-repeat: no-repeat;background-size: cover; background-position: center;color: white; text-align: center; padding-top: 1%;}</style></head><body><h1>Web:<br>$(hostname)</h1></body></html>" > /var/www/html/index.html
  1. Végül kattintsunk a Launch instance gombra

  2. Pár másodperc múlva el is készül a gép. Ha az alábbi üzenetet látjuk, kattintsunk az i-********** linkre

Success Successfully initiated launch of instance (i-**********)
  1. Várjuk meg, amíg a Status check mező értéke 2/2 értéket mutat
  2. Kattintsunk a gép nevére (AWS-Web), majd a lap alján keressük meg a Public IPv4 DNS értékét. (ec2-***-***-***-***.eu-central-1.compute.amazonaws.com) Ezt másoljuk ki.
  3. A kimásolt DNS nevet illeszük be egy új böngésző fülbe, az alábbi formátumban: http://ec2-***-***-***-***.eu-central-1.compute.amazonaws.com
  4. Megnyílik a webszerverünk a szerver nevével.

Elastic Beanstalk

Egy NodeJS alkalmazást fogunk CD folyamattal "telepíteni" Amazon ElasticBeanstalk-ra

Példa alkalmazás: https://github.com/cloudsteak/trn-node-demo

Előkészület - EC2 instance profile létrehozása

Elastic Beanstalk környezet létrehozásához szükségünk lesz egy EC2 instance profile-ra, amely engedélyezi az EC2 példányoknak a megfelelő hozzáférését.

  1. Lépjünk be az AWS konzolba
  2. Keresőbe írjuk be az IAM szolgáltatást
  3. A bal oldali menüben kattintsunk az "Roles" menüpontra
  4. Kattintsunk a Create gombra
  5. A Trusted entity type lehetőségek közül válasszuk ki az AWS service opciót
  6. A Choose a use case lehetőségek közül válasszuk ki az EC2 opciót
  7. Kattintsunk a "Next" gombra
  8. Adjuk hozzá a következő engedélyeket:
    • AWSElasticBeanstalkWebTier
    • AWSElasticBeanstalkWorkerTier
    • AWSElasticBeanstalkMulticontainerDocker
  9. Kattintsunk a "Next" gombra
  10. Role name: webalkalmazas-role
  11. Kattintsunk a "Create role" gombra

Beanstalk alkalmazás létrehozása

  1. Nyissuk meg a Beanstalk kezelő felületét: https://eu-central-1.console.aws.amazon.com/elasticbeanstalk/home
  2. Katintsunk az Create Environment gombra
  3. Web server environment gomb
  4. Application name: NodeJS WebApp
  5. Environment name maradhat, amit a konzol generál
  6. Platform szekció:
    • Platform type: Managed platform
    • Platform: Node.js
    • Platform branch: Node.js 20
  7. Application code: Sample application
  8. Presets: Single instance (free tier eligible)
  9. Next
  10. Service role: Create and use new service role
  11. EC2 Key pair:
    • Ha van már létező kulcs párunk, akkor válasszuk azt
    • Ha még nincs, akkor kattintsunk a Create new key pair linkre
  12. EC2 instance profile:
    • Instance profile name: webalkalmazas-role
  13. Kattintsunk a "Next" gombra
  14. Kattintsunk a "Skip to review" gombra
  15. Kattintsunk a "Submit" gombra

3-4 perc alatt el is készül az alkalmazásunk

Beanstalk alkalmazás ellenőrzése

  1. Domain felirat alatti linkre kattintva megnyílik az alkalmazásunk

NodeJS alkalmazás GitHub-ról

  1. Jelentkezzünk be a GitHub fiókunkba

  2. AWS konzolon nyissuk meg a CodePipeline kezelőfelületét

  3. Create pipeline

  4. Pipeline name: Beanstalk-WebApp-Pipeline

  5. Execution mode-nál válasszuk a Queued (Pipeline type V2 required) lehetőséget

  6. Service role: New service role

  7. Next

  8. Source szekcióban, Sourve Provider: GitHub (Version 2)

  9. Connection

    • Ha van létező kapcsolatunk, használjuk azt

    • Ha nincs létező kapcsolatunk, akkor kattintsunk a Connect to GitHub gombra

      9.1. Felugró ablakban adjuk meg a kapcsolat nevét a Connection name mezőben: github.com

      9.2. GitHub Apps esetén kattintsunk az Install application gombra

      9.3. Válasszuk a megfelelő GitHub organization-t. Majd az olal alján kattintsunk a Save gombra, hogy összekapcsoljuk az AWS-t és a GitHub-ot

      9.4. Connect

      9.5. Alábbi zöld hátterű üzenetet kell látnunk:

      Ready to connect Your GitHub connection is ready for use.
  10. Repository name mezőnál válasszuk azt ahol a kódunk található

  11. Default branch name: main

  12. Trigger type: No filter

  13. Next

  14. Build - optional oldalon semmit sem változtatunk

  15. Skip build stage, majd Skip

  16. Deploy provider: AWS Elactik Beanstalk

  17. Region értéke, ahol a Beanstalk alkalmazásunk található

  18. Input artifacts maradhat a SourceArtifact

  19. Application name: NodeJS WebApp

  20. Environment name: NodeJSWebApp-env

  21. Next

  22. Review oldalon ellenőrizzük az eddig beállított értékeket

  23. Create pipeline gombra kattintva elindul a automatizáció létrehozása és az alkalmazás telepítése GitHub-ról

  24. Ha az alábbi üzenete tlátjuk, minden rendben és alkalmazásunk már CD folyamattal települ a Beanstalk-ra:

Success Congratulations! The pipeline Beanstalk-WebApp-Pipeline has been
created.

Két lépésbő áll a folyamatunk:

  1. Source: GitHub kódban történt változáskor a változásokat észleli és azokat elkezdi felolvasni
  2. Deploy: Lefordítja és telepíti az alkalmazást a Beanstalk köznyezetünkre

A folyamat interaktív és 3-4 perc után látható, hogy mindkét lépés Succeeded állapotú lesz. Ekkor a korábbi linkket frissítve a böngészónkben láthatjuk az alkalmazásunkat.

Ha a GitHub oldali kódban módosítunk valamit, akkor az pár perc után megjelenik az alkalmazásunkban.

Terheléselosztó (Load Balancer)

Terheléselosztó létrehozása esetén nem elegendő 1 db subnet-et létrehozni, hanem legalább 2 db-ot kell. Ez a magasrendelkezésreállás (HA) érdekében szükséges. Ha korábban 1 db publikus subnet-et hoztunk létre, akkor a következő hibaüzenettel fogunk szembesülni: "At least two subnets must be specified."

aws-minimum-subnet-loadbalancer

Ez esetben hozzunk létre egy másik publikus subnet-et is. Ennek a lépései:

  1. Egy második publikus subnet létrehozása
  2. Majd elvégezzük a subnet hozzárendelését a Route Table-hoz
  3. Ezután a subnetet hozzárendeljük a NACL 1-hez is.
  4. Ezután folytatjuk a terheléselosztó létrehozását és a Network mapping résznél az alábbi subnet-eket választjuk ki:
    • VPC1-Subnet1-Public-Subnet
    • VPC1-Subnet5-Public-Subnet (terheléselosztóhoz) aws-loadbalancer-network-mapping

Ekkor már a terheléselosztó létrehozása sikeres lesz.

Megjegyzés: Gyakorláshoz az is megfeleő, ha ilynekor a második subnet-nek, a privát subnet-et választjuk ki. Ez természetesen nem lesz helyen konfiguráció, de a gyakorlás szempontjából megfelelő.