Kuvaka Scalable API paAWS Spot Instances

Mhoroi mose! Zita rangu ndiKirill, ndiri CTO kuAdapty. Zvizhinji zvezvivakwa zvedu zviri paAWS, uye nhasi ini ndichataura nezvekuti takadzikisa sei server mari ne3 nguva nekushandisa nzvimbo dzenzvimbo munzvimbo yekugadzira, pamwe nemagadzirirwo ekugadzira yavo auto-scaling. Chekutanga pachave nekutarisisa mashandiro ayo, uyezve mirairo ine udzame yekutanga.

Chii chinonzi Spot Instances?

Spot zviitiko maseva evamwe vashandisi veAWS avo parizvino vasina basa, uye vanovatengesa nemutengo mukuru (Amazon inonyora kusvika 90%, mune yedu ruzivo ~ 3x, inosiyana zvichienderana nedunhu, AZ uye muenzaniso mhando). Misiyano yavo huru kubva kune yakajairwa ndeyekuti vanogona kudzima chero nguva. Naizvozvo, kwenguva yakareba takatenda kuti zvaive zvakajairika kuvashandisa kune mhandara, kana mabasa ekuverenga chimwe chinhu, nemhedzisiro yakachengetedzwa paS3 kana mudhatabhesi, asi kwete yekutengesa. Kune wechitatu-bato mhinduro dzinokutendera iwe kushandisa mavara pakugadzira, asi kune akawanda madondoro enyaya yedu, saka isu hatina kuzviita. Maitiro anotsanangurwa muchinyorwa anoshanda zvachose mukati meiyo yakajairwa AWS mashandiro, pasina mamwe magwaro, korona, nezvimwe.

Pazasi pane mashoma mascreenshots anoratidza mutengo wenhoroondo yezviitiko zvemavara.

m5.guru mudunhu reeu-west-1 (Ireland). Mutengo wakanyanya kugadzikana kwemwedzi mitatu, parizvino uri kuchengetedza 3x.

Kuvaka Scalable API paAWS Spot Instances

m5.hombe munharaunda yeus-east-1 (N. Virginia). Mutengo unogara uchichinja pamusoro pemwedzi mitatu, parizvino uchichengetedza kubva pa3x kuenda ku2.3x zvichienderana nenzvimbo yekuwanikwa.

Kuvaka Scalable API paAWS Spot Instances

t3.small in us-east-1 region (N. Virginia). Mutengo wakagadzikana kwemwedzi mitatu, parizvino chengetedza 3x.

Kuvaka Scalable API paAWS Spot Instances

Basa rekuvaka

Iyo yekutanga dhizaini yebasa yatichataura nezvayo mune ino chinyorwa inoratidzwa mumufananidzo uri pazasi.

Kuvaka Scalable API paAWS Spot Instances

Application Load Balancer β†’ EC2 Target Group β†’ Elastic Container Service

Iyo Application Load Balancer (ALB) inoshandiswa semuyero, iyo inotumira zvikumbiro kuEC2 Target Group (TG). TG ine basa rekuvhura madoko pane zviitiko zveALBs uye kuvabatanidza kune zviteshi zveElastic Container Service (ECS) midziyo. ECS ndeye analogue yeKubernetes muAWS, iyo inobata Docker midziyo.

Imwe muenzaniso inogona kuve nemidziyo inomhanya yakawanda ine madoko akafanana, saka isu hatigone kuamisa akanyatso. ECS inoudza TG kuti iri kutangisa basa idzva (muKubernetes terminology iyi inonzi pod), inotarisa zviteshi zvemahara pane iyo muenzaniso uye inopa imwe yacho kune yakatangwa basa. TG zvakare inogara ichitarisa kuti muenzaniso uye API iri kushanda pairi uchishandisa cheki yehutano, uye kana ikaona chero matambudziko, inomira kutumira zvikumbiro ipapo.

EC2 Auto Scalling Groups + ECS Capacity Providers

Dhiagiramu iri pamusoro hairatidze iyo EC2 Auto Scaling Mapoka (ASG) sevhisi. Kubva pazita iwe unogona kunzwisisa kuti ine basa rekuyera zviitiko. Nekudaro, kusvika nguva pfupi yadarika, AWS yanga isina yakavakirwa-mukati kugona kubata huwandu hwemichina inomhanya kubva kuECS. ECS yakaita kuti zvikwanise kuyera huwandu hwemabasa, semuenzaniso, neCPU kushandiswa, RAM kana nhamba yezvikumbiro. Asi kana mabasa aitora ese emahara zviitiko, saka michina mitsva haina kugadzirwa otomatiki.

Izvi zvachinja nekuuya kweECS Capacity Providers (ECS CP). Iye zvino sevhisi yega yega muECS inogona kubatanidzwa neASG, uye kana mabasa asingakodzeri pazviitiko zvinomhanya, ipapo mitsva ichasimudzwa (asi mukati meiyo yakamiswa ASG miganhu). Izvi zvinoshandawo kune zvakapesana, kana ECS CP ikaona zviitiko zvisina basa pasina mabasa, zvino ichapa iyo ASG kuraira kuti vavhare. ECS CP ine kugona kudoma yainotarirwa muzana yemuenzaniso mutoro, kuitira kuti imwe nhamba yemachina igare yakasununguka kukurumidza kuyera mabasa; Ini ndichataura nezve izvi zvishoma gare gare.

EC2 Launch Matemplate

Yekupedzisira sevhisi yandichataura nezvayo ndisati ndaenda mune zvakadzama nezve kugadzira iyi masisitimu ndeye EC2 Launch Matemplate. Iyo inokutendera iwe kuti ugadzire template zvinoenderana neinozotanga michina yese, kuti usazodzokorora izvi kubva pakutanga nguva dzese. Pano iwe unogona kusarudza mhando yemuchina wekutanga, boka rekuchengetedza, disk image uye mamwe akawanda ma parameter. Iwe unogona zvakare kutsanangura mushandisi data iyo inozoiswa kune ese akatangwa zviitiko. Iwe unogona kumhanyisa zvinyorwa mu data yemushandisi, semuenzaniso, unogona kugadzirisa zviri mukati mefaira ECS agent zvigadziriso.

Imwe yeanonyanya kukosha maparameter echinyorwa ichi ndeye ECS_ENABLE_SPOT_INSTANCE_DRAINING=chokwadi. Kana iyi parameter ikagoneswa, ipapo kana ECS yangogamuchira chiratidzo chekuti nzvimbo yenzvimbo iri kutorwa, inotamisa mabasa ese anoshanda pairi kune iyo Draining mamiriro. Hapana mabasa matsva achapihwa chiitiko ichi; kana paine mabasa anoda kuendeswa kwairi izvozvi, anozokanzurwa. Zvikumbiro zvemubalancer zvinomirawo kuuya. Chiziviso chekudzimwa kwemuenzaniso kunouya maminetsi maviri pamberi pechiitiko chaicho. Naizvozvo, kana sevhisi yako isingaite mabasa akareba kupfuura maminetsi maviri uye isingachengetedze chero chinhu kudhisiki, saka unogona kushandisa nzvimbo dzenzvimbo pasina kurasikirwa nedata.

Nezve dhisiki - AWS munguva pfupi yapfuura vakadaro Zvinokwanisika kushandisa Elastic File System (EFS) pamwe chete neECS; nechirongwa ichi, kunyange dhisiki haisi chipingamupinyi, asi isu hatina kuedza izvi, sezvo musimboti hatidi dhisiki kuchengetedza nyika. Nekutadza, mushure mekugamuchira SIGINT (yakatumirwa kana basa raendeswa kune iyo Draining mamiriro), ese ekuita mabasa anozomiswa mushure memasekondi makumi matatu, kunyangwe anga asati apedza; unogona kushandura panguva ino uchishandisa parameter. ECS_CONTAINER_STOP_TIMEOUT. Chinhu chikuru hachisi chekuchiisa kweanopfuura maminetsi maviri emashini emagetsi.

Kugadzira sevhisi

Ngatienderere mberi nekugadzira iyo yakatsanangurwa sevhisi. Mukuita izvi, ini ndichawedzera kutsanangura akati wandei anobatsira mapoinzi asina kutaurwa pamusoro apa. Kazhinji, iyi inhanho-ne-nhanho kuraira, asi ini handisi kuzofunga zvimwe zvakakosha kana, pane zvinopesana, zviitiko chaizvo. Zvese zviito zvinoitwa muAWS yekuona koni, asi inogona kudhindwa pachirongwa uchishandisa CloudFormation kana Terraform. PaAdapty tinoshandisa Terraform.

EC2 Launch template

Iyi sevhisi inogadzira gadziriso yemichina ichashandiswa. Matemplate anotungamirwa muEC2 -> Zviitiko -> Launch templates chikamu.

Amazon muchina mufananidzo (AMI) - tsanangura mufananidzo wedhisiki uyo ese mamisheni achatangwa. Kune ECS, muzviitiko zvakawanda zvakakosha kushandisa iyo yakagadziridzwa mufananidzo kubva kuAmazon. Inogara ichivandudzwa uye ine zvese zvinodiwa kuti ECS ishande. Kuti uzive ID yemufananidzo iripo, enda kupeji Amazon ECS-yakagadziridzwa AMIs, sarudza nharaunda yauri kushandisa uye kopira iyo AMI ID yayo. Semuenzaniso, kune iyo us-kumabvazuva-1 dunhu, iyo ID iripo panguva yekunyora ndeye ami-00c7c1cf5bdc913ed. ID iyi inofanirwa kuiswa muChiratidzo chetsika yakakosha chinhu.

Muenzaniso mhando - ratidza rudzi rwemuenzaniso. Sarudza iyo inonyatsoenderana nebasa rako.

Makiyi maviri (login) - tsanangura chitupa chaunogona kubatana nacho kune muenzaniso kuburikidza neSSH, kana zvichidikanwa.

Zvirongwa zveNetwork - tsanangura iyo network parameter. Networking chikuva kazhinji panofanirwa kuve neVirtual Private Cloud (VPC). Mapoka ekuchengetedza - mapoka ekuchengetedza ezviitiko zvako. Sezvo isu tichizoshandisa muyero pamberi pezviitiko, ini ndinokurudzira kutsanangura boka pano rinobvumira kubatanidza kunouya chete kubva kune yakaenzana. Ndokunge, iwe uchave nemapoka maviri ekuchengetedza, imwe yea balancer, iyo inobvumira kupinda mukati kubva chero kupi pane ports 2 (http) uye 80 (https), uye yechipiri yemashini, iyo inobvumira inopinda inobatana pane chero zviteshi kubva kune balancer boka. . Kunobuda kunze kwekubatana mumapoka maviri kunofanirwa kuvhurwa uchishandisa TCP protocol kune ese madoko kumakero ese. Iwe unogona kudzikamisa madoko nemakero ezvekubuda kwekubatanidza, asi ipapo iwe unofanirwa kugara uchitarisa kuti hausi kuedza kuwana chimwe chinhu pachiteshi chakavharwa.

Kuchengeta (mavhoriyamu) - tsanangura dhisiki paramita yemuchina. Saizi yedhisiki haigone kuve yakaderera pane inotsanangurwa muAMI; yeECS Yakagadziridzwa ndeye 30 GiB.

Advanced details - tsanangura mamwe ma parameter.

Kutenga sarudzo - kunyangwe isu tichida kutenga mapoinzi zviitiko. Tinoda, asi isu hatitarise bhokisi iri pano; ticharigadzirisa muAuto Scaling Group, kune dzimwe sarudzo ipapo.

IAM muenzaniso profile - ratidza basa richatangwa nyaya dzacho. Kuti zviitiko zvifambe muECS, vanoda mvumo, iyo inowanzowanikwa mubasa ecsInstanceRole. Mune zvimwe zviitiko zvinogona kugadzirwa, kana zvisiri, saka pano manual pamusoro pekuita izvi. Mushure mekusikwa, tinozviratidzira mu template.
Tevere kune akawanda ma paramita, zvakanyanya iwe unogona kusiya default tsika kwese kwese, asi imwe neimwe yadzo ine tsananguro yakajeka. Ini ndinogara ndichigonesa iyo EBS-yakagadziridzwa muenzaniso uye T2/T3 Unlimited sarudzo kana ikashandiswa kuputika zviitiko.

User data - ratidza data yemushandisi. Tichagadzirisa faira /etc/ecs/ecs.config, iyo ine ECS agent configuration.
Muenzaniso wekuti data yemushandisi ingataridzika sei:

#!/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 - iyo parameter inoratidza kuti muenzaniso ndeye cluster ine zita rakapihwa, kureva kuti, cluster iyi ichakwanisa kuisa mabasa ayo pane iyi server. Hatisati tagadzira cluster, asi tichashandisa zita iri pakurigadzira.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true - iyo parameter inotsanangura kuti kana chiratidzo chagamuchirwa kudzima chiitiko chenzvimbo, mabasa ese ari pairi anofanirwa kuendeswa kune iyo Draining mamiriro.

ECS_CONTAINER_STOP_TIMEOUT=1m - iyo parameter inotsanangura kuti mushure mekugamuchira chiratidzo cheSIGINT, mabasa ese ane miniti imwe asati aurayiwa.

ECS_ENGINE_AUTH_TYPE=docker - iyo parameter inoratidza kuti iyo Docker chirongwa chinoshandiswa senzira yekubvumidza

ECS_ENGINE_AUTH_DATA=... - yekubatanidza ma paramita kune yakavanzika mudziyo registry, uko yako Docker mifananidzo inochengeterwa. Kana iri yeruzhinji, saka haufanire kutsanangura chero chinhu.

Nezvinangwa zvechinyorwa chino, ini ndichashandisa mufananidzo weruzhinji kubva kuDocker Hub, saka tsanangura maparamendi ECS_ENGINE_AUTH_TYPE ΠΈ ECS_ENGINE_AUTH_DATA hazvina basa.

Kunaka kuziva: Inokurudzirwa kugadzirisa AMI nguva dzose, nokuti shanduro itsva dzinovandudza shanduro dzeDocker, Linux, ECS mumiririri, nezvimwewo. Kuti usakanganwa pamusoro peizvi, unogona. gadzira zviziviso nezve kuburitswa kweshanduro itsva. Iwe unogona kugashira zviziviso neemail uye kugadzirisa pamaoko, kana iwe unogona kunyora Lambda basa rinozogadzira otomatiki vhezheni itsva yeLaunch template ine yakagadziridzwa AMI.

EC2 Auto Kuyera Boka

Auto Scaling Group ine basa rekutanga uye kuyera zviitiko. Mapoka anotungamirwa muEC2 -> Auto Scaling -> Auto Scaling Groups chikamu.

Tanga template - sarudza template yakagadzirwa munhanho yapfuura. Isu tinosiya iyo default vhezheni.

Kutenga sarudzo uye mienzaniso mhando - tsanangura mhando dzezviitiko zve cluster. Teerera kuvhura template inoshandisa iyo muenzaniso mhando kubva kuLaunch template. Sanganisa sarudzo dzekutenga uye mhando dzemhando dzinokutendera iwe kugadzirisa zviri nyore gadziriso mhando. Tichaishandisa.

Optional On-Demand base - nhamba yenguva dzose, isiri-spot zviitiko iyo inogara ichishanda.

On-Demand percentage pamusoro pebhesi - muzana reshiyo yenguva dzose uye nzvimbo, 50-50 ichagovaniswa zvakaenzana, 20-80 pachiitiko chimwe nechimwe 4 mavara achasimudzwa. Nechinangwa chemuenzaniso uyu, ini ndicharatidza 50-50, asi chaizvoizvo isu tinowanzoita 20-80, mune dzimwe nguva 0-100.

Mhando dzemienzaniso - pano iwe unogona kutsanangura mamwe marudzi ezviitiko izvo zvichashandiswa musumbu. Hatina kumboishandisa nekuti handisi kunyatsonzwisisa zvinoreva nyaya yacho. Zvichida izvi zvinokonzerwa nemiganhu pamhando dzakasiyana dzezviitiko, asi dzinogona kuwedzerwa nyore nyore kuburikidza nekutsigirwa. Kana iwe uchiziva iyo application, ndichafara kuiverenga mune zvakataurwa)

Kuvaka Scalable API paAWS Spot Instances

Network - zvigadziriso zvetiweki, sarudza VPC uye ma subnets emuchina, kazhinji iwe unofanirwa kusarudza ese anowanikwa subnets.

Kutakura zviyero - zvigadziriso zvekuenzanisa, asi isu tichaita izvi zvakasiyana, hapana chatinobata pano. Hutano kuongororwa zvichagadziriswawo gare gare.

Saizi yeboka - tinoratidza miganhu pahuwandu hwemichina musumbu uye nhamba inodiwa yemashini pakutanga. Huwandu hwemakina ari musumbu haumbofa hwakaita hushoma pane hudiki hwakataurwa uye hunopfuura huwandu hwepamusoro, kunyangwe kuyera kuchifanira kuitika zvinoenderana nemametrics.

Scaling policy -kuyera ma paramita, asi isu tichayera zvichibva pane inomhanya ECS mabasa, saka isu tichagadzirisa kuyera gare gare.

Muenzaniso chiyero-mukudzivirira - Kudzivirirwa kwezviitiko kubva pakudzimwa kana uchidzika. Isu tinoigonesa kuitira kuti ASG isabvise muchina une mabasa ekumhanya. ECS Capacity Provider ichadzima kuchengetedza kune zviitiko zvisina mabasa.

Wedzera mabhegi - unogona kutsanangura ma tag ezviitiko (zveizvi, iyo Tag mamiriro matsva ebhokisi anofanira kutariswa). Ini ndinokurudzira kutsanangura iyo Zita tag, ipapo zviitiko zvese zvinotangwa mukati meboka zvichange zvine zita rimwe chete, uye zviri nyore kuzviona mukoni.

Kuvaka Scalable API paAWS Spot Instances

Mushure mekugadzira boka racho, vhura uye enda kune Advanced configurations chikamu.Sei zvisiri zvese zvingasarudzwa zvinoonekwa mukoni padanho rekugadzira.

Kugumisa mitemo - mitemo inocherechedzwa pakudzima zviitiko. Vanoiswa muhurongwa. Tinowanzo shandisa iwo ari mumufananidzo uri pasi apa. Chekutanga, zviitiko zvine yekare Launch Template zvinodzimwa (semuenzaniso, kana tikagadziridza iyo AMI, takagadzira vhezheni nyowani, asi zviitiko zvese zvakakwanisa kuchinjira kwairi). Zvadaro zviitiko zviri pedyo neawa inotevera yekubhadhara inosarudzwa. Uye ipapo iwo ekare anosarudzwa zvichienderana nezuva rekutanga.

Kuvaka Scalable API paAWS Spot Instances

Kunaka kuziva: kugadzirisa michina yese musumbu, iri nyore kushandisa Muenzaniso Refresh. Kana iwe ukabatanidza izvi neLambda basa kubva padanho rakapfuura, iwe uchave uine yakazara otomatiki muenzaniso yekuvandudza system. Usati wagadzirisa michina yese, unofanirwa kudzima muenzaniso-mukudzivirira kune ese zviitiko muboka. Kwete kumisikidzwa muboka, asi dziviriro kubva kumichina pachayo, izvi zvinoitwa paInstance management tab.

Application Load Balancer uye EC2 Target Group

Iyo balancer inogadzirwa muchikamu EC2 β†’ Kuyera Kuyera β†’ Rodha MaBalancers. Isu tichashandisa Chikumbiro Load Balancer; kuenzanisa kwemhando dzakasiyana dzezviyero zvinogona kuverengerwa pa peji rebasa.

Vateereri - zvine musoro kugadzira zviteshi 80 uye 443 uye kutungamira kubva pa80 kuenda ku443 uchishandisa balancer mitemo gare gare.

Kuwanika Nzvimbo - kazhinji, isu tinosarudza nzvimbo dzekusvikika kune wese munhu.

Gadzirisa Settings Chengetedzo - Chitupa cheSSL chemubalancer chinoratidzwa pano, sarudzo yakanyanya nyore ndeye gadzira chitupa mu ACM. Pamusoro pekusiyana Security Policy inogona kuverengwa mukati zvinyorwa, unogona kuisiya yakasarudzwa neyakagadzika ELBSecurityPolicy-2016-08. Mushure mekugadzira iyo balancer, iwe unozviona DNS zita, iyo yaunoda kugadzirisa iyo CNAME yedunhu rako. Semuenzaniso, aya ndiwo maitiro azvinoita muCloudflare.

Kuvaka Scalable API paAWS Spot Instances

Security Boka - gadzira kana sarudza boka rekuchengetedza reiyo balancer, ndakanyora zvimwe pamusoro peizvi kumusoro muEC2 Launch Template β†’ Network marongero chikamu.

Target group - Isu tinogadzira boka rinoita basa rekufambisa zvikumbiro kubva kune mubharari kuenda kumakina uye nekutarisa kuwanikwa kwavo kuitira kuti tivatsive kana paine dambudziko. Target mhando inofanira kuva Muenzaniso, Protocol ΠΈ poti chero, kana iwe ukashandisa HTTPS yekukurukurirana pakati peiyo balancer uye zviitiko, saka iwe unofanirwa kurodha chitupa kwavari. Nezvinangwa zvemuenzaniso uyu, isu hatiite izvi, isu tichangosiya port 80.

Hutano kuongororwa - zvimiro zvekutarisa kushanda kwesevhisi. Musevhisi chaiyo, ichi chinofanira kunge chiri chikumbiro chakasiyana chinoisa zvikamu zvakakosha zvebhizinesi logic; nezvinangwa zvemuenzaniso uyu, ini ndichasiya zvigadziriso. Zvadaro, unogona kusarudza nguva yekukumbira, nguva yekupera, kubudirira kwekodhi, nezvimwewo Mumuenzaniso wedu, ticharatidza Kubudirira makodhi 200-399, nokuti mufananidzo weDocker uchashandiswa unodzorera 304 code.

Kuvaka Scalable API paAWS Spot Instances

Register Targets - pano motokari dzeboka dzinosarudzwa, asi kwatiri izvi zvichaitwa neECS, saka tinongodarika danho iri.

Kunaka kuziva: pachiyero chekuenzanisa iwe unogona kugonesa matanda anozochengetwa muS3 mune imwe format. Kubva ipapo vanogona kutumirwa kune wechitatu-bato masevhisi eanalytics, kana iwe unogona kuita SQL mivhunzo zvakananga pane data muS3 ne. kushandisa Athena. Zviri nyore uye zvinoshanda pasina imwe kodhi yekuwedzera. Iniwo ndinokurudzira kumisa kubviswa kwematanda kubva kuS3 bucket mushure menguva yakatarwa.

ECS Task Tsanangudzo

Mumatanho apfuura, isu takagadzira zvese zvine chekuita nehupfumi hwebasa; ikozvino tinoenderera mberi nekutsanangura midziyo yatichavhura. Izvi zvinoitwa muECS β†’ Task Definitions chikamu.

Launch mhando kugarisana - sarudza EC2.

Basa rekuita IAM basa - sarudza ecsTaskExecutionRole. Kuishandisa, matanda akanyorwa, kupinda kune zvakavanzika zvakasiyana kunopihwa, nezvimwe.

Muchikamu cheContainer Definitions, tinya Wedzera Container.

mufananidzo - chinongedzo kumufananidzo nekodhi yeprojekiti; semuenzaniso ini ndichashandisa mufananidzo weruzhinji kubva kuDocker Hub bitnami/node-muenzaniso:0.0.1.

Memory Limits - miganhu yekuyeuka yemudziyo. Yakaoma Limit -muganho wakaoma, kana mudziyo ukapfuura kukosha kwakatarwa, docker kuuraya murairo uchaitwa, mudziyo uchafa nekukasira. Soft Limit - muganho wakapfava, mudziyo unogona kuenda kupfuura kukosha kwakatarwa, asi iyi parameter inozotariswa kana uchiisa mabasa pamichina. Semuyenzaniso, kana muchina une 4 GiB ye RAM, uye muganho wakapfava wemudziyo uri 2048 MiB, ipapo muchina uyu unogona kuve neanopfuura maviri ekuita mabasa nemudziyo uyu. Muchokwadi, 2 GiB ye RAM iri pasi zvishoma pane 4 MiB, izvi zvinogona kutariswa paECS Instances tab musumbu. Muganho wakapfava haugone kuva mukuru pane yakaoma muganhu. Izvo zvakakosha kuti unzwisise kuti kana paine akati wandei midziyo mune rimwe basa, ipapo miganhu yavo inopfupikiswa.

Port mappings - mukati Host port Isu tinoratidza 0, izvi zvinoreva kuti chiteshi chinopihwa zvine simba uye chichatariswa neTarget Group. Container Port - Chiteshi parinomhanyirwa neapplication yako chinowanzo kutsanangurwa mukuraira kwekuuraya, kana kupihwa mune yako application kodhi, Dockerfile, nezvimwe. Kune yedu muenzaniso tichashandisa 3000 nekuti yakanyorwa mukati dockerfile mufananidzo uri kushandiswa.

Kuongorora hutano - Muchengetedzo wehutano hwekutarisa ma paramita, kuti usavhiringike neiyo yakagadzirirwa muTarget Group.

mhepo mvura nenzvimbo - zvigadziriso zvakatipoteredza. CPU zvikamu - zvakafanana neMemory miganhu, chete nezve processor. Imwe neimwe processor core ndeye 1024 mayunitsi, saka kana sevha iine mbiri-musimboti processor uye mudziyo wakaiswa ku512, ipapo 4 mabasa ane mudziyo uyu anogona kutangwa pane imwe server. CPU mayuniti anogara achienderana nehuwandu hwemacores; hapagone kuve neashoma mashoma iwo, sezvazvakaita nendangariro.

murayiro - murairo wekutanga sevhisi mukati memudziyo, ese ma paramita anotsanangurwa akaparadzaniswa nemakoma. Izvi zvinogona kuva guncorn, npm, nezvimwe. Kana zvisina kutaurwa, kukosha kweiyo CMD kuraira kubva kuDockerfile ichashandiswa. Tinoratidza npm,start.

Environment variables - midziyo yemamiriro ekunze akasiyana. Izvi zvinogona kunge zviri nyore zvinyorwa data kana zvakavanzika zvakasiyana kubva Secrets Manager kana Parameter Store.

Kuchengeta uye Kutema - pano tichagadzira matanda muCloudWatch Logs (sevhisi yematanda kubva kuAWS). Kuti uite izvi, ingogonesa iyo Auto-gadzirisa CloudWatch Logs cheki bhokisi. Mushure mekugadzira Task Definition, boka rematanda richagadzirwa otomatiki muCloudWatch. Nekumisikidza, matanda anochengetwa mairi nekusingaperi; Ini ndinokurudzira kushandura iyo yekuchengeta nguva kubva paKusapera Kupera kusvika panguva inodiwa. Izvi zvinoitwa mu CloudWatch Log mapoka, unofanirwa kudzvanya pane iripo nguva uye sarudza imwe itsva.

Kuvaka Scalable API paAWS Spot Instances

ECS Cluster uye ECS Capacity Provider

Enda kune ECS β†’ Clusters chikamu kugadzira sumbu. Isu tinosarudza EC2 Linux + Networking se template.

Cluster name - zvakanyanya kukosha, isu tinogadzira pano zita rimwechete sezvakatsanangurwa muLaunch Template parameter ECS_CLUSTER, kwatiri - DemoApiClusterProd. Tarisa iyo Gadzira isina chinhu cluster checkbox. Sarudzo, unogona kugonesa Container Insights kuona metrics emasevhisi muCloudWatch. Kana iwe wakaita zvese nemazvo, ipapo muchikamu cheECS Instances uchaona michina yakagadzirwa muboka reAuto Scaling.

Kuvaka Scalable API paAWS Spot Instances

Enda kune tab Vanopa Vanokwanisa uye gadzira imwe itsva. Rega ndikuyeuchidze kuti zvinodikanwa kudzora kusikwa uye kuvharika kwemakina zvichienderana nehuwandu hwekuita ECS mabasa. Zvakakosha kuziva kuti mupi anogona kugoverwa kune rimwe boka.

Auto Scaling boka - sarudza boka rakambogadzirwa.

Managed scaling - igonese kuitira kuti mupi akwanise kuyera sevhisi.

Kukwanisa % β€” ndeipi muzana yemichina yakaremerwa nemabasa yatinoda. Kana iwe ukatsanangura 100%, ipapo michina yese inogara yakabatikana nekumhanya mabasa. Kana ukatsanangura 50%, ipapo hafu yemotokari ichagara yakasununguka. Muchiitiko ichi, kana paine kusvetuka kwakapinza mumutoro, matekisi matsva anokurumidza kusvika kumotokari dzemahara, pasina kumirira kuti zviitiko zvitumirwe.

Managed kugumisa kudzivirira -gonesa, iyi parameter inobvumira mupi kubvisa dziviriro yezviitiko kubva mukudzima. Izvi zvinoitika kana pasina mabasa anoshanda pamushini uye anobvumira Target kugona%.

ECS Sevhisi uye kuyera kuseta

Danho rekupedzisira :) Kuti ugadzire sevhisi, unofanirwa kuenda kune yakambogadzirwa cluster paSevhisi tab.

Kutanga mhando - iwe unofanirwa kudzvanya paChinja kune simba rekupa zano uye sarudza ivo vakambogadzirwa vanopa.

Kuvaka Scalable API paAWS Spot Instances

Task Definition - sarudza iyo yakambogadzirwa Task Definition uye kudzokorora kwayo.

Zita rebasa - kudzivirira kuvhiringidzika, isu tinogara tichiratidza zvakafanana neTask Definition.

Rudzi rwebasa - nguva dzose Replica.

Nhamba yemabasa - nhamba inodiwa yemabasa anoshanda mubasa. Iyi parameter inodzorwa nekuyera, asi inofanira kuramba ichitsanangurwa.

Minimum hutano muzana muzana ΠΈ Maximum percent - sarudza maitiro emabasa panguva yekutumirwa. Iwo akasarudzika maitiro ndeye 100 uye 200, zvichiratidza kuti panguva yekuendesa huwandu hwemabasa huchawedzera kakawanda, uyezve kudzokera kune yaunoda kukosha. Kana iwe uine 1 basa rinomhanya, min = 0, uye max = 100, ipapo panguva yekuendesa ichaurayiwa, uye mushure meizvozvo itsva ichasimudzwa, ndiko kuti, ichava nguva yekuderera. Kana 1 basa riri kushanda, min = 50, max = 150, ipapo kutumirwa hakuzoitiki zvachose, nokuti 1 basa haigoni kugoverwa nehafu kana kuwedzera nehafu nehafu nguva.

Deployment type - siya Rolling update.

Placement Templates - mitemo yekuisa mabasa pamichina. Iyo yakasarudzika ndeye AZ Balanced Spread - izvi zvinoreva kuti basa idzva rega rega richaiswa pachiitiko chitsva kudzamara michina iri munzvimbo dzese dziripo yasimuka. Isu tinowanzo kuita BinPack - CPU uye Spread - AZ; neiyi mutemo, mabasa anoiswa zvakanyanya sezvinobvira pamushini mumwe paCPU. Kana zvichidikanwa kugadzira muchina mutsva, unogadzirwa munzvimbo itsva yekuwanikwa.

Kuvaka Scalable API paAWS Spot Instances

Rodha balancer mhando β€” sarudza Application Load Balancer.

Basa IAM basa - sarudza ecsServiceRole.

Rodha balancer zita - sarudza chiyero chakasikwa kare.

Hutano cheki nguva yenyasha - kumbomira usati waita cheki yehutano mushure mekuita basa idzva, isu tinowanzo kumisa kumasekonzi makumi matanhatu.

Container yekuisa chiyero - muChirongwa chezita reboka, sarudza boka rakambogadzirwa, uye zvese zvinozadzwa otomatiki.

Kuvaka Scalable API paAWS Spot Instances

Service Auto Scaling - service scaling parameters. Sarudza Configure Service Auto Scaling kuti ugadzirise kuverenga kwaunoda sevhisi. Isu tinoisa hushoma uye huwandu hwehuwandu hwemabasa pakuyera.

IAM basa reSevhisi Auto Scaling - sarudza AWSServiceRoleForApplicationAutoScaling_ECSService.

Automatic task scaling policy - mitemo yekuyera. Kune mhando mbiri:

  1. Target tracking -yekuteedzera tarisiro metrics (CPU/RAM kushandiswa kana nhamba yezvikumbiro zvebasa rega rega). Semuenzaniso, isu tinoda kuti avhareji processor mutoro ive 85%, kana yave yakakwirira, mabasa matsva anozowedzerwa kudzamara yasvika painotariswa kukosha. Kana mutoro wakadzikira, ipapo mabasa anozobviswa, pane zvinopesana, kunze kwekunge dziviriro kubva pakudzika pasi yakagoneswa (Dzima chikero-mukati).
  2. Step scaling - kuita kune chimwe chiitiko chisingatarisirwi. Pano iwe unogona kugadzirisa maitiro kune chero chiitiko (CloudWatch Alarm), kana ikaitika, unogona kuwedzera kana kubvisa nhamba yakatarwa yemabasa, kana kutsanangura nhamba chaiyo yemabasa.

Basa rinogona kunge riine mitemo yakawanda yekuyera, izvi zvinogona kubatsira, chinhu chikuru ndechekuona kuti hazvipesani nemumwe.

mhedziso

Kana iwe ukatevera mirairo uye ukashandisa iwo akafanana Docker mufananidzo, sevhisi yako inofanirwa kudzosera peji seizvi.

Kuvaka Scalable API paAWS Spot Instances

  1. Isu takagadzira template zvichienderana nekuti machina ese ari musevhisi anotangwa. Isu takadzidzawo maitiro ekugadzirisa michina kana template yachinja.
  2. Isu takagadzirisa kugadziridzwa kweiyo nzvimbo yekumisa chiratidzo, saka mukati meminiti mushure mekuigamuchira, ese anomhanya mabasa anobviswa pamushini, saka hapana chinorasika kana kukanganiswa.
  3. Takasimudza chibalancer kuti tigovere mutoro wacho zvakaenzana pamichina.
  4. Isu takagadzira sevhisi inomhanya panzvimbo, iyo inoderedza mutengo wemuchina nekatatu.
  5. Isu takagadzirisa autoscaling mumativi ese maviri kubata basa rakawedzera pasina kuunza mitengo yekudzikisa.
  6. Isu tinoshandisa Capacity Provider kuitira kuti application igadzirise zvivakwa (michina) uye kwete imwe nzira kutenderedza.
  7. Isu tiri vakuru.

Kana iwe uine spikes dzinofungidzirwa mukutakura, semuenzaniso uri kushambadzira mune yakakura email mushandirapamwe, unogona kuseta kuyera ne. timetable.

Iwe unogona zvakare kuyera zvichienderana nedata kubva munzvimbo dzakasiyana dzehurongwa hwako. Somuenzaniso, tine kushanda kutumira ega ega ekushambadzira zvinopihwa vashandisi ve mobile application. Dzimwe nguva mushandirapamwe unotumirwa kune 1M+ vanhu. Mushure mekugovera kwakadaro, pane nguva dzose kuwedzera kukuru kwezvikumbiro kune API, sezvo vazhinji vashandisi vanopinda mukushandiswa panguva imwe chete. Saka kana tikaona kuti kune zvakatonyanya zviratidziro zvakajairwa mumutsara wekutumira zviziviso zvekusimudzira, isu tinokwanisa kubva tangotanga akati wandei mamwe machina uye mabasa kuti agadzirire mutoro.

Ini ndichafara kana iwe ukandiudza mune zvakataurwa nyaya dzinonakidza dzekushandisa nzvimbo dzenzvimbo uye ECS kana chimwe chinhu nezve kuyera.

Munguva pfupi iri kutevera kuchave nezvinyorwa nezve magadzirisiro atinoita zviuru zvezviitiko zvekuongorora pasekondi pane yakawanda isina server stack (nemari) uye kuti kuendesa masevhisi kunoshanda sei uchishandisa GitLab CI uye Terraform Cloud.

Bhalisa kwatiri, zvichave zvinonakidza!

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Iwe unoshandisa nzvimbo zviitiko mukugadzira?

  • 22,2%Hongu6

  • 66,7%No18

  • 11,1%Ndakadzidza nezvavo kubva kuchinyorwa uye kuronga kuvashandisa3

27 vashandisi vakavhota. 5 vashandisi vakaramba.

Source: www.habr.com

Voeg