Ukwakha i-Scalable API kuma-AWS Spot Instances

Sanibonani nonke! Igama lami nginguKirill, ngiyi-CTO e-Adapty. Iningi lezakhiwo zethu liku-AWS, futhi namuhla ngizokhuluma ngendlela esinciphise ngayo izindleko zeseva izikhathi ezingu-3 ngokusebenzisa izimo zendawo endaweni yokukhiqiza, kanye nendlela yokusetha i-autoscaling yabo. Okokuqala kuzoba nohlolojikelele lokuthi isebenza kanjani, bese kuba nemiyalelo enemininingwane yokuqalisa.

Ayini ama-Spot Instances?

Ibala izimo zingamaseva wabanye abasebenzisi be-AWS okwamanje abangenzi lutho, futhi bawathengisa ngesaphulelo esikhulu (i-Amazon ibhala kufika ku-90%, ngokuhlangenwe nakho kwethu ~3x, kuyahlukahluka kuye ngesifunda, i-AZ kanye nohlobo lwesibonelo). Umehluko wabo omkhulu kwezivamile ukuthi zingacisha noma nini. Ngakho-ke, isikhathi eside sasikholelwa ukuthi kuvamile ukuwasebenzisa ezindaweni ezingcolile, noma emisebenzini yokubala okuthile, ngemiphumela ephakathi egcinwe ku-S3 noma ku-database, kodwa hhayi ukuthengisa. Kunezixazululo zezinkampani zangaphandle ezikuvumela ukuthi usebenzise amabala ekukhiqizeni, kodwa kunezinduku eziningi zecala lethu, ngakho asizange sizisebenzise. Indlela echazwe esihlokweni isebenza ngokuphelele ngaphakathi kokusebenza okujwayelekile kwe-AWS, ngaphandle kwemibhalo eyengeziwe, imiqhele, njll.

Ngezansi kunezithombe-skrini ezimbalwa ezibonisa umlando wentengo wezehlakalo.

m5.inkulu esifundeni sase-eu-west-1 (Ireland). Intengo izinzile kakhulu izinyanga ezi-3, okwamanje yonga u-2.9x.

Ukwakha i-Scalable API kuma-AWS Spot Instances

m5.enkulu esifundeni sase-us-east-1 (N. Virginia). Intengo ishintsha njalo ezinyangeni ezi-3, okwamanje yonga ukusuka ku-2.3x ukuya ku-2.8x kuye ngendawo yokutholakala.

Ukwakha i-Scalable API kuma-AWS Spot Instances

t3.okuncane esifundeni sase-us-east-1 (N. Virginia). Intengo izinzile izinyanga ezi-3, okwamanje yonga u-3.4x.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Isevisi yezakhiwo

Isakhiwo esiyisisekelo senkonzo esizokhuluma ngayo kulesi sihloko siboniswa kumdwebo ongezansi.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Isilinganisi Somthwalo Wokulayishwa Kwesicelo → Iqembu Eliqondisiwe le-EC2 → Isevisi Yesiqukathi Esinwebekayo

I-Application Load Balancer (ALB) isetshenziswa njengebhalansi, ethumela izicelo ku-EC2 Target Group (TG). I-TG inesibopho sokuvula izimbobo ngezikhathi zama-ALB futhi iwaxhumanise neziqukathi ze-Elastic Container Service (ECS). I-ECS iyi-analogue ye-Kubernetes ku-AWS, elawula iziqukathi ze-Docker.

Isenzakalo esisodwa singaba neziqukathi ezimbalwa ezisebenzayo ezinezimbobo ezifanayo, ngakho-ke asikwazi ukuzibeka ngendlela eqondile. I-ECS itshela i-TG ukuthi yethula umsebenzi omusha (ngesitemu se-Kubernetes lokhu kubizwa ngokuthi i-pod), ihlola amachweba wamahhala esibonelweni bese yabela enye yazo emsebenzini owethuliwe. I-TG iphinde ihlole ukuthi ingabe isibonelo kanye ne-API kuyasebenza kukho kusetshenziswa ukuhlolwa kwezempilo, futhi uma ibona izinkinga, iyayeka ukuthumela izicelo lapho.

I-EC2 Auto Scalling Groups + ECS Capacity Providers

Umdwebo ongenhla awubonisi isevisi ye-EC2 Auto Scaling Groups (ASG). Kusukela egameni ungaqonda ukuthi inesibopho sokukala izimo. Kodwa-ke, kuze kube muva nje, i-AWS ibingenalo ikhono elakhelwe ngaphakathi lokuphatha inombolo yemishini esebenzayo evela ku-ECS. I-ECS yenze kwaba nokwenzeka ukukala inani lemisebenzi, isibonelo, ngokusetshenziswa kwe-CPU, i-RAM noma inombolo yezicelo. Kodwa uma imisebenzi ithatha zonke izimo zamahhala, imishini emisha ayizange idalwe ngokuzenzakalelayo.

Lokhu kushintshile ngokufika kwe-ECS Capacity Providers (ECS CP). Manje isevisi ngayinye ku-ECS ingahlotshaniswa ne-ASG, futhi uma imisebenzi ingahambisani nezimo ezisebenzayo, khona-ke ezintsha zizophakanyiswa (kodwa ngaphakathi kwemikhawulo ye-ASG emisiwe). Lokhu futhi kusebenza ngakolunye uhlangothi, uma i-ECS CP ibona izimo ezingenzi lutho ngaphandle kwemisebenzi, izonikeza umyalo we-ASG wokuzivala. I-ECS CP inamandla okucacisa iphesenti eliqondiwe lomthwalo wesibonelo, ukuze inombolo ethile yemishini ihlale imahhala ukuze yenze imisebenzi yokukala ngokushesha; ngizokhuluma ngalokhu ngokuhamba kwesikhathi.

I-EC2 Yethula Izifanekiso

Isevisi yokugcina engizokhuluma ngayo ngaphambi kokuba ngichaze kabanzi mayelana nokudala le ngqalasizinda Izifanekiso Zokuqalisa i-EC2. Ikuvumela ukuthi udale isifanekiso ngokusho ukuthi yonke imishini izoqala kanjani, ukuze ungaphindi lokhu kusukela ekuqaleni njalo. Lapha ungakhetha uhlobo lomshini ozoqala ngalo, iqembu lezokuphepha, isithombe sediski kanye neminye imingcele eminingi. Ungaphinda ucacise idatha yomsebenzisi ezolayishwa kuzo zonke izimo eziqalisiwe. Ungasebenzisa imibhalo kudatha yomsebenzisi, isibonelo, ungahlela okuqukethwe kwefayela Ukucushwa komenzeli we-ECS.

Enye yemingcele ebaluleke kakhulu yokumisa yalesi sihloko ECS_ENABLE_SPOT_INSTANCE_DRAINING=iqiniso. Uma le pharamitha inikwe amandla, khona-ke ngokushesha nje lapho i-ECS ithola isignali yokuthi isenzakalo sendawo siyasuswa, idlulisela yonke imisebenzi esebenza kuyo kusimo Sokudonsa. Ayikho imisebenzi emisha ezokwabelwa lesi senzakalo; uma kukhona imisebenzi efuna ukukhishwa kuyo manje, izokhanselwa. Izicelo ezivela kobhalansi nazo ziyayeka ukuza. Isaziso sokususwa kwesibonelo siza emizuzwini emi-2 ngaphambi komcimbi wangempela. Ngakho-ke, uma isevisi yakho ingenzi imisebenzi engaphezu kwemizuzu emi-2 futhi ingalondolozi lutho kudiski, ungasebenzisa izimo zangempela ngaphandle kokulahlekelwa idatha.

Mayelana nediski - AWS muva nje ukwenzile Kungenzeka ukusebenzisa i-Elastic File System (EFS) kanye ne-ECS; ngalolu hlelo, ngisho nediski ayisona isithiyo, kodwa asizange sizame lokhu, ngoba empeleni asiyidingi idiski ukugcina isimo. Ngokuzenzakalelayo, ngemva kokuthola i-SIGINT (ithunyelwe lapho umsebenzi udluliselwa ku-Draining status), yonke imisebenzi esebenzayo izomiswa ngemva kwemizuzwana engu-30, ngisho noma ingakaqedi; ungakwazi ukushintsha lesi sikhathi usebenzisa ipharamitha. ECS_CONTAINER_STOP_TIMEOUT. Into esemqoka akufanele uyibeke ngaphezu kwemizuzu emi-2 yemishini yendawo.

Ukudala isevisi

Masiqhubekele phambili ekudaleni isevisi echazwe. Kulolu hlelo, ngizophinde ngichaze amaphuzu amaningana awusizo angashiwongo ngenhla. Ngokuvamile, lokhu kuyisinyathelo ngesinyathelo, kodwa ngeke ngicabangele ezinye eziyisisekelo kakhulu noma, ngokuphambene nalokho, izimo eziqondile kakhulu. Zonke izenzo zenziwa kukhonsoli ebonakalayo ye-AWS, kodwa zingenziwa kabusha ngokohlelo kusetshenziswa i-CloudFormation noma i-Terraform. E-Adapty sisebenzisa i-Terraform.

I-EC2 Yethula Isifanekiso

Le sevisi idala ukucushwa kwemishini ezosetshenziswa. Izifanekiso ziphethwe ku-EC2 -> Izimo -> Isigaba sezifanekiso zokuvula.

Isithombe somshini we-Amazon (AMI) - cacisa isithombe sediski lapho zonke izimo zizokwethulwa khona. Ku-ECS, ezimweni eziningi kufanelekile ukusebenzisa isithombe esilungiselelwe esivela e-Amazon. Ibuyekezwa njalo futhi iqukethe yonke into edingekayo ukuze i-ECS isebenze. Ukuze uthole i-ID yesithombe samanje, hamba ekhasini I-Amazon ECS-optimized AMIs, khetha isifunda osisebenzisayo bese ukopishela i-AMI ID. Isibonelo, esifundeni sase-us-east-1, i-ID yamanje ngesikhathi sokubhala ithi ami-00c7c1cf5bdc913ed. Le ID kufanele ifakwe kokuthi Cacisa into yenani langokwezifiso.

Uhlobo lwesibonelo — khombisa uhlobo lwesibonelo. Khetha leyo ewufanela kangcono umsebenzi wakho.

Ipheya yokhiye (ngena ngemvume) - cacisa isitifiketi ongaxhuma ngaso kusibonelo nge-SSH, uma kunesidingo.

Izilungiselelo zenethiwekhi — cacisa imingcele yenethiwekhi. Inkundla yenethiwekhi esikhathini esiningi kufanele kube ne-Virtual Private Cloud (VPC). Amaqembu ezokuphepha - amaqembu okuvikela ezimeni zakho. Njengoba sizosebenzisa ibhalansi ngaphambi kwezimo, ngincoma ukucacisa iqembu lapha elivumela ukuxhumeka okungenayo kuphela kusuka kusilinganisi. Okusho ukuthi, uzoba namaqembu okuphepha angu-2, elilodwa le-balancer, elivumela ukuxhumeka kwangaphakathi kusuka noma yikuphi kumachweba angu-80 (http) no-443 (https), kanti okwesibili kwemishini, okuvumela ukuxhumeka okungenayo kunoma yiziphi izimbobo ezivela eqenjini le-balancer. . Uxhumano oluphumayo kuwo womabili amaqembu kufanele luvulwe kusetshenziswa iphrothokholi ye-TCP kuwo wonke amachweba kuwo wonke amakheli. Ungakwazi ukukhawulela izimbobo namakheli ekuxhumekeni okuphumayo, kodwa-ke udinga ukugada njalo ukuthi awuzami ukufinyelela okuthile embotsheni evaliwe.

Isitoreji (amavolumu) - cacisa imingcele yediski yemishini. Usayizi wediski awukwazi ukuba ngaphansi kwalowo oshiwo ku-AMI; ku-ECS Optimized kungu-30 GiB.

Imininingwane ethuthukisiwe — cacisa imingcele eyengeziwe.

Inketho yokuthenga - noma ngabe sifuna ukuthenga izimo ezikhona. Siyafuna, kodwa ngeke siqoke leli bhokisi lapha; sizolilungiselela Eqenjini Lokulinganisa Okuzenzakalelayo, kukhona ezinye izinketho lapho.

Iphrofayili yesibonelo ye-IAM — khombisa indima okuzoqalwa ngayo izimo. Ukuze izimo zisebenze ku-ECS, zidinga izimvume, ezivame ukutholakala endimeni ecsInstanceRole. Kwezinye izimo kungadalwa, uma kungenjalo, khona-ke lapha incwadi ukuthi ungakwenza kanjani lokhu. Ngemva kokudalwa, sikubonisa kusifanekiso.
Okulandelayo kunamapharamitha amaningi, ngokuyisisekelo ungashiya amanani azenzakalelayo yonke indawo, kepha ngalinye linencazelo ecacile. Ngihlala ngivumela isibonelo se-EBS-optimized kanye nezinketho ze-T2/T3 Unlimited uma zisetshenziswa kuqhuma izimo.

Idatha yomsebenzisi — khombisa idatha yomsebenzisi. Sizohlela ifayela /etc/ecs/ecs.config, equkethe ukucushwa komenzeli we-ECS.
Isibonelo sokuthi idatha yomsebenzisi ingase ibukeke kanjani:

#!/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 — ipharamitha ikhombisa ukuthi isibonelo singeseqoqo elinegama elinikeziwe, okungukuthi, leli qoqo lizokwazi ukubeka imisebenzi yalo kule seva. Asikadali iqoqo okwamanje, kodwa sizosebenzisa leli gama uma silidala.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true — ipharamitha icacisa ukuthi uma isignali yamukelwe ukuze kucishwe isenzakalo sendawo, yonke imisebenzi ekuyo kufanele idluliselwe kusimo se-Draining.

ECS_CONTAINER_STOP_TIMEOUT=1m - ipharamitha icacisa ukuthi ngemva kokuthola isignali ye-SIGINT, yonke imisebenzi inomzuzu ongu-1 ngaphambi kokubulawa.

ECS_ENGINE_AUTH_TYPE=docker - ipharamitha ikhombisa ukuthi uhlelo lwe-Docker lusetshenziswa njengendlela yokugunyaza

ECS_ENGINE_AUTH_DATA=... - amapharamitha wokuxhuma kusibhalisi sesitsha esiyimfihlo, lapho kugcinwa khona izithombe zakho ze-Docker. Uma kusesidlangalaleni, awudingi ukucacisa noma yini.

Ngezinjongo zalesi sihloko, ngizosebenzisa isithombe esisesidlangalaleni esivela ku-Docker Hub, ngakho-ke cacisa amapharamitha ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA akudingekile.

Kuhle ukwazi: Kunconywa ukuthi ubuyekeze i-AMI njalo, ngoba izinguqulo ezintsha zibuyekeza izinguqulo ze-Docker, i-Linux, i-ejenti ye-ECS, njll. Ukuze ungakhohlwa ngalokhu, ungakwazi setha izaziso mayelana nokukhululwa kwezinguqulo ezintsha. Ungathola izaziso nge-imeyili futhi ubuyekeze mathupha, noma ungabhala umsebenzi we-Lambda ozodala ngokuzenzakalelayo inguqulo entsha Yesifanekiso Sokuqalisa nge-AMI ebuyekeziwe.

Iqembu le-EC2 Auto Scalling

I-Auto Scaling Group inesibopho sokwethula kanye nokukala izimo. Amaqembu aphethwe ku-EC2 -> Ukukala Okuzenzakalelayo -> Amaqembu Okukala Ngokuzenzakalelayo.

Yethula isifanekiso — khetha isifanekiso esidalwe esinyathelweni sangaphambilini. Sishiya inguqulo ezenzakalelayo.

Izinketho zokuthenga nezinhlobo zezibonelo - cacisa izinhlobo zezimo zeqoqo. Ukunamathela ekuqaliseni isifanekiso kusebenzisa uhlobo lwesibonelo olusuka Kusifanekiso Sokuqalisa. Hlanganisa izinketho zokuthenga nezinhlobo zezibonelo zikuvumela ukuthi ulungiselele kalula izinhlobo zezibonelo. Sizoyisebenzisa.

Isisekelo Esidingekayo Esidingekayo - inani lezehlakalo ezivamile, ezingezona ndawo ezizohlala zisebenza.

Amaphesenti afunwayo ngaphezu kwesisekelo - isilinganiso sephesenti lezehlakalo ezivamile nezimabala, ama-50-50 azosatshalaliswa ngokulinganayo, ama-20-80 esimweni ngasinye okujwayelekile kuzokhushulwa izindawo ezine. Ngenhloso yalesi sibonelo, ngizobonisa 4-50, kodwa empeleni sivame ukwenza 50-20, kwezinye izimo 80-0.

Izinhlobo zezibonelo — lapha ungacacisa izinhlobo ezengeziwe zezimo ezizosetshenziswa kuqoqo. Asikaze siyisebenzise ngoba angiyiqondi kahle incazelo yendaba. Mhlawumbe lokhu kungenxa yemikhawulo ezinhlotsheni ezithile zezimo, kodwa zingandiswa kalula ngokusekelwa. Uma usazi isicelo, ngizojabula ukusifunda kumazwana)

Ukwakha i-Scalable API kuma-AWS Spot Instances

Network — izilungiselelo zenethiwekhi, khetha i-VPC nama-subnet emishini, ezimweni eziningi kufanele ukhethe wonke amanethi atholakalayo.

Ukulayisha ngokulinganisa - izilungiselelo ze-balancer, kodwa sizokwenza lokhu ngokwehlukana, ngeke sithinte lutho lapha. Ukuhlolwa kwezempilo izophinde ilungiswe ngokuhamba kwesikhathi.

Usayizi weqembu — sibonisa imikhawulo enanini lemishini kuqoqo kanye nenani elifunekayo lemishini ekuqaleni. Inombolo yemishini kuqoqo ngeke ibe ngaphansi kobuncane obucacisiwe futhi ibe ngaphezu komkhawulo, ngisho noma ukukala kufanele kwenzeke ngokuya ngamamethrikhi.

Izinqubomgomo zokukala - amapharamitha wokukala, kepha sizokala ngokususelwa emisebenzini esebenzayo ye-ECS, ngakho-ke sizomisa ukukala ngokuhamba kwesikhathi.

Ukuvikelwa kwesikali-ngaphakathi - ukuvikelwa kwezimo ekususweni lapho wehliswa. Siyenza isebenze ukuze i-ASG ingawususi umshini onemisebenzi esebenzayo. I-ECS Capacity Provider izokhubaza ukuvikela ezimweni ezingenayo imisebenzi.

Faka amathegi — ungacacisa omaki bezimo (kulokhu, ibhokisi likamaka lezimo ezintsha kufanele lihlolwe). Ngincoma ukucacisa ithegi Yegama, khona-ke zonke izimo ezethulwa eqenjini zizoba negama elifanayo, futhi kulula ukuzibuka kukhonsoli.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Ngemva kokudala iqembu, livule bese uye esigabeni sokucushwa Okuthuthukile.Kungani zonke izinketho zingabonakali kukhonsoli esigabeni sokudala.

Izinqubomgomo zokunqanyulwa - imithetho ecatshangelwayo lapho kususwa izimo. Zisetshenziswa ngokulandelana kwazo. Sivamise ukusebenzisa lezi ezisesithombeni esingezansi. Okokuqala, izenzakalo ezinesifanekiso sokuqalisa esidala kunazo zonke ziyasuswa (isibonelo, uma sibuyekeze i-AMI, sidale inguqulo entsha, kodwa zonke izimo sikwazile ukushintshela kuyo). Bese kukhethwa izimo eziseduze nehora elilandelayo lokukhokha. Bese kukhethwa ezindala kakhulu ngokusekelwe osukwini lokuqalisa.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Kuhle ukwazi: ukuvuselela yonke imishini ku-cluster, elula ukuyisebenzisa Ukuvuselela Kwesibonelo. Uma uhlanganisa lokhu nomsebenzi we-Lambda kusukela esinyathelweni sangaphambilini, uzoba nesistimu yokuvuselela izibonelo ezizenzakalelayo ngokugcwele. Ngaphambi kokubuyekeza yonke imishini, kufanele ukhubaze ukuvikelwa kwesikali kuzo zonke izimo eqenjini. Hhayi ukucushwa eqenjini, kodwa ukuvikelwa emishinini ngokwayo, lokhu kwenziwa kuthebhu yokuphatha i-Instance.

I-Application Load Balancer kanye ne-EC2 Target Group

Isilinganisi sidalwe esigabeni EC2 → Ukulinganisa Ukulayisha → Izikali Zokulayisha. Sizosebenzisa I-Application Load Balancer; ukuqhathanisa izinhlobo ezahlukene zamabhalansi kungafundwa kokuthi ikhasi lesevisi.

Abalaleli - kunengqondo ukwenza izimbobo 80 kanye ne-443 futhi uqondise kabusha kusuka ku-80 kuya ku-443 usebenzisa imithetho ye-balancer kamuva.

Izindawo Ezitholakalayo — ezikhathini eziningi, sikhetha izindawo zokufinyeleleka zawo wonke umuntu.

Lungiselela Izilungiselelo Zokuvikela - Isitifiketi se-SSL somlinganisi sikhonjisiwe lapha, inketho elula kakhulu yenza isitifiketi kwe-ACM. Mayelana nokwehluka Inqubomgomo Yokuphepha ingafundwa ku imibhalo, ungayishiya ikhethiwe ngokuzenzakalelayo ELBSecurityPolicy-2016-08. Ngemva kokudala i-balancer, uzoyibona Igama le-DNS, oyidingayo ukuze ulungiselele i-CNAME yesizinda sakho. Isibonelo, le yindlela ebukeka ngayo ku-Cloudflare.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Iqembu Lezokuphepha — dala noma khetha iqembu lezokuphepha lebhalansi, ngibhale okwengeziwe mayelana nalokhu ngenhla ku-EC2 Sokuqalisa Isifanekiso → Izilungiselelo zenethiwekhi.

Iqembu elihlosiwe - sakha iqembu elinomthwalo wemfanelo wokudlulisa izicelo ezisuka kobhalansi ziye emshinini futhi sihlole ukutholakala kwazo ukuze sizishintshe uma kwenzeka kuba nezinkinga. Uhlobo lwethagethi kufanele kube yisibonelo, uHlelo Lokudlulisa и Port noma yikuphi, uma usebenzisa i-HTTPS ukuxhumana phakathi kwebhalansi nezimo, kuzomele ulayishe isitifiketi kubo. Ngezinhloso zalesi sibonelo, ngeke sikwenze lokhu, sizovele sishiye i-port 80.

Ukuhlolwa kwezempilo — amapharamitha okuhlola ukusebenza kwesevisi. Kusevisi yangempela, lesi kufanele kube isicelo esihlukile esisebenzisa izingxenye ezibalulekile zomqondo webhizinisi; ngezinjongo zalesi sibonelo, ngizoshiya izilungiselelo ezizenzakalelayo. Okulandelayo, ungakhetha isikhawu sesicelo, isikhathi sokuvala, amakhodi empumelelo, njll. Esibonelweni sethu, sizobonisa amakhodi empumelelo 200-399, ngoba isithombe se-Docker esizosetshenziswa sibuyisela ikhodi ye-304.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Bhalisa Okuhlosiwe - lapha izimoto zeqembu zikhethiwe, kodwa kithi lokhu kuzokwenziwa yi-ECS, ngakho-ke sivele seqe lesi sinyathelo.

Kuhle ukwazi: ezingeni lebhalansi ungavumela izingodo ezizogcinwa ku-S3 ngendlela ethile ifomethi. Ukusuka lapho zingathunyelwa kumasevisi ezinkampani zangaphandle ukuze kuhlaziywe, noma ungenza imibuzo ye-SQL ngokuqondile kudatha eku-S3 nge- usebenzisa i-Athena. Kuyinto elula futhi isebenza ngaphandle kwekhodi eyengeziwe. Ngiphinde ngincome ukusetha ukukhishwa kwamalogi ebhakedeni le-S3 ngemva kwesikhathi esithile esinqunyiwe.

Incazelo Yomsebenzi we-ECS

Ezinyathelweni ezedlule, sidale yonke into ehlobene nengqalasizinda yesevisi; manje siqhubekela phambili ekuchazeni iziqukathi esizozethula. Lokhu kwenziwa esigabeni se-ECS → Izincazelo Zomsebenzi.

Qalisa ukuhambisana kohlobo - khetha i-EC2.

Indima ye-IAM yokwenziwa komsebenzi - khetha ecsTaskExecutionRole. Ukuyisebenzisa, izingodo zibhaliwe, ukufinyelela okuguquguqukayo okuyimfihlo kunikezwa, njll.

Esigabeni Sezincazelo Zesitsha, chofoza okuthi Engeza Isitsha.

isithombe - xhuma esithombeni ngekhodi yephrojekthi; kulesi sibonelo ngizosebenzisa isithombe esisesidlangalaleni esivela ku-Docker Hub bitnami/node-isibonelo:0.0.1.

Imikhawulo Yenkumbulo — imikhawulo yenkumbulo yesiqukathi. Umkhawulo Oqinile - umkhawulo onzima, uma isitsha sidlula inani elishiwo, umyalo wokubulala i-docker uzokwenziwa, isitsha sizofa ngokushesha. Umkhawulo othambile - umkhawulo othambile, isiqukathi singadlula inani elishiwo, kodwa le pharamitha izocatshangelwa lapho kufakwa imisebenzi emishinini. Isibonelo, uma umshini une-4 GiB ye-RAM, futhi umkhawulo othambile wesiqukathi ungu-2048 MiB, khona-ke lo mshini ungaba nobukhulu obungu-2 bemisebenzi esebenzayo ngalesi sitsha. Eqinisweni, i-4 GiB ye-RAM ingaphansi kancane kune-4096 MiB, lokhu kungabukwa kuthebhu ye-ECS Instances ku-cluster. Umkhawulo othambile awukwazi ukuba mkhulu kunomkhawulo oqinile. Kubalulekile ukuqonda ukuthi uma kuneziqukathi eziningana emsebenzini owodwa, khona-ke imikhawulo yazo ifinyezwa.

Amamephu echweba - v Imbobo yokusingatha Sikhomba u-0, lokhu kusho ukuthi ichweba lizonikezwa amandla futhi lizogadwa yiQembu Eliqondiwe. Imbobo yesitsha - ichweba lapho uhlelo lwakho lokusebenza lusebenza khona livame ukucaciswa emyalweni wokwenza, noma linikezwe ikhodi yakho yesicelo, i-Dockerfile, njll. Isibonelo sethu sizosebenzisa i-3000 ngoba ifakwe kuhlu I-Dockerfile isithombe esisetshenziswayo.

Ukuhlolwa kwezempilo - imingcele yokuhlolwa kwempilo yesiqukathi, akufanele kudidaniswe naleyo emisiwe kuQembu Eliqondiwe.

Environment — izilungiselelo zendawo. CPU amayunithi - okufana nemikhawulo yeMemori, mayelana neprosesa kuphela. I-processor core ngayinye ingamayunithi angu-1024, ngakho-ke uma iseva ine-dual-core processor futhi isiqukathi sisethelwe ku-512, khona-ke imisebenzi emi-4 enalesi sitsha ingasethulwa kuseva eyodwa. Amayunithi e-CPU ahlala ehambelana nenani lama-cores; angeke kube khona okuncane kuwo, njengoba kwenzeka ngenkumbulo.

Umyalo — umyalo wokuqala insizakalo ngaphakathi kwesitsha, yonke imingcele icaciswa ihlukaniswe ngokhefana. Lokhu kungaba i-guncorn, npm, njll. Uma kungashiwongo, inani lomyalelo we-CMD elivela ku-Dockerfile lizosetshenziswa. Sikhombisa npm,start.

Okuguquguqukayo kwemvelo - okuguquguqukayo kwemvelo yesitsha. Lokhu kungaba idatha yombhalo elula noma okuhlukile okuyimfihlo okuvela kuyo Umphathi Wezimfihlo noma Isitolo sepharamitha.

Isitoreji Nokugawula - lapha sizosetha ukungena ngemvume ku-CloudWatch Logs (isevisi yamalogi avela kwa-AWS). Ukuze wenze lokhu, vele unike amandla ibhokisi lokuhlola le-CloudWatch Logs. Ngemva kokudala i-Task Definition, iqembu lamalogi lizokwakhiwa ngokuzenzakalelayo ku-CloudWatch. Ngokuzenzakalela, amalogi agcinwa kuyo unomphela; ngincoma ukuthi uguqule isikhathi sokugcinwa sisuke ku-Never Expire siye esikhathini esidingekayo. Lokhu kwenziwa kumaqembu e-CloudWatch Log, udinga ukuchofoza isikhathi samanje bese ukhetha esisha.

Ukwakha i-Scalable API kuma-AWS Spot Instances

I-ECS Cluster kanye ne-ECS Capacity Provider

Iya esigabeni se-ECS → Cluster ukuze udale iqoqo. Sikhetha i-EC2 Linux + Networking njengesifanekiso.

Igama le-Cluster - okubaluleke kakhulu, senza lapha igama elifanayo njengoba lishiwo kupharamitha Yesifanekiso Sokuqalisa ECS_CLUSTER, kithi - DemoApiClusterProd. Hlola ibhokisi elithi Dala iqoqo elingenalutho. Ongakukhetha, ungavumela i-Container Insights ukuze ubuke amamethrikhi wezinsizakalo ku-CloudWatch. Uma wenze konke ngendlela efanele, khona-ke esigabeni se-ECS Instances uzobona imishini eyakhiwe eqenjini le-Auto Scaling.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Iya kuthebhu Abahlinzeki Bamandla bese udala entsha. Ake ngikukhumbuze ukuthi kuyadingeka ukulawula ukudalwa nokuvalwa kwemishini ngokuya ngenani lemisebenzi ye-ECS esebenzayo. Kubalulekile ukuqaphela ukuthi umhlinzeki angabelwa iqembu elilodwa kuphela.

Iqembu lokukala okuzenzakalelayo — khetha iqembu elakhiwe ngaphambilini.

Ukukala okuphethwe — yivule ukuze umhlinzeki akwazi ukukala isevisi.

Umthamo oqondiwe % - mangakanani amaphesenti emishini alayishwe imisebenzi esiyidingayo. Uma ucacise u-100%, khona-ke yonke imishini izohlala imatasa ngemisebenzi esebenzayo. Uma ucacisa u-50%, ingxenye yezimoto izohlale ikhululekile. Kulokhu, uma kukhona ukweqa okubukhali emthwalweni, amatekisi amasha azofika ngokushesha ezimotweni zamahhala, ngaphandle kokulinda ukuthi kusetshenziswe izimo.

Ukuvikelwa kokunqanyulwa okuphethwe - vumela, le parameter ivumela umhlinzeki ukuthi asuse ukuvikelwa kwezimo ekususweni. Lokhu kwenzeka uma ingekho imisebenzi esebenzayo emshinini futhi kuvumela umthamo wethagethi%.

Isevisi ye-ECS nokusethwa kokukala

Isinyathelo sokugcina :) Ukuze udale isevisi, udinga ukuya kuqoqo elidalwe ngaphambilini kuthebhu ethi Amasevisi.

Qalisa uhlobo - udinga ukuchofoza okuthi Shintshela kuhlelo lomhlinzeki bese ukhetha abahlinzeki abadalwe ngaphambilini.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Incazelo Yomsebenzi — khetha iTask Definition edalwe ngaphambilini kanye nokubuyekezwa kwayo.

Igama lesevisi — ukugwema ukudideka, sibonisa njalo okufanayo ne-Task Definition.

Uhlobo lwesevisi - Njalo Replica.

Inani lemisebenzi — inombolo oyifunayo yemisebenzi esebenzayo kusevisi. Le parameter ilawulwa ukukala, kodwa kusamelwe icaciswe.

Iphesenti elincane elinempilo и Amaphesenti aphezulu - nquma ukuziphatha kwemisebenzi ngesikhathi sokuthunyelwa. Amanani azenzakalelayo angu-100 no-200, okubonisa ukuthi ngesikhathi sokuthunyelwa inani lemisebenzi lizokhula izikhathi eziningana, bese libuyela kunani elifiswayo. Uma unomsebenzi ongu-1 osebenzayo, min=0, kanye no-max=100, khona-ke phakathi nokuthunyelwa kuzobulawa, futhi ngemva kwalokho kuzophakanyiswa omusha, okungukuthi, kuyoba isikhathi sokuphumula. Uma umsebenzi ongu-1 uyasebenza, min=50, max=150, khona-ke ukuthunyelwa ngeke kwenzeke nhlobo, ngoba umsebenzi ongu-1 awukwazi ukuhlukaniswa ngesigamu noma ukhuliswe isikhathi esisodwa nengxenye.

Uhlobo lokuphakelwa - shiya isibuyekezo se-Rolling.

Izifanekiso Zokubeka - Imithetho yokubeka imisebenzi emishinini. Okuzenzakalelayo yi-AZ Balanced Spread - lokhu kusho ukuthi umsebenzi omusha ngamunye uzobekwa endaweni entsha kuze kube yilapho imishini ekuzo zonke izindawo ezitholakalayo iphakama. Ngokuvamile senza i-BinPack - CPU kanye ne-Spread - AZ; ngale nqubomgomo, imisebenzi ibekwa ngokuminyene ngangokunokwenzeka emshinini owodwa nge-CPU ngayinye. Uma kudingekile ukudala umshini omusha, udalwa endaweni entsha yokutholakala.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Layisha uhlobo lwesilinganisi — khetha Isilinganisi Sokulayishwa Kwesicelo.

Indima yesevisi ye-IAM - khetha ecsServiceRole.

Layisha igama lebhalansi — khetha isilinganisi esidalwe ngaphambilini.

Isikhathi somusa sokuhlola impilo — ima kancane ngaphambi kokuhlola impilo ngemva kokwethula umsebenzi omusha, ngokuvamile siwubeka kumasekhondi angu-60.

Isitsha sokulayisha ibhalansi — entweni yegama leqembu eliqondiwe, khetha iqembu elakhiwe ngaphambilini, futhi yonke into izogcwaliswa ngokuzenzakalelayo.

Ukwakha i-Scalable API kuma-AWS Spot Instances

Service Auto Scaling - amapharamitha wokukala wesevisi. Khetha okuthi Lungiselela Ukukala Okuzenzakalelayo Kwesevisi ukuze ulungise isibalo esifiswa yisevisi yakho. Sibeka inani elincane kanye nenani eliphezulu lemisebenzi lapho sikala.

Indima ye-IAM Yesevisi Yokukala Ngokuzenzakalelayo - khetha AWSServiceRoleForApplicationAutoScaling_ECSService.

Izinqubomgomo zokukala umsebenzi ezizenzakalelayo - imithetho yokukala. Kunezinhlobo ezi-2:

  1. Ukulandelela okuhlosiwe - amamethrikhi okuhloswe ngawo ukulandelela (ukusetshenziswa kwe-CPU/RAM noma inombolo yezicelo zomsebenzi ngamunye). Isibonelo, sifuna isilinganiso sokulayishwa kwephrosesa sibe ngu-85%, uma siba phezulu, imisebenzi emisha izokwengezwa size sifinyelele inani eliqondiwe. Uma umthwalo uphansi, khona-ke imisebenzi izosuswa, ngokuphambene nalokho, ngaphandle uma ukuvikelwa ekunciphiseni kunikwe amandla (Khubaza ukungena ngaphakathi).
  2. Isinyathelo sokukala - ukusabela esigamekweni esingenasizathu. Lapha ungakwazi ukulungisa ukusabela kunoma yimuphi umcimbi (i-CloudWatch Alarm), uma kwenzeka, ungakwazi ukwengeza noma ukususa inombolo ecacisiwe yemisebenzi, noma ucacise inani eliqondile lemisebenzi.

Isevisi ingaba nemithetho eminingana yokukala, lokhu kungaba usizo, into esemqoka ukuqinisekisa ukuthi azingqubuzani.

isiphetho

Uma ulandele imiyalelo futhi usebenzise isithombe se-Docker esifanayo, isevisi yakho kufanele ibuyisele ikhasi elifana naleli.

Ukwakha i-Scalable API kuma-AWS Spot Instances

  1. Senze isifanekiso ngokusho ukuthi yonke imishini ekusevisi yethulwa ngayo. Siphinde safunda ukuthi ungayibuyekeza kanjani imishini uma isifanekiso sishintsha.
  2. Silungiselele ukucutshungulwa kwesignali yokumisa isenzakalo, ngakho-ke phakathi neminithi ngemva kokuyithola, yonke imisebenzi esebenzayo iyasuswa emshinini, ngakho-ke akukho lutho olulahlekile noma oluphazamisekayo.
  3. Siphakamise isilinganisi ukuze sisabalalise umthwalo ngokulinganayo kuyo yonke imishini.
  4. Sidale isevisi esebenza endaweni eyodwa, eyehlisa izindleko zomshini izikhathi ezingaba ngu-3.
  5. Silungiselele ukukala okuzenzakalelayo kuzo zombili izinkomba ukuze sisingathe imisebenzi eyengeziwe ngaphandle kokuhlangabezana nezindleko zesikhathi sokuphumula.
  6. Sisebenzisa i-Capacity Provider ukuze uhlelo lokusebenza luphathe ingqalasizinda (imishini) hhayi ngenye indlela.
  7. Sibahle.

Uma unokunyuka okubikezelwayo komthwalo, isibonelo ukhangisa kumkhankaso omkhulu we-imeyili, ungasetha ukukala ngokuthi uhlelo lwezikhathi.

Ungakwazi futhi ukukala ngokusekelwe kudatha evela ezingxenyeni ezahlukene zesistimu yakho. Isibonelo, sinokusebenza ukuthumela okunikezwayo kokuphromotha ngakunye abasebenzisi bohlelo lokusebenza leselula. Kwesinye isikhathi umkhankaso uthunyelwa kubantu abangu-1M+. Ngemuva kokusabalalisa okunjalo, kuhlale kunokwanda okukhulu kwezicelo ku-API, njengoba abasebenzisi abaningi bengena kuhlelo lokusebenza ngesikhathi esifanayo. Ngakho-ke uma sibona ukuthi kukhona izinkomba ezijwayelekile kakhulu kulayini wokuthumela izaziso zokukhangisa, singaqalisa ngokushesha imishini eminingana eyengeziwe nemisebenzi ukuze ilungele ukulayishwa.

Ngizojabula uma ungitshela kumazwana amacala athakazelisayo okusebenzisa izimo ze-spot kanye ne-ECS noma okuthile mayelana nokukala.

Maduze kuzoba nama-athikili amayelana nendlela esicubungula ngayo izinkulungwane zezehlakalo zokuhlaziya ngomzuzwana esitakini esingenaseva kakhulu (ngemali) nokuthi ukuthunyelwa kwezinsizakalo kusebenza kanjani kusetshenziswa i-GitLab CI ne-Terraform Cloud.

Bhalisa kithi, kuzoba mnandi!

Abasebenzisi ababhalisiwe kuphela abangabamba iqhaza kuhlolovo. Ngena ngemvume, wamukelekile.

Ingabe usebenzisa izehlakalo zendawo ekukhiqizeni?

  • 22,2%Yebo6

  • 66,7%No18

  • 11,1%Ngafunda ngazo esihlokweni futhi ngihlela ukuzisebenzisa3

Bangu-27 abasebenzisi abavotile. Abasebenzisi abangu-5 bagobile.

Source: www.habr.com

Engeza amazwana