Kupanga Scalable API pa AWS Spot Instances

Moni nonse! Dzina langa ndine Kirill, ndine CTO ku Adapty. Zambiri mwazomangamanga zathu zili pa AWS, ndipo lero ndilankhula za momwe tidachepetsera mtengo wa seva ndi nthawi za 3 pogwiritsa ntchito zochitika pamalo opangira, komanso momwe angakhazikitsire makulitsidwe awo. Choyamba padzakhala chithunzithunzi cha momwe zimagwirira ntchito, ndiyeno malangizo atsatanetsatane oyambira.

Kodi Spot Instances ndi chiyani?

Malo zochitika ndi ma seva a ogwiritsa ntchito ena a AWS omwe pakali pano alibe ntchito, ndipo amawagulitsa pamtengo wotsika kwambiri (Amazon imalemba mpaka 90%, zomwe takumana nazo ~ 3x, zimasiyana malinga ndi dera, AZ ndi mtundu wa chitsanzo). Kusiyana kwawo kwakukulu ndi kokhazikika ndikuti amatha kuzimitsa nthawi iliyonse. Choncho, kwa nthawi yaitali tinkakhulupirira kuti zinali zachilendo kuwagwiritsa ntchito kwa malo osagonana, kapena ntchito zowerengera chinachake, ndi zotsatira zapakatikati zosungidwa pa S3 kapena m'dawunilodi, koma osati zogulitsa. Pali mayankho a chipani chachitatu omwe amakulolani kugwiritsa ntchito mawanga pakupanga, koma pali ndodo zambiri zamilandu yathu, kotero sitinazigwiritse ntchito. Njira yomwe yafotokozedwa m'nkhaniyi imagwira ntchito kwathunthu muzochita za AWS, popanda zolemba zina, korona, ndi zina.

Pansipa pali zowonera zingapo zomwe zikuwonetsa mbiri yamitengo yamawonekedwe.

m5.large m'chigawo cha eu-west-1 (Ireland). Mtengo wakhala wokhazikika kwa miyezi itatu, ukupulumutsa 3x.

Kupanga Scalable API pa AWS Spot Instances

m5.chachikulu mu dera la us-east-1 (N. Virginia). Mtengowu ukusintha mosalekeza m'miyezi itatu, ndikupulumutsa pano kuchokera ku 3x kupita ku 2.3x kutengera malo omwe akupezeka.

Kupanga Scalable API pa AWS Spot Instances

t3.ang'ono m'chigawo cha us-east-1 (N. Virginia). Mtengo wakhala wokhazikika kwa miyezi itatu, pano ndikupulumutsa 3x.

Kupanga Scalable API pa AWS Spot Instances

Ntchito zomangamanga

Zomangamanga zoyambira zautumiki zomwe tikambirana m'nkhaniyi zikuwonetsedwa pazithunzi pansipa.

Kupanga Scalable API pa AWS Spot Instances

Kugwiritsa Ntchito Load Balancer β†’ EC2 Target Gulu β†’ Elastic Container Service

Application Load Balancer (ALB) imagwiritsidwa ntchito ngati balancer, yomwe imatumiza zopempha ku EC2 Target Group (TG). TG ili ndi udindo wotsegula madoko pazochitika za ma ALB ndikuwalumikiza ku madoko a Elastic Container Service (ECS). ECS ndi analogue ya Kubernetes mu AWS, yomwe imayang'anira zotengera za Docker.

Chitsanzo chimodzi chikhoza kukhala ndi zotengera zingapo zomwe zili ndi madoko omwewo, kotero sitingathe kuziyika mokhazikika. ECS imauza TG kuti ikuyambitsa ntchito yatsopano (m'mawu a Kubernetes izi zimatchedwa pod), imayang'ana madoko aulere pamwambowo ndikupatsa mmodzi wa iwo ntchito yomwe idakhazikitsidwa. TG imayang'ananso nthawi zonse ngati chitsanzo ndi API ikugwira ntchito pogwiritsa ntchito cheke, ndipo ngati iwona zovuta, imasiya kutumiza zopempha kumeneko.

Magulu a EC2 Auto Scalling + ECS Capacity Providers

Chithunzi pamwambapa sichikuwonetsa ntchito ya EC2 Auto Scaling Groups (ASG). Kuchokera pa dzina mutha kumvetsetsa kuti ndi udindo pakukulitsa zochitika. Komabe, mpaka posachedwapa, AWS inalibe luso lokonzekera makina othamanga kuchokera ku ECS. ECS idapangitsa kuti zitheke kuchuluka kwa ntchito, mwachitsanzo, pogwiritsa ntchito CPU, RAM kapena kuchuluka kwa zopempha. Koma ngati ntchito zonse zaulere, ndiye kuti makina atsopano sanapangidwe okha.

Izi zasintha ndi kubwera kwa ECS Capacity Providers (ECS CP). Tsopano utumiki uliwonse mu ECS ukhoza kugwirizanitsidwa ndi ASG, ndipo ngati ntchitozo sizikugwirizana ndi zochitika zomwe zikuchitika, ndiye kuti zatsopano zidzakwezedwa (koma mkati mwa malire a ASG). Izi zimagwiranso ntchito mosiyana, ngati ECS CP iwona zochitika zopanda ntchito popanda ntchito, idzapereka lamulo la ASG kuti lizitseke. ECS CP imatha kufotokozera kuchuluka kwa zomwe mukufuna, kuti makina angapo nthawi zonse azikhala aulere kuti agwire ntchito mwachangu; Ndilankhula za izi posachedwa.

EC2 Launch Templates

Ntchito yomaliza yomwe ndilankhule ndisanafotokoze mwatsatanetsatane za kupanga zomangamanga izi ndi EC2 Launch Templates. Zimakulolani kuti mupange template malinga ndi momwe makina onse adzayambira, kuti musabwereze izi kuyambira pachiyambi nthawi iliyonse. Apa mutha kusankha mtundu wa makina oti muyambe, gulu lachitetezo, chithunzi cha disk ndi magawo ena ambiri. Mutha kutchulanso za ogwiritsa ntchito omwe adzatsitsidwa kuzochitika zonse zomwe zakhazikitsidwa. Mutha kuyendetsa zolemba mu data ya ogwiritsa ntchito, mwachitsanzo, mutha kusintha zomwe zili mufayilo Zosintha za agent ECS.

Chimodzi mwazinthu zofunika kwambiri zosinthira nkhaniyi ndi ECS_ENABLE_SPOT_INSTANCE_DRAINING=zoona. Ngati parameter iyi yathandizidwa, ndiye kuti ECS ikangolandira chizindikiro kuti malo akuchotsedwa, imasamutsa ntchito zonse zomwe zimagwira ntchito ku Draining. Palibe ntchito zatsopano zomwe zidzapatsidwe panthawiyi; ngati pali ntchito zomwe zikufuna kuperekedwa pakali pano, zichotsedwa. Zopempha kuchokera kwa balancer nazonso zimasiya kubwera. Chidziwitso cha kuchotsedwa kwachitsanzo chimabwera mphindi 2 chochitika chenicheni chisanachitike. Chifukwa chake, ngati ntchito yanu sichita ntchito yayitali kuposa mphindi 2 ndipo sichisunga chilichonse ku diski, mutha kugwiritsa ntchito zochitika popanda kutaya deta.

Ponena za disk - AWS posachedwa anatero Ndi zotheka kugwiritsa ntchito Elastic File System (EFS) pamodzi ndi ECS; ndi chiwembu ichi, ngakhale disk si chopinga, koma sitinayese izi, chifukwa kwenikweni sitifunikira disk kuti tisunge boma. Mwachikhazikitso, mutalandira SIGINT (yotumizidwa pamene ntchito yasamutsidwa ku Draining status), ntchito zonse zomwe zikuyenda zidzayimitsidwa pambuyo pa masekondi 30, ngakhale sizinathe; mukhoza kusintha nthawiyi pogwiritsa ntchito chizindikiro. ECS_CONTAINER_STOP_TIMEOUT. Chachikulu ndichakuti musayike kwa mphindi zopitilira 2 pamakina amtundu.

Kupanga ntchito

Tiyeni tipitirire kupanga zomwe tafotokozazi. Pochita izi, ndikufotokozeranso mfundo zingapo zothandiza zomwe sizinatchulidwe pamwambapa. Kawirikawiri, awa ndi malangizo a sitepe ndi sitepe, koma sindingaganizire zina zofunika kwambiri kapena, m'malo mwake, milandu yeniyeni. Zochita zonse zimachitika mu AWS visual console, koma zitha kupangidwanso mwadongosolo pogwiritsa ntchito CloudFormation kapena Terraform. Ku Adapty timagwiritsa ntchito Terraform.

EC2 Launch template

Ntchitoyi imapanga makina omwe adzagwiritsidwe ntchito. Ma templates amayendetsedwa mu EC2 -> Instances -> Launch templates gawo.

Chithunzi cha makina a Amazon (AMI) - tchulani chithunzi cha disk chomwe zochitika zonse zidzayambitsidwe. Kwa ECS, nthawi zambiri ndikofunikira kugwiritsa ntchito chithunzi chokongoletsedwa kuchokera ku Amazon. Imasinthidwa pafupipafupi ndipo imakhala ndi zonse zofunika kuti ECS igwire ntchito. Kuti mudziwe chithunzi cha ID chapano, pitani patsamba Amazon ECS-optimized AMIs, sankhani dera lomwe mukugwiritsa ntchito ndikukopera ID ya AMI. Mwachitsanzo, kudera la us-east-1, ID yomwe ilipo panthawi yolemba ndi ami-00c7c1cf5bdc913ed. ID iyi iyenera kuyikidwa mu Nenani chinthu chamtengo wapatali.

Mtundu wa chitsanzo - onetsani mtundu wa chitsanzo. Sankhani yomwe ikugwirizana bwino ndi ntchito yanu.

Makiyi awiri (lowani) - tchulani satifiketi yomwe mungalumikizane nayo ndi SSH, ngati kuli kofunikira.

Makonda a Network - tchulani magawo a netiweki. Networking nsanja nthawi zambiri payenera kukhala Virtual Private Cloud (VPC). Magulu achitetezo - magulu achitetezo a zochitika zanu. Popeza tidzagwiritsa ntchito balancer patsogolo pazochitikazo, ndikupangira kufotokozera gulu pano lomwe limalola kugwirizana komwe kukubwera kuchokera kwa balancer. Ndiko kuti, mudzakhala ndi magulu achitetezo a 2, limodzi la balancer, lomwe limalola kulumikizana kolowera kuchokera kulikonse pa madoko 80 (http) ndi 443 (https), ndipo lachiwiri la makina, omwe amalola kulumikizana komwe kukubwera pamadoko aliwonse kuchokera kugulu la balancer. . Malumikizidwe otuluka m'magulu onsewa ayenera kutsegulidwa pogwiritsa ntchito protocol ya TCP kumadoko onse kumaadiresi onse. Mutha kuchepetsa madoko ndi ma adilesi olumikizira omwe akutuluka, koma muyenera kuwunika nthawi zonse kuti simukuyesera kupeza china padoko lotsekedwa.

Kusungirako (mavoliyumu) - tchulani magawo a disk pamakina. Kukula kwa disk sikungakhale kochepa kuposa komwe kumatchulidwa mu AMI; kwa ECS Optimized ndi 30 GiB.

Zambiri - tchulani magawo owonjezera.

Kugula njira - kaya tikufuna kugula zochitika zenizeni. Tikufuna, koma sitiyang'ana bokosi ili pano; tidzakonza mu Auto Scaling Group, pali zosankha zambiri pamenepo.

Mbiri ya IAM - onetsani ntchito yomwe zochitikazo zidzayambitsidwe. Kuti zochitika ziziyenda mu ECS, zimafunikira zilolezo, zomwe nthawi zambiri zimapezeka pagawolo ecsInstanceRole. Nthawi zina imatha kupangidwa, ngati sichoncho, ndiye apa Bukuli momwe angachitire izi. Pambuyo pa chilengedwe, timachiwonetsa mu template.
Kenako pali magawo ambiri, makamaka mutha kusiya zikhalidwe zosasinthika kulikonse, koma iliyonse ili ndi kufotokozera momveka bwino. Nthawi zonse ndimathandizira chitsanzo cha EBS-wokometsedwa ndi zosankha za T2/T3 Zopanda malire ngati zitagwiritsidwa ntchito chophulika zochitika.

Zogwiritsa ntchito - onetsani deta ya ogwiritsa ntchito. Tisintha fayilo /etc/ecs/ecs.config, yomwe ili ndi kasinthidwe ka agent ECS.
Chitsanzo cha momwe deta ya ogwiritsa ntchito ingawonekere:

#!/bin/bash
echo ECS_CLUSTER=DemoApiClusterProd >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
echo ECS_CONTAINER_STOP_TIMEOUT=1m >> /etc/ecs/ecs.config
echo ECS_ENGINE_AUTH_TYPE=docker >> /etc/ecs/ecs.config
echo "ECS_ENGINE_AUTH_DATA={"registry.gitlab.com":{"username":"username","password":"password"}}" >> /etc/ecs/ecs.config

ECS_CLUSTER=DemoApiClusterProd - parameter ikuwonetsa kuti chitsanzocho ndi cha gulu lomwe lili ndi dzina lopatsidwa, ndiye kuti, gululi litha kuyika ntchito zake pa seva iyi. Sitinapange gulu pano, koma tidzagwiritsa ntchito dzinali popanga.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true - chizindikirocho chimatanthawuza kuti chizindikiro chikalandiridwa kuti muzimitse malo, ntchito zonse zomwe zili pamenepo ziyenera kusamutsidwa ku Draining status.

ECS_CONTAINER_STOP_TIMEOUT=1m - chizindikirocho chimanena kuti mutalandira chizindikiro cha SIGINT, ntchito zonse zimakhala ndi mphindi imodzi isanaphedwe.

ECS_ENGINE_AUTH_TYPE=docker - parameter ikuwonetsa kuti Docker scheme imagwiritsidwa ntchito ngati njira yovomerezeka

ECS_ENGINE_AUTH_DATA=... - magawo olumikizirana ndi zolembera zachinsinsi, pomwe zithunzi zanu za Docker zimasungidwa. Ngati ili pagulu, ndiye kuti simuyenera kufotokoza chilichonse.

Pazolinga za nkhaniyi, ndigwiritsa ntchito chithunzi chapagulu kuchokera ku Docker Hub, chifukwa chake tchulani magawo ECS_ENGINE_AUTH_TYPE ΠΈ ECS_ENGINE_AUTH_DATA osafunikira.

Ndibwino kuti mudziwe: Ndibwino kuti musinthe AMI nthawi zonse, chifukwa matembenuzidwe atsopano a Docker, Linux, ECS agent, etc. Kuti musaiwale za izi, mukhoza khazikitsani zidziwitso za kutulutsidwa kwa Mabaibulo atsopano. Mutha kulandira zidziwitso kudzera pa imelo ndikusinthira pamanja, kapena mutha kulemba ntchito ya Lambda yomwe imangopanga mtundu watsopano wa Launch Template ndi AMI yosinthidwa.

EC2 Auto Scaling Gulu

Auto Scaling Group ili ndi udindo woyambitsa ndi kukulitsa zochitika. Magulu amayendetsedwa mu EC2 -> Auto Scaling -> Auto Scaling Groups gawo.

Yambitsani template - sankhani template yomwe idapangidwa kale. Timasiya mtundu wokhazikika.

Zosankha zogula ndi mitundu yachitsanzo - tchulani mitundu ya zochitika za cluster. Tsatirani kukhazikitsa template imagwiritsa ntchito mtundu wachitsanzo kuchokera pa Launch Template. Phatikizani zosankha zogulira ndi mitundu ya zitsanzo zimakupatsani mwayi wosintha mitundu yachitsanzo. Tidzagwiritsa ntchito.

Mwasankha On-Demand base - kuchuluka kwa zochitika zanthawi zonse, zosawoneka zomwe zidzagwire ntchito nthawi zonse.

Maperesenti ofunidwa pamwamba pa maziko - chiΕ΅erengero cha maperesenti anthawi zonse ndi mawanga, 50-50 adzagawidwa mofanana, 20-80 pa nthawi iliyonse 4 malo adzakwezedwa. Pazifukwa za chitsanzo ichi, ndikuwonetsa 50-50, koma zoona zake nthawi zambiri timachita 20-80, nthawi zina 0-100.

Mitundu yachitsanzo - apa mutha kufotokozera mitundu yowonjezereka ya zochitika zomwe zingagwiritsidwe ntchito pagulu. Sitinagwiritsepo ntchito chifukwa sindikumvetsa tanthauzo la nkhaniyi. Mwina izi ndichifukwa cha malire pamitundu ina ya zochitika, koma zitha kuchulukitsidwa mosavuta ndi chithandizo. Ngati mukudziwa kugwiritsa ntchito, ndikhala wokondwa kuwerenga mu ndemanga)

Kupanga Scalable API pa AWS Spot Instances

Network - makonda a netiweki, sankhani VPC ndi ma subnets a makina, nthawi zambiri muyenera kusankha ma subnet onse omwe alipo.

Katundu woyeserera - zosintha za balancer, koma tichita izi mosiyana, sitikhudza chilichonse apa. Kuwunika zaumoyo idzakonzedwanso pambuyo pake.

Kukula kwamagulu - tikuwonetsa malire pa kuchuluka kwa makina omwe ali mgululi komanso kuchuluka kwa makina omwe akufuna poyambira. Kuchuluka kwa makina omwe ali mgululi sikudzakhala kocheperako komanso kupitilira kuchuluka kwake, ngakhale makulitsidwe akuyenera kuchitika molingana ndi ma metric.

Mfundo za makulitsidwe - kukulitsa magawo, koma tidzakula kutengera ntchito za ECS, ndiye tidzakonza makulitsidwe pambuyo pake.

Instance-intaneti chitetezo - Kutetezedwa kwa zochitika kuti zisachotsedwe pamene mukutsitsa. Timazithandizira kuti ASG isachotse makina omwe ali ndi ntchito. ECS Capacity Provider idzaletsa chitetezo pazochitika zomwe zilibe ntchito.

Onjezani ma tag - mutha kutchula ma tag nthawi zina (pa izi, bokosi lamakasitomala la Tag liyenera kufufuzidwa). Ndikupangira kufotokoza tag ya Dzina, ndiye kuti zochitika zonse zomwe zimayambitsidwa mugululi zimakhala ndi dzina lomwelo, ndipo ndizosavuta kuziwona mu console.

Kupanga Scalable API pa AWS Spot Instances

Pambuyo popanga gulu, tsegulani ndikupita ku gawo la Advanced configurations.

Ndondomeko zothetsa - malamulo omwe amaganiziridwa pochotsa zochitika. Amagwiritsidwa ntchito mwadongosolo. Nthawi zambiri timagwiritsa ntchito zomwe zili pachithunzichi. Choyamba, zitsanzo zokhala ndi Launch Template yakale kwambiri zimachotsedwa (mwachitsanzo, ngati tidasintha AMI, tapanga mtundu watsopano, koma zochitika zonse zidasintha). Kenako zochitika zomwe zili pafupi kwambiri ndi ola lotsatira lolipira zimasankhidwa. Ndiyeno akale kwambiri amasankhidwa ndi tsiku loyambitsa.

Kupanga Scalable API pa AWS Spot Instances

Ndibwino kuti mudziwe: kusintha makina onse mgulu, yosavuta kugwiritsa ntchito Chitsanzo Refresh. Mukaphatikiza izi ndi ntchito ya Lambda kuchokera pa sitepe yapitayi, mudzakhala ndi makina osinthika okhazikika. Musanasinthire makina onse, muyenera kuletsa chitetezo cha zochitika zonse pagulu. Osati kasinthidwe mu gulu, koma kutetezedwa kumakina okha, izi zimachitika pa Instance management tabu.

Application Load Balancer ndi EC2 Target Group

Balancer idapangidwa mu gawo EC2 β†’ Kuyimitsa Katundu β†’ Zosungitsa Katundu. Tidzagwiritsa ntchito Application Load Balancer; kufananitsa kwamitundu yosiyanasiyana yowerengera kumatha kuwerengedwa tsamba la utumiki.

Omvera - ndizomveka kupanga madoko 80 ndi 443 ndikuwongolera kuchokera ku 80 kupita ku 443 pogwiritsa ntchito malamulo owerengera pambuyo pake.

Madera Opezeka - nthawi zambiri, timasankha madera ofikira aliyense.

Konzani Zokonda Zachitetezo - satifiketi ya SSL ya balancer ikuwonetsedwa apa, njira yabwino kwambiri ndi kupanga satifiketi ku ACM. Za kusiyana kwake Ndondomeko Yotetezera ikhoza kuwerengedwa mkati zolemba, mutha kuyisiya yosankhidwa mwachisawawa ELBSecurityPolicy-2016-08. Pambuyo popanga balancer, mudzawona DNS dzina, zomwe muyenera kukonza CNAME ya domeni yanu. Mwachitsanzo, izi ndi momwe zimawonekera mu Cloudflare.

Kupanga Scalable API pa AWS Spot Instances

Gulu Lachitetezo - pangani kapena sankhani gulu lachitetezo la owerengera, ndidalemba zambiri za izi pamwambapa mu gawo la EC2 Launch Template β†’ gawo la zoikamo za Network.

Gulu loyenera - timapanga gulu lomwe liri ndi udindo wowongolera zopempha kuchokera kwa balancer kupita ku makina ndikuwunika kupezeka kwawo kuti tiwasinthe pakagwa mavuto. Mtundu wa chandamale ayenera kukhala Chitsanzo, Pulogalamu ΠΈ Port chilichonse, ngati mugwiritsa ntchito HTTPS kulumikizana pakati pa owerengera ndi zochitika, ndiye kuti muyenera kukweza satifiketi kwa iwo. Pazifukwa za chitsanzo ichi, sitichita izi, tingochoka padoko 80.

Kuwunika zaumoyo - magawo owonera magwiridwe antchito. Muntchito yeniyeni, ili liyenera kukhala pempho lapadera lomwe limagwiritsa ntchito magawo ofunikira abizinesi; pazifukwa zachitsanzo ichi, ndisiya zosintha zosasinthika. Chotsatira, mukhoza kusankha nthawi yopempha, nthawi yopuma, zizindikiro zopambana, ndi zina zotero. Mu chitsanzo chathu, tidzasonyeza Kupambana ma code 200-399, chifukwa chithunzi cha Docker chomwe chidzagwiritsidwa ntchito chimabwezeretsa 304 code.

Kupanga Scalable API pa AWS Spot Instances

Lembani Zolinga - apa magalimoto a gulu amasankhidwa, koma kwa ife izi zidzachitidwa ndi ECS, kotero timangodumpha sitepe iyi.

Ndibwino kuti mudziwe: pamlingo wa balancer mutha kuloleza zipika zomwe zidzasungidwa mu S3 mwanjira ina mtundu. Kuchokera kumeneko amatha kutumizidwa kuzinthu zamagulu ena kuti afufuze, kapena mutha kufunsa mafunso a SQL mwachindunji pa data mu S3 ndi kugwiritsa ntchito Athena. Ndiosavuta ndipo imagwira ntchito popanda ma code ena owonjezera. Ndikupangiranso kukhazikitsa kuchotsedwa kwa zipika mu chidebe cha S3 pakatha nthawi yodziwika.

ECS Task Definition

M'magawo am'mbuyomu, tidapanga chilichonse chokhudzana ndi magwiridwe antchito; tsopano tikupitiliza kufotokoza zotengera zomwe tiyambitsa. Izi zachitika mu ECS β†’ Task Definitions gawo.

Launch mtundu kufanana - sankhani EC2.

Udindo wa IAM wochita ntchito - sankhani ecsTaskExecutionRole. Kugwiritsa ntchito, zipika zimalembedwa, kupeza zosintha zachinsinsi zimaperekedwa, ndi zina.

M'gawo la Container Definitions, dinani Add Container.

Image - kulumikizana ndi chithunzicho ndi nambala ya polojekiti; mwachitsanzo ndigwiritsa ntchito chithunzi chapagulu kuchokera ku Docker Hub bitnami/node-chitsanzo: 0.0.1.

Malire a Kukumbukira - malire a kukumbukira kwa chidebecho. Malire Ovuta - malire olimba, ngati chidebecho chikupitilira mtengo womwe watchulidwa, lamulo lopha docker lidzaperekedwa, chidebecho chidzafa nthawi yomweyo. Malire Ofezeka - malire ofewa, chidebecho chikhoza kupitirira mtengo wotchulidwa, koma chizindikiro ichi chidzaganiziridwa poyika ntchito pamakina. Mwachitsanzo, ngati makina ali ndi 4 GiB ya RAM, ndipo malire ofewa a chidebe ndi 2048 MiB, ndiye kuti makinawa akhoza kukhala ndi ntchito zopitirira 2 zoyendetsa ndi chidebe ichi. M'malo mwake, 4 GiB ya RAM ndiyocheperako pang'ono kuposa 4096 MiB, izi zitha kuwonedwa pa tabu ya ECS Instances mgulu. Kuchepetsa malire sikungakhale kwakukulu kuposa malire ovuta. Ndikofunikira kumvetsetsa kuti ngati pali zotengera zingapo muntchito imodzi, ndiye kuti malire awo amafupikitsidwa.

Zithunzi zamadoko - mkati Doko la alendo Tikuwonetsa 0, izi zikutanthauza kuti doko lidzaperekedwa mwamphamvu ndipo lidzayang'aniridwa ndi Target Group. Container Port - doko lomwe ntchito yanu imayendetsedwa nthawi zambiri imatchulidwa mu lamulo lakupha, kapena yoperekedwa mu code yanu yogwiritsira ntchito, Dockerfile, ndi zina zotero. Kwa chitsanzo chathu tigwiritsa ntchito 3000 chifukwa idalembedwamo Dockerfile chithunzi chomwe chikugwiritsidwa ntchito.

Kuwunika thanzi - magawo owunika thanzi la chidebe, kuti asasokonezedwe ndi omwe adakhazikitsidwa mu Target Group.

Environment - zokonda zachilengedwe. CPU magawo - zofanana ndi malire a Memory, kokha za purosesa. Chigawo chilichonse cha purosesa ndi mayunitsi a 1024, kotero ngati seva ili ndi purosesa yapawiri-pakati ndipo chidebecho chayikidwa ku 512, ndiye kuti ntchito 4 zomwe zili ndi chidebe ichi zitha kukhazikitsidwa pa seva imodzi. Magawo a CPU nthawi zonse amafanana ndi kuchuluka kwa ma cores; sipangakhale zochepa pang'ono, monga momwe zimakhalira ndi kukumbukira.

lamulo - Lamulo loyambitsa ntchito mkati mwa chidebe, magawo onse amafotokozedwa olekanitsidwa ndi koma. Izi zitha kukhala guncorn, npm, etc. Ngati sizinatchulidwe, mtengo wa malangizo a CMD kuchokera ku Dockerfile udzagwiritsidwa ntchito. Tikuwonetsa npm,start.

Zosintha zachilengedwe - zosintha zachilengedwe zotengera. Izi zitha kukhala zolemba zosavuta kapena zosintha zachinsinsi kuchokera Woyang'anira Chinsinsi kapena Malo ogulitsa Parameter.

Kusunga ndi Kudula Mitengo - apa tikhazikitsa mitengo mu CloudWatch Logs (ntchito yamalogi kuchokera ku AWS). Kuti muchite izi, ingoyambitsani Auto-configure CloudWatch Logs checkbox. Pambuyo popanga Task Definition, gulu la zipika lidzapangidwa zokha mu CloudWatch. Mwachikhazikitso, zipika zimasungidwa mmenemo kwamuyaya; Ndikupangira kusintha nthawi yosunga kuchoka ku Never Expire kupita ku nthawi yofunikira. Izi zimachitika m'magulu a CloudWatch Log, muyenera dinani nthawi yomwe ilipo ndikusankha ina.

Kupanga Scalable API pa AWS Spot Instances

ECS Cluster ndi ECS Capacity Provider

Pitani ku gawo la ECS β†’ Clusters kuti mupange gulu. Timasankha EC2 Linux + Networking ngati template.

Dzina la Cluster - zofunika kwambiri, timapanga apa dzina lomwelo monga momwe tafotokozera mu Launch Template parameter ECS_CLUSTER, kwa ife - DemoApiClusterProd. Chongani Pangani bokosi loyang'ana gulu lopanda kanthu. Mukasankha, mutha kuloleza Container Insights kuti muwone ma metric a ntchito mu CloudWatch. Ngati munachita zonse molondola, ndiye mu gawo la ECS Instances mudzawona makina omwe adapangidwa mu gulu la Auto Scaling.

Kupanga Scalable API pa AWS Spot Instances

Pitani ku tabu Opereka Mphamvu ndi kupanga yatsopano. Ndiroleni ndikukumbutseni kuti ndikofunikira kuwongolera kupanga ndi kutseka kwa makina kutengera kuchuluka kwa ntchito za ECS. Ndikofunika kuzindikira kuti wothandizira angathe kuperekedwa ku gulu limodzi lokha.

Gulu la Auto Scalling - sankhani gulu lomwe lapangidwa kale.

Makulitsidwe oyendetsedwa - yambitsani kuti woperekayo athe kukulitsa ntchitoyo.

Kuchuluka kwa zomwe mukufuna % - ndi kuchuluka kwa makina odzaza ndi ntchito zomwe timafunikira. Ngati mutchula 100%, ndiye kuti makina onse adzakhala otanganidwa ndi ntchito. Ngati mutchula 50%, ndiye kuti theka la magalimoto lidzakhala laulere nthawi zonse. Pankhaniyi, ngati pali kulumpha kwakukulu, ma taxi atsopano amafika pamagalimoto aulere, osadikirira kuti atumizidwe.

Kutetezedwa kotheratu - yambitsani, parameter iyi imalola wothandizira kuchotsa chitetezo cha zochitika kuti zichotsedwe. Izi zimachitika pamene palibe ntchito yogwira pa makina ndi kulola Target mphamvu%.

ECS Service ndi kukhazikitsa makulitsidwe

Last site :) Kulenga utumiki, muyenera kupita ku gulu kale analenga pa Services tabu.

Mtundu wotsegulira - muyenera kudina Sinthani ku njira yoperekera mphamvu ndikusankha omwe adapangidwa kale.

Kupanga Scalable API pa AWS Spot Instances

Tanthauzo la Ntchito - sankhani Task Definition yomwe idapangidwa kale ndikukonzanso kwake.

Zina lautumiki - kupewa chisokonezo, nthawi zonse timasonyeza zofanana ndi Task Definition.

Mtundu wautumiki - Nthawi zonse Replica.

Chiwerengero cha ntchito - chiwerengero chofunidwa cha ntchito zogwira ntchito muutumiki. Parameter iyi imayang'aniridwa ndi makulitsidwe, koma iyenera kufotokozedwabe.

Osachepera wathanzi peresenti ΠΈ Zokwanira peresenti - kudziwa momwe ntchito zikuyendera panthawi yotumizidwa. Miyezo yosasinthika ndi 100 ndi 200, zomwe zikuwonetsa kuti panthawi yotumizidwa, kuchuluka kwa ntchito kumawonjezeka kangapo, ndikubwerera kumtengo womwe mukufuna. Ngati muli ndi 1 ntchito yothamanga, min = 0, ndi max = 100, ndiye kuti panthawi yotumizidwa idzaphedwa, ndipo pambuyo pake yatsopano idzakwezedwa, ndiko kuti, idzakhala nthawi yopuma. Ngati 1 ntchito ikugwira ntchito, min = 50, max = 150, ndiye kuti kutumizidwa sikungachitike konse, chifukwa ntchito ya 1 singagawidwe pakati kapena kuwonjezeka ndi nthawi imodzi ndi theka.

Mtundu wotumizira - kusiya Rolling update.

Ma templates oyika - malamulo oyika ntchito pamakina. Zosasintha ndi AZ Balanced Spread - izi zikutanthauza kuti ntchito yatsopano iliyonse idzayikidwa pamwambo watsopano mpaka makina onse omwe akupezeka atakwera. Nthawi zambiri timachita BinPack - CPU ndi Spread - AZ; ndi mfundoyi, ntchito zimayikidwa mochuluka momwe zingathere pamakina amodzi pa CPU. Ngati kuli kofunikira kupanga makina atsopano, amapangidwa m'dera latsopano lopezeka.

Kupanga Scalable API pa AWS Spot Instances

Katundu balancer mtundu β€” sankhani Application Load Balancer.

Ntchito ya IAM ya Service - sankhani ecsServiceRole.

Lembani dzina la balancer - sankhani chowerengera chomwe chidapangidwa kale.

Health Check grace period - Imani kaye musanayang'ane za thanzi mutamaliza ntchito yatsopano, nthawi zambiri timayimitsa masekondi 60.

Chidebe chodzaza bwino - mu dzina la gulu la Target, sankhani gulu lomwe linapangidwa kale, ndipo zonse zidzadzazidwa zokha.

Kupanga Scalable API pa AWS Spot Instances

Service Auto Scaling - ntchito makulitsidwe magawo. Sankhani Configure Service Auto Scaling kuti musinthe kuchuluka komwe mukufuna. Timayika ntchito zochepa komanso zochulukirapo pokulitsa.

Udindo wa IAM pa Service Auto Scaling - sankhani AWSServiceRoleForApplicationAutoScaling_ECSService.

Ndondomeko zowonjeza ntchito zokha - malamulo a makulitsidwe. Pali mitundu iwiri:

  1. Kutsata zomwe mukufuna - kutsatira ma metric omwe mukufuna (kugwiritsa ntchito CPU / RAM kapena kuchuluka kwa zopempha pa ntchito iliyonse). Mwachitsanzo, tikufuna kuti purosesa yapakati ikhale 85%, ikafika pamwamba, ntchito zatsopano zidzawonjezedwa mpaka zitafika pamtengo womwe mukufuna. Ngati katunduyo ali wocheperako, ndiye kuti ntchitozo zidzachotsedwa, m'malo mwake, pokhapokha ngati chitetezo chocheperako chikuyatsidwa (Letsani kukulitsa).
  2. Masitepe makulitsidwe - kuchitapo kanthu pazochitika zosayembekezereka. Apa mutha kukonza zomwe zimachitika pamwambo uliwonse (CloudWatch Alamu), zikachitika, mutha kuwonjezera kapena kuchotsa ntchito zomwe zatchulidwa, kapena tchulani nambala yeniyeni ya ntchito.

Ntchito ikhoza kukhala ndi malamulo angapo okulitsa, izi zitha kukhala zothandiza, chinthu chachikulu ndikuwonetsetsa kuti sagwirizana wina ndi mnzake.

Pomaliza

Mukatsatira malangizowo ndikugwiritsa ntchito chithunzi chomwecho cha Docker, ntchito yanu iyenera kubweza tsamba ngati ili.

Kupanga Scalable API pa AWS Spot Instances

  1. Tapanga template malinga ndi momwe makina onse omwe ali muutumiki amayambitsidwira. Tinaphunziranso momwe tingasinthire makina template ikasintha.
  2. Takonza makonzedwe a chizindikiro choyimitsa malo, kotero patangopita mphindi imodzi mutalandira, ntchito zonse zomwe zikuyenda zimachotsedwa pamakina, kotero palibe chomwe chimatayika kapena kusokonezedwa.
  3. Tinakweza balancer kuti tigawire katunduyo mofanana pamakina onse.
  4. Tapanga ntchito yomwe imagwira ntchito nthawi yomweyo, yomwe imachepetsa mtengo wa makina pafupifupi katatu.
  5. Takhazikitsa autoscaling mbali zonse ziwiri kuti tithane ndi kuchuluka kwa ntchito popanda kuwononga nthawi yocheperako.
  6. Timagwiritsa ntchito Capacity Provider kuti pulogalamuyo iziyang'anira zomangamanga (makina) osati mwanjira ina.
  7. Ndife opambana.

Ngati muli ndi spikes zoloseredwa, mwachitsanzo mukutsatsa pa imelo yayikulu, mutha kukhazikitsa makulitsidwe ndi ndondomeko.

Mukhozanso kukula malinga ndi deta kuchokera kumadera osiyanasiyana a dongosolo lanu. Mwachitsanzo, tili ndi magwiridwe antchito kutumiza zotsatsa zapayekha ogwiritsa ntchito mafoni. Nthawi zina kampeni imatumizidwa kwa anthu 1M+. Pambuyo pa kugawa koteroko, nthawi zonse pamakhala kuwonjezeka kwakukulu kwa zopempha ku API, popeza ogwiritsa ntchito ambiri amalowa muzogwiritsira ntchito nthawi yomweyo. Chifukwa chake ngati tiwona kuti pali zisonyezo zochulukirapo pamzere wotumizira zidziwitso zotsatsira, titha kuyambitsa makina ndi ntchito zingapo kuti tikonzekere kunyamula.

Ndikhala wokondwa mukandiuza mu ndemanga nkhani zosangalatsa zogwiritsa ntchito mawanga ndi ECS kapena china chake chokhudza makulitsidwe.

Posachedwapa pakhala zolemba za momwe timachitira masauzande a zochitika zowunikira pamphindikati pamtengo wopanda seva (ndi ndalama) komanso momwe kutumiza ntchito kumagwirira ntchito pogwiritsa ntchito GitLab CI ndi Terraform Cloud.

Lembani kwa ife, zidzakhala zosangalatsa!

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mumagwiritsa ntchito zochitika zowonekera popanga?

  • 22,2%Yes6

  • 66,7%No18

  • 11,1%Ndinaphunzira za iwo kuchokera m'nkhani ndipo ndikukonzekera kuwagwiritsa ntchito3

Ogwiritsa 27 adavota. Ogwiritsa ntchito 5 adakana.

Source: www.habr.com

Kuwonjezera ndemanga