- EC2 instances (virtuális gépek)
- Elastic Beanstalk
- Terheléselosztó (Load Balancer) hibajavítás 1 db subnet esetén
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
- Nyissuk meg az EC2 dashboard-ot: https://eu-central-1.console.aws.amazon.com/ec2/home
- Kattintsunk a
Lunch instance
gombra - Name: AWS-Web
- Amazom Machine Image: Amazon Linux
- Instance type: t2.micro
- 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
- A
Network settings
részben pipáljuk be azAllow HTTP traffic from internet
lehetőséget Advanced details
részt nyissuk le és görgessünk az oldal aljára- 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
-
Végül kattintsunk a
Launch instance
gombra -
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-**********)
- Várjuk meg, amíg a
Status check
mező értéke2/2
értéket mutat - Kattintsunk a gép nevére (
AWS-Web
), majd a lap alján keressük meg aPublic IPv4 DNS
értékét. (ec2-***-***-***-***.eu-central-1.compute.amazonaws.com
) Ezt másoljuk ki. - 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
- Megnyílik a webszerverünk a szerver nevével.
Egy NodeJS alkalmazást fogunk CD folyamattal "telepíteni" Amazon ElasticBeanstalk-ra
Példa alkalmazás: https://github.com/cloudsteak/trn-node-demo
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.
- Lépjünk be az AWS konzolba
- Keresőbe írjuk be az IAM szolgáltatást
- A bal oldali menüben kattintsunk az "Roles" menüpontra
- Kattintsunk a
Create
gombra - A
Trusted entity type
lehetőségek közül válasszuk ki azAWS service
opciót - A
Choose a use case
lehetőségek közül válasszuk ki azEC2
opciót - Kattintsunk a "Next" gombra
- Adjuk hozzá a következő engedélyeket:
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalkWorkerTier
- AWSElasticBeanstalkMulticontainerDocker
- Kattintsunk a "Next" gombra
- Role name: webalkalmazas-role
- Kattintsunk a "Create role" gombra
- Nyissuk meg a Beanstalk kezelő felületét: https://eu-central-1.console.aws.amazon.com/elasticbeanstalk/home
- Katintsunk az Create Environment gombra
Web server environment
gomb- Application name: NodeJS WebApp
Environment name
maradhat, amit a konzol generálPlatform
szekció:- Platform type:
Managed platform
- Platform:
Node.js
- Platform branch:
Node.js 20
- Platform type:
- Application code:
Sample application
- Presets:
Single instance (free tier eligible)
Next
- Service role:
Create and use new service role
- 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
- EC2 instance profile:
- Instance profile name: webalkalmazas-role
- Kattintsunk a "Next" gombra
- Kattintsunk a "Skip to review" gombra
- Kattintsunk a "Submit" gombra
3-4 perc alatt el is készül az alkalmazásunk
Domain
felirat alatti linkre kattintva megnyílik az alkalmazásunk
-
Jelentkezzünk be a GitHub fiókunkba
-
AWS konzolon nyissuk meg a CodePipeline kezelőfelületét
-
Pipeline name:
Beanstalk-WebApp-Pipeline
-
Execution mode
-nál válasszuk aQueued (Pipeline type V2 required)
lehetőséget -
Service role:
New service role
-
Next
-
Source
szekcióban, Sourve Provider:GitHub (Version 2)
-
Connection
-
Ha van létező kapcsolatunk, használjuk azt
-
Ha nincs létező kapcsolatunk, akkor kattintsunk a
Connect to GitHub
gombra9.1. Felugró ablakban adjuk meg a kapcsolat nevét a
Connection name
mezőben:github.com
9.2.
GitHub Apps
esetén kattintsunk azInstall application
gombra9.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-ot9.4.
Connect
9.5. Alábbi zöld hátterű üzenetet kell látnunk:
Ready to connect Your GitHub connection is ready for use.
-
-
Repository name
mezőnál válasszuk azt ahol a kódunk található -
Default branch
name:main
-
Trigger type
:No filter
-
Next
-
Build - optional
oldalon semmit sem változtatunk -
Skip build stage
, majdSkip
-
Deploy provider:
AWS Elactik Beanstalk
-
Region
értéke, ahol a Beanstalk alkalmazásunk található -
Input artifacts
maradhat aSourceArtifact
-
Application name:
NodeJS WebApp
-
Environment name:
NodeJSWebApp-env
-
Next
-
Review
oldalon ellenőrizzük az eddig beállított értékeket -
Create pipeline
gombra kattintva elindul a automatizáció létrehozása és az alkalmazás telepítése GitHub-ról -
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:
- Source: GitHub kódban történt változáskor a változásokat észleli és azokat elkezdi felolvasni
- 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ó 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."
Ez esetben hozzunk létre egy másik publikus subnet-et is. Ennek a lépései:
- Egy második publikus subnet létrehozása
- Majd elvégezzük a subnet hozzárendelését a Route Table-hoz
- Ezután a subnetet hozzárendeljük a NACL 1-hez is.
- 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:
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ő.