ECS-palveluiden automaattinen skaalaus ja kuormantasaus
Liitä ALB ECS-palveluihin polkupohjaista reititystä varten ja määritä palveluiden automaattinen skaalaus reagoimaan suorittimen käyttöasteeseen tai mukautettuihin CloudWatch-mittareihin.
ECS-palveluiden automaattinen skaalaus ja kuormantasaus on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.
ECS-palvelun automaattisen skaalauksen tarve
ECS-palvelun kiinteä tavoitemäärä ei pysty reagoimaan liikenteen vaihteluihin — joko ylimitoitat kapasiteetin (ja tuhlaat rahaa) tai alimitoitat sen (ja suorituskyky heikkenee). ECS Service Auto Scaling säätää tehtävien tavoitemäärää automaattisesti CloudWatch-mittareiden perusteella. Se käyttää taustalla Application Auto Scaling -palvelua — samaa kehystä käyttävät myös DynamoDB, Aurora ja ElastiCache. ECS-palvelun automaattinen skaalaus tukee kohteen seurantaan, askelskaalaukseen ja ajastettuun skaalaukseen perustuvia käytäntöjä.
ECS:n rekisteröiminen skaalattavaksi kohteeksi
Ennen skaalauskäytäntöjen lisäämistä ECS-palvelu on rekisteröitävä skaalattavaksi kohteeksi Application Auto Scaling -palvelussa. Määritä tehtävien vähimmäis- ja enimmäismäärä sekä klusterin nimi ja palvelun nimi resurssitunnisteeksi. Näin määritetään rajat, joiden sisällä automaattinen skaalaus toimii. Vähimmäismäärä varmistaa perustason kapasiteetin säilymisen, kun taas enimmäismäärä estää hallitsemattoman skaalautumisen, joka voisi kuluttaa Fargate-kapasiteetin tai EC2-instanssien resurssit loppuun.
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--min-capacity 2 \
--max-capacity 20Kohteen seuranta ECS-palveluissa
Target Tracking on useimmille ECS-palveluille suositeltu automaattisen skaalauksen käytäntö. Yleisin kohdemittari on ECSServiceAverageCPUUtilization — määritä tavoitteeksi 50–70 %, jolloin ECS lisää tai poistaa tehtäviä CPU-käyttöasteen pitämiseksi tällä tasolla. Toinen tehokas mittari on ALBRequestCountPerTarget: seuraa ALB-pyyntöjen määrää tehtävää kohden ja skaalaa palvelua niin, että pyyntömäärä instanssia kohden pysyy tavoitetasolla. AWS käsittelee automaattisesti sekä skaalauksen suurentamisen että pienentämisen ja käyttää niissä asianmukaisia jäähdytysjaksoja.
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--policy-name 'ECSTargetTracking' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
},
"TargetValue": 60.0,
"ScaleOutCooldown": 60,
"ScaleInCooldown": 300
}'ALB-reititys ECS-palveluihin
Application Load Balancerin (ALB) liittäminen ECS-palveluun jakaa HTTP/HTTPS-liikenteen kaikkien käynnissä olevien tehtävien kesken. ALB:n kohderyhmä rekisteröi kunkin tehtävän IP-osoitteen (Fargate/awsvpc) tai säilön portin (bridge-tila). ECS rekisteröi uudet tehtävät automaattisesti kohderyhmään niiden käynnistyessä ja poistaa ne rekisteristä niiden pysähtyessä. ALB suorittaa terveystarkistukset jokaiselle tehtävälle; epäterveet tehtävät tyhjennetään (yhteydet suljetaan hallitusti), ennen kuin palvelu lopettaa ne.
Polkupohjainen reititys useille palveluille
Tehokas toimintamalli on reitittää eri URL-polut eri ECS-palveluihin ALB:n polkupohjaisen reitityksen avulla. Yksi ALB ja yksi HTTPS-kuuntelija voi reitittää seuraavasti: /api/orders/* Orders ECS -palveluun, /api/users/* Users ECS -palveluun ja /api/products/* Products ECS -palveluun — jokaisella on oma ECS-palvelunsa ja itsenäinen skaalaus. Näin jokaiselle mikropalvelulle ei tarvita erillistä kuormantasaajaa, mikä pienentää kustannuksia ja yksinkertaistaa DNS-hallintaa.
# ALB listener rule for ECS microservice routing
aws elbv2 create-rule \
--listener-arn 'arn:aws:elasticloadbalancing:...' \
--priority 10 \
--conditions '[{"Field": "path-pattern", "Values": ["/api/orders/*"]}]' \
--actions '[{"Type": "forward", "TargetGroupArn": "arn:...OrdersTargetGroup"}]'Yhteyksien tyhjennys ja rekisteristäpoiston viive
Kun ECS-tehtävä lopetetaan (skaalauksen pienentämisen tai käyttöönoton aikana), ALB merkitsee sen tyhjennettäväksi ja lopettaa uusien pyyntöjen reitittämisen sille, mutta antaa käynnissä olevien pyyntöjen valmistua. Rekisteristäpoiston viive (oletusarvoisesti 300 sekuntia, määritettävissä välille 0–3600 sekuntia) määrittää, kuinka kauan ALB odottaa ennen yhteyksien pakotettua sulkemista. Jos ECS:n pyynnöt ovat lyhytkestoisia, määritä rekisteristäpoiston viiveeksi pienempi arvo (30–60 sekuntia), jotta käyttöönotot ja skaalauksen pienentämiset nopeutuvat. Pidä viive suurempana pitkäkestoisia yhteyksiä (WebSocket, tiedostojen lataukset) varten.
# Set deregistration delay on target group to 60 seconds
aws elbv2 modify-target-group-attributes \
--target-group-arn 'arn:aws:elasticloadbalancing:...' \
--attributes 'Key=deregistration_delay.timeout_seconds,Value=60'Mukautetut mittarit ECS:n skaalauksessa
CPU:n ja muistin lisäksi voit julkaista sovelluksestasi mukautettuja CloudWatch-mittareita (jonon pituus, aktiiviset istunnot, liiketoiminnan KPI-mittarit) ja käyttää niitä skaalauksen ohjaamiseen. Jos esimerkiksi yksi ECS-tehtävä pystyy käsittelemään samanaikaisesti 50 jonoviestiä, julkaise SQS-jonon pituus mukautettuna mittarina ja luo kohteen seurantaan perustuva käytäntö, jonka tavoitteena on 50 viestiä tehtävää kohden. Näin skaalaus perustuu suoraan liiketoimintalogiikkaan sen sijaan, että luotettaisiin infrastruktuurimittareihin, jotka eivät välttämättä korreloi sovelluksen kuormituksen kanssa.
aws application-autoscaling put-scaling-policy \
--policy-name 'QueueDepthScaling' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"CustomizedMetricSpecification": {
"MetricName": "QueueDepth",
"Namespace": "MyApp",
"Statistic": "Average"
},
"TargetValue": 50.0
}' \
--resource-id 'service/MyCluster/WorkerService' \
--scalable-dimension ecs:service:DesiredCount \
--service-namespace ecsTehtävien suojautuminen skaalauksen pienentämiseltä
EC2 Auto Scalingin tavoin ECS tukee tehtävien suojausta skaalauksen pienentämiseltä. Käynnissä oleva tehtävä voi asettaa oman skaalauksen pienentämisen estävän suojauslippunsa ECS API:n kautta, jotta sitä ei lopeteta kriittisen työn käsittelyn aikana. Tämä on hyödyllistä SQS-työntekijöinä toimiville ECS-tehtäville: pitkän työn juuri jonosta hakenut työntekijä voi suojata itsensä, suorittaa työn loppuun ja poistaa sitten suojauksen. Ilman tätä suojausta skaalauksen pienentäminen voisi lopettaa kesken käsittelyn olevan tehtävän, mikä aiheuttaisi töiden monistumista tai tietojen menetyksen.
# From inside the ECS task container
curl -X PUT 'http://169.254.170.2/v3/tasks/scale-in-protection' \
-H 'Content-Type: application/json' \
-d '{"ProtectionEnabled": true, "ExpiresInMinutes": 60}'Skaalausmittarit: CPU, muisti vai ALB
Valitse skaalausmittari huolellisesti. CPU:n käyttöaste on oletusmittari, ja se toimii laskentaintensiivisissä kuormituksissa. Muistin käyttöaste (ECSServiceAverageMemoryUtilization) on hyödyllinen muistirajoitteisissa sovelluksissa, mutta muistin lisääminen skaalaamalla edellyttää tehtävien lisäämistä. Jos tehtävää rajoittaa tehtäväkohtainen muisti eikä samanaikainen käsittely, tehtävämäärittelyn muistivarauksen korjaaminen voi olla parempi ratkaisu. ALBRequestCountPerTarget korreloi suoraan käyttökokemuksen kanssa ja on verkkorajapinnoille toimivin mittari — skaalaa todellisen pyyntömäärän perusteella tehtävää kohden.
ECS:n käyttöönottojen piirikatkaisin
ECS Deployment Circuit Breaker tunnistaa epäonnistuvat käyttöönotot automaattisesti ja palauttaa palvelun viimeiseen vakaaseen versioon. Ilman sitä virheellinen käyttöönotto (säilö, joka ei läpäise terveystarkistuksia) saisi ECS:n yrittämään uusien tehtävien käynnistämistä loputtomasti. Kun piirikatkaisin on käytössä ja tietty prosenttiosuus äskettäin käynnistetyistä tehtävistä epäonnistuu terveystarkistuksissa tunnistusikkunan aikana, ECS merkitsee käyttöönoton epäonnistuneeksi ja palauttaa automaattisesti aiemman tehtävämäärittelyn version. Näin virheelliset käyttöönotot eivät aiheuta palvelun pitkäkestoista heikkenemistä.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--deployment-configuration '{
"deploymentCircuitBreaker": {
"enable": true,
"rollback": true
},
"minimumHealthyPercent": 100,
"maximumPercent": 200
}'Päästä päähän -arkkitehtuuri: ECS + ALB + automaattinen skaalaus
Tuotantovalmis säilöistetyn verkkorajapinnan arkkitehtuuri: Route 53 selvittää toimialueen ALB:n DNS-nimeksi; ALB päättää HTTPS-yhteydet (ACM-varmenne), soveltaa WAF-sääntöjä ja reitittää pyynnöt ECS-palvelun kohderyhmään; yksityisten aliverkkojen Fargate-tehtävät kolmessa AZ:ssa käsittelevät pyynnöt; ECS Service Auto Scaling säätää tehtävien määrää välillä 2–50 käyttämällä kohteen seurantaa ja ALBRequestCountPerTarget-mittaria; tehtävät muodostavat yhteyden yksityisissä aliverkoissa oleviin RDS Aurora- ja ElastiCache-palveluihin. Kaikki lokit lähetetään CloudWatch Logs -palveluun, ja mittarit ohjaavat CloudWatch-koontinäyttöjä ja hälytyksiä.
Pikatarkistus
Testaa, miten hyvin ymmärrät tällä oppitunnilla käsitellyt AWS Solutions Architect (SAA-C03) -aiheet.
Oppitunnin yhteenveto
Tällä oppitunnilla opit, että ECS Service Auto Scaling käyttää Application Auto Scaling -palvelua ja kohteen seurantaa (CPU, ALB-pyynnöt tai mukautetut mittarit) tehtävämäärän säätämiseen määritettyjen vähimmäis- ja enimmäisrajojen välillä, ALB:n polkupohjainen reititys mahdollistaa yhden kuormantasaajan palvella useita ECS-mikropalveluja reitittämällä URL-polut eri kohderyhmiin ja Deployment Circuit Breaker palauttaa epäonnistuvat käyttöönotot automaattisesti ennen kuin ne aiheuttavat palvelun pitkäkestoista heikkenemistä. Tämä päättää ECS- ja säilömoduulin — seuraavaksi tutustumme Amazon EKS:ään Kubernetesin käyttämiseksi AWS:ssä.
Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 150
- Oppitunnit
- 600
Usein kysytyt kysymykset
Onko oppitunti ”ECS-palveluiden automaattinen skaalaus ja kuormantasaus” ilmainen?
Kyllä – oppitunnin ”ECS-palveluiden automaattinen skaalaus ja kuormantasaus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”ECS-palveluiden automaattinen skaalaus ja kuormantasaus”?
Liitä ALB ECS-palveluihin polkupohjaista reititystä varten ja määritä palveluiden automaattinen skaalaus reagoimaan suorittimen käyttöasteeseen tai mukautettuihin CloudWatch-mittareihin. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”ECS-palveluiden automaattinen skaalaus ja kuormantasaus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?
Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- ECS-klusterit, tehtävämääritykset ja palvelut
- EC2-käynnistystyyppi ja Fargate
- ECR: Konttikuvien tallennus ja noutaminen
- ECS-palveluiden automaattinen skaalaus ja kuormantasaus