Ukwakha i-Scalable API kwi-AWS Spot Instances

Molweni nonke! Igama lam ndinguKirill, ndiyi-CTO e-Adapty. Uninzi lwezakhiwo zethu kwi-AWS, kwaye namhlanje ndiza kuthetha malunga nendlela esinciphise ngayo iindleko ze-server ngamaxesha e-3 ngokusebenzisa iimeko zebala kwindawo yokuvelisa, kunye nendlela yokuseta i-auto-scaling. Okokuqala kuya kubakho isishwankathelo sendlela esebenza ngayo, kunye nemiyalelo eneenkcukacha zokuqalisa.

Yintoni iSpot Instances?

Ibala iimeko ziiseva zabanye abasebenzisi be-AWS abangasebenziyo ngoku, kwaye bazithengisa ngesaphulelo esikhulu (i-Amazon ibhala ukuya kuthi ga kwi-90%, kumava ethu ~ 3x, iyahluka ngokuxhomekeka kummandla, i-AZ kunye nohlobo lomzekelo). Ukwahlukana kwabo okuphambili kwizinto eziqhelekileyo kukuba banokucima nangaliphi na ixesha. Ngoko ke, ixesha elide sasikholelwa ukuba kuqhelekile ukuzisebenzisa kwiindawo ezinyulu, okanye kwimisebenzi yokubala into ethile, kunye neziphumo eziphakathi ezigcinwe kwi-S3 okanye kwi-database, kodwa kungekhona ukuthengisa. Kukho izisombululo zomntu wesithathu ezikuvumela ukuba usebenzise amabala kwimveliso, kodwa zininzi iintonga zetyala lethu, ngoko ke asizange siziphumeze. Indlela echazwe kwinqaku isebenza ngokupheleleyo ngaphakathi kwe-AWS eqhelekileyo yokusebenza, ngaphandle kwezikripthi ezongezelelweyo, izithsaba, njl.

Ngezantsi kukho izikrini ezimbalwa ezibonisa imbali yexabiso leemeko zeendawo.

m5.inkulu kwingingqi ye-eu-west-1 (Ireland). Ixabiso lizinzile kakhulu kwiinyanga ezi-3, ngoku ligcina i-2.9x.

Ukwakha i-Scalable API kwi-AWS Spot Instances

m5.inkulu kwingingqi us-empuma-1 (N. Virginia). Ixabiso lihlala litshintsha kwiinyanga ezi-3, okwangoku ligcina ukusuka kwi-2.3x ukuya kwi-2.8x ngokuxhomekeke kwindawo yokufumaneka.

Ukwakha i-Scalable API kwi-AWS Spot Instances

t3.encinci kwingingqi yase-us-empuma-1 (N. Virginia). Ixabiso lizinzile kwiinyanga ezi-3, ngoku ligcina i-3.4x.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Uyilo lwenkonzo

Uyilo olusisiseko lwenkonzo esiza kuthetha ngalo kweli nqaku luboniswe kumzobo ongezantsi.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Isilinganisi soMlayisho weSicelo → EC2 IQela ekuJoliswe kulo → Inkonzo yeSikhongozeli se-Elastic

I-Application Load Balancer (ALB) isetyenziswa njenge-balancer, ethumela izicelo kwi-EC2 Target Group (TG). I-TG inoxanduva lokuvula amazibuko ee-ALB kwiimeko kwaye iwadibanise ne-Elastic Container Service (ECS) izibuko zeekhonteyina. I-ECS yi-analogue ye-Kubernetes kwi-AWS, elawula izitya ze-Docker.

Umzekelo omnye unokuba nezikhongozeli ezininzi ezisebenzayo ezinamazibuko afanayo, ngoko ke asinakukwazi ukuseta ngokuzinzileyo. I-ECS ixelela i-TG ukuba isungula umsebenzi omtsha (kwisigama se-Kubernetes oku kubizwa ngokuba yi-pod), ihlola izibuko zamahhala kumzekelo kwaye yabela enye yazo kumsebenzi osungulweyo. I-TG iphinda ihlole rhoqo ukuba umzekelo kunye ne-API isebenza kuyo ngokusebenzisa ukukhangela impilo, kwaye ukuba ibona naziphi na iingxaki, iyayeka ukuthumela izicelo apho.

EC2 Auto Scaling Groups + ECS ababoneleli ngeCapacity

Lo mzobo ungentla awubonisi inkonzo ye-EC2 Auto Scalling Groups (ASG). Ukususela kwigama unokuqonda ukuba lixanduva lokulinganisa iimeko. Nangona kunjalo, kude kube kutshanje, i-AWS yayingenalo isakhono esakhelwe ngaphakathi sokulawula inani loomatshini abasebenzayo abavela kwi-ECS. I-ECS yenza ukuba kube lula ukulinganisa inani lemisebenzi, umzekelo, ngokusetyenziswa kwe-CPU, i-RAM okanye inani lezicelo. Kodwa ukuba imisebenzi ithathe zonke iimeko zasimahla, ke oomatshini abatsha abenziwanga ngokuzenzekelayo.

Oku kutshintshile ngokufika kwe-ECS Capacity Providers (ECS CP). Ngoku inkonzo nganye kwi-ECS inokudityaniswa ne-ASG, kwaye ukuba imisebenzi ayihambelani neemeko eziqhubayo, kuya kuphakanyiswa amatsha (kodwa ngaphakathi kwemida ye-ASG esekiweyo). Oku kusebenza kwakhona kwicala elichaseneyo, ukuba i-ECS CP ibona iimeko ezingenamsebenzi ngaphandle kwemisebenzi, ngoko iya kunika umyalelo we-ASG ukuba uvale. I-ECS CP inamandla okuchaza ipesenti ekujoliswe kuyo yomzekelo womthwalo, ukwenzela ukuba inani elithile lomatshini lihlala likhululekile kwimisebenzi yokulinganisa ngokukhawuleza; Ndiza kuthetha ngale nto kamva kancinane.

EC2 Launch Templates

Inkonzo yokugqibela endiza kuthetha ngayo phambi kokuba ndingene kwiinkcukacha malunga nokudala esi siseko yi-EC2 Launch Templates. Ikuvumela ukuba wenze ithemplate malunga nokuba bonke oomatshini baya kuqala, ukuze ungaphindi oku ukususela ekuqaleni rhoqo. Apha ungakhetha uhlobo lomatshini oza kuwuqala, iqela lokhuseleko, umfanekiso wedisk kunye nezinye iiparameters ezininzi. Ungaphinda ucacise idatha yomsebenzisi eya kulayishwa kuzo zonke iimeko eziqalisiwe. Ungaqhuba izikripthi kwidatha yomsebenzisi, umzekelo, ungahlela imixholo yefayile Ulungelelwaniso lwe-arhente ye-ECS.

Enye yezona parameters zoqwalaselo zeli nqaku ECS_ENABLE_SPOT_INSTANCE_DRAINING=yinyani. Ukuba le parameter yenziwe yasebenza, ngoko nje ukuba i-ECS ifumene umqondiso wokuba indawo ethile iyasuswa, idlulisela yonke imisebenzi esebenza kuyo kwi-Draining status. Akukho misebenzi mitsha iya kwabelwa kulo mzekelo; ukuba kukho imisebenzi efuna ukukhutshelwa kuyo ngoku, iya kurhoxiswa. Izicelo ezivela kumlinganisi nazo ziyayeka ukuza. Isaziso sokucinywa komzekelo siza kwimizuzu emi-2 phambi kwesiganeko sokwenyani. Ngoko ke, ukuba inkonzo yakho ayenzi imisebenzi engaphezulu kwemizuzu emi-2 kwaye ayigcini nantoni na kwidiski, ngoko ungasebenzisa iimeko zeendawo ngaphandle kokulahlekelwa idatha.

Ngokuphathelele kwidiski - AWS kutshanje ndiyenzile Kuyenzeka ukusebenzisa iNkqubo yeFayile ye-Elastic (EFS) kunye ne-ECS; kunye nesi sicwangciso, nokuba idiski ayingomqobo, kodwa asizange sizame oku, kuba ngokomgaqo asiyidingi idiski ukugcina urhulumente. Ngokungagqibekanga, emva kokufumana i SIGINT (ithunyelwe xa umsebenzi ukhutshelwa kwisimo sokuKhusela), yonke imisebenzi esebenzayo iya kunqunyanyiswa emva kwemizuzwana engama-30, nokuba abakagqibi, ungatshintsha eli xesha usebenzisa iparameter. ECS_CONTAINER_STOP_TIMEOUT. Into ephambili ayiyikuyibeka ngaphezu kwemizuzu emi-2 koomatshini bebala.

Ukudala inkonzo

Masiqhubele phambili ekudaleni inkonzo echazwe. Kwinkqubo, ndiza kuchaza ngakumbi amanqaku aluncedo angakhange akhankanywe ngasentla. Ngokubanzi, lo myalelo wesinyathelo ngesinyathelo, kodwa andiyi kuqwalasela ezinye ezisisiseko okanye, ngokuchaseneyo, iimeko ezicacileyo kakhulu. Zonke izenzo zenziwa kwi-AWS ebonakalayo ye-console, kodwa inokuphinda iveliswe ngenkqubo kusetyenziswa CloudFormation okanye iTerraform. Kwi-Adapty sisebenzisa iTerraform.

EC2 Launch template

Le nkonzo idala uqwalaselo koomatshini abaza kusetyenziswa. Iitemplates zilawulwa kwi-EC2 -> Iimeko -> Qalisa icandelo leetemplates.

Umfanekiso womatshini weAmazon (AMI) — cacisa umfanekiso wedisk apho yonke imizekelo iyakusungulwa. Kwi-ECS, kwiimeko ezininzi kuyafaneleka ukusebenzisa umfanekiso ophuculweyo ovela kwiAmazon. Ihlaziywa rhoqo kwaye iqulethe yonke into efunekayo ukuze i-ECS isebenze. Ukufumana isazisi somfanekiso wangoku, yiya kwiphepha IAmazon ECS-optimized AMIs, khetha ummandla owusebenzisayo kwaye ukope i-ID ye-AMI kuyo. Umzekelo, kwingingqi ye-us-empuma-1, i-ID yangoku ngexesha lokubhala ami-00c7c1cf5bdc913ed. Le ID kufuneka ifakwe kwi-Chaza into yexabiso elilungiselelweyo.

Uhlobo lomzekelo — bonisa uhlobo lomzekelo. Khetha eyona iwufaneleyo umsebenzi wakho.

Izibini ezingundoqo (ngena) — khankanya isatifikethi onokuqhagamshela ngaso kumzekelo nge-SSH, ukuba kuyimfuneko.

Useto lwenethiwekhi — chaza iiparamitha zenethiwekhi. Iqonga lothungelwano kwiimeko ezininzi kufuneka kubekho iLifu laBucala elibonakalayo (VPC). Amaqela okhuseleko - amaqela okhuseleko kwiimeko zakho. Ekubeni siya kusebenzisa i-balancer phambi kweemeko, ndincoma ukucacisa iqela apha elivumela uxhulumaniso olungenayo kuphela kwi-balancer. Oko kukuthi, uya kuba 2 amaqela okhuseleko, elinye kuba balancer, evumela uqhagamshelo lwangaphakathi ukusuka naphi na kwizibuko 80 (http) kunye 443 (https), kwaye okwesibini koomatshini, evumela udibaniso olungenayo nakweliphi na izibuko kwiqela le-balancer. . Uqhagamshelo oluphumayo kumaqela omabini kufuneka luvulwe kusetyenziswa iprotocol ye-TCP kuwo onke amazibuko kuzo zonke iidilesi. Unganciphisa amazibuko kunye needilesi zoqhagamshelo oluphumayo, kodwa ke kufuneka ubeke iliso rhoqo ukuba awuzami ukufikelela into ethile kwizibuko elivaliweyo.

Ugcino (imiqulu) — cacisa iiparamitha zedisk koomatshini. Ubungakanani bedisk abunakuba ngaphantsi kunoko bukhankanyiweyo kwi-AMI, ye-ECS Eyongeziweyo yi-30 GiB.

Iinkcukacha eziphezulu — chaza iiparamitha ezongezelelweyo.

Inketho yokuthenga - nokuba sifuna ukuthenga iimeko ezicacileyo. Siyafuna, kodwa asizukuyijonga le bhokisi apha; siza kuyiqwalasela kwiQela lokuKhalisa ngokuSebenzayo, kukho iindlela ezininzi onokukhetha kuzo apho.

Umzekelo weprofayile ye-IAM — bonisa indima ekuza kusungulwa ngayo le mizekelo. Ukuze iimeko ziqhube kwi-ECS, zifuna iimvume, ezihlala zifumaneka kwindima ecsInstanceRole. Kwezinye iimeko kunokudalwa, ukuba akunjalo, ngoko apha ncwadana ngendlela yokwenza oku. Emva kokudala, siyayibonisa kwitemplate.
Okulandelayo kukho iiparamitha ezininzi, ngokusisiseko unokushiya amaxabiso angagqibekanga kuyo yonke indawo, kodwa nganye inenkcazo ecacileyo. Ndihlala ndivumela umzekelo we-EBS-optimized kunye ne-T2/T3 iinketho ezingenamkhawulo ukuba zisetyenzisiwe kuqhuma iimeko.

Idatha yomsebenzisi — bonisa idatha yomsebenzisi. Siza kuyihlela ifayile /etc/ecs/ecs.config, equlathe uqwalaselo lommeli we-ECS.
Umzekelo wendlela idatha yomsebenzisi enokubonakala ngayo:

#!/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 — iparameter ibonisa ukuba umzekelo ngoweqela elinegama elinikiweyo, oko kukuthi, eli qela liya kuba nakho ukubeka imisebenzi yalo kulo mncedisi. Asidalanga qela okwangoku, kodwa siya kusebenzisa eli gama xa silidala.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true — ipharamitha ixela ukuba xa kufunyenwe isiginali yokucima indawo ethile, yonke imisebenzi ekuyo kufuneka idluliselwe kwimo yokuKhusela.

ECS_CONTAINER_STOP_TIMEOUT=1m - iparameter ichaza ukuba emva kokufumana uphawu lwe-SIGINT, yonke imisebenzi inomzuzu o-1 ngaphambi kokubulawa.

ECS_ENGINE_AUTH_TYPE=docker - iparameter ibonisa ukuba i-Docker scheme isetyenziswe njengendlela yogunyaziso

ECS_ENGINE_AUTH_DATA=... Iiparamitha zoqhagamshelo kwindawo yobhaliso yabucala, apho igcinwa khona imifanekiso yakho yeDocker. Ukuba isesidlangalaleni, akukho mfuneko yokuba uchaze nantoni na.

Ngenjongo yeli nqaku, ndiya kusebenzisa umfanekiso kawonkewonke ovela kwi-Docker Hub, ngoko khankanya iiparamitha ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA akukho sidingo.

Kulungile ukwazi: Kucetyiswa ukuba uhlaziye i-AMI rhoqo, kuba iinguqulelo ezintsha zihlaziya iinguqulelo ze-Docker, i-Linux, i-ejenti ye-ECS, njl. Ukuze ungalibali ngale nto, unako cwangcisa izaziso malunga nokukhutshwa kweenguqulelo ezintsha. Ungafumana izaziso nge-imeyile kwaye uhlaziywe ngesandla, okanye ungabhala umsebenzi weLambda oya kudala ngokuzenzekelayo inguqulelo entsha yeSifanekiso sokuQalisa nge-AMI ehlaziyiweyo.

Iqela le-EC2 lokukala ngokuzenzekela

Iqela le-Auto Scaling linoxanduva lokusungula kunye nokulinganisa iimeko. Amaqela alawulwa kwi-EC2 -> Ukukala ngokuzenzekela -> icandelo lamaQela okuCala ngokuzenzekela.

Qalisa ithempleyithi — khetha itemplate eyenziwe kwinyathelo langaphambili. Sishiya uguqulelo olungagqibekanga.

Iinketho zokuthenga kunye neentlobo zemizekelo — chaza iindidi zeemeko zeqela. Namathela ekuqaliseni ithempleyithi isebenzisa uhlobo lomzekelo olusuka kwiSifanekiso sokuQalisa. Dibanisa ukhetho lokuthenga kunye neentlobo zemizekelo ikuvumela ukuba uqwalasele ngokuguquguqukayo iindidi zemizekelo. Siza kuyisebenzisa.

Isiseko esiziKhethekileyo esikwimfuno - inani leemeko eziqhelekileyo, ezingekho ndawo eziya kuhlala zisebenza.

Ipesenti ekwimfuno ngaphezulu kwesiseko - ipesenti yomlinganiselo weziganeko eziqhelekileyo kunye namabala, ama-50-50 aya kwabiwa ngokulinganayo, ama-20-80 kwimeko yesiqhelo nganye amabala ama-4 aya kuphakanyiswa. Ngenjongo yalo mzekelo, ndiza kubonisa i-50-50, kodwa ngokwenene sihlala sisenza 20-80, kwezinye iimeko 0-100.

Iindidi zeziganeko — apha ungakhankanya iindidi ezongezelelweyo zemizekelo ezakusetyenziswa kwiqela. Asizange silisebenzise kuba andiyiqondi ncam intsingiselo yebali. Mhlawumbi oku kubangelwa imida kwiintlobo ezithile zeemeko, kodwa zinokunyuswa ngokulula ngenkxaso. Ukuba uyasazi isicelo, ndingakuvuyela ukuyifunda kwizimvo)

Ukwakha i-Scalable API kwi-AWS Spot Instances

womnatha — useto lwenethiwekhi, khetha i-VPC kunye nee-subnets zoomatshini, kwiimeko ezininzi kufuneka ukhethe zonke ii-subnets ezikhoyo.

Ukulayisha ukulayisha -Useto lwe-balancer, kodwa siya kuyenza ngokwahlukeneyo, asizukuchukumisa nantoni na apha. Ukuhlolwa kwempilo izakuqwalaselwa kwakhona kamva.

Ubungakanani beqela - sibonisa imida kwinani loomatshini kwiqela kunye nenani elifunekayo lomatshini ekuqaleni. Inani loomatshini abakwiqela alinakuze libe ngaphantsi kobuncinane obuchaziweyo nangaphezulu kunobuninzi, nokuba ukukala kufuneka kwenzeke ngokweemethrikhi.

Imigaqo-nkqubo yokukala - Ukulinganisa iiparamitha, kodwa siya kukala ngokusekwe kwimisebenzi esebenzayo ye-ECS, ke siya kumisela ukulinganisa kamva.

Imeko yokhuseleko lwesikali - ukukhuselwa kweemeko ekucinyweni xa uhla. Siyenza ukuba i-ASG ingacimi umatshini onemisebenzi esebenzayo. I-ECS Capacity Provider iya kukhubaza ukhuseleko kwiimeko ezingenayo imisebenzi.

Yongeza iithegi — ungakhankanya iithegi zemizekelo (ukwenzela oku, i Tag iimeko ezintsha kufuneka zikhangelwe). Ndincoma ukukhankanya i-Tag yeGama, emva koko yonke imizekelo eqaliswe ngaphakathi kweqela iya kuba negama elifanayo, kwaye kulungele ukujonga kwi-console.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Emva kokudala iqela, livule kwaye uye kwiNqanaba loLungiselelo oluPhezulu.Kutheni zonke iinketho zingabonakali kwi-console kwinqanaba lokudala.

Imigaqo-nkqubo yokuphelisa - imithetho ethathelwa ingqalelo xa kucinywa iimeko. Zisetyenziswa ngokulandelelana kwazo. Ngokuqhelekileyo sisebenzisa ezi zikumfanekiso ongezantsi. Okokuqala, imizekelo eneSifanekiso sokuQalisa esidala kakhulu siyacinywa (umzekelo, ukuba sihlaziye i-AMI, senze inguqulelo entsha, kodwa zonke iimeko zikwazile ukutshintshela kuyo). Emva koko iimeko ezikufutshane kwiyure elandelayo yokuhlawula zikhethiwe. Kwaye ke ezona zindala zikhethwa ngokusekelwe kumhla wokuqaliswa.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Kulungile ukwazi: ukuhlaziya bonke oomatshini kwiqela, elilungele ukusetyenziswa Ukuhlaziya umzekelo. Ukuba udibanisa oku kunye nomsebenzi weLambda ukusuka kwinqanaba langaphambili, uya kuba nenkqubo yohlaziyo ezenzekelayo ezenzekelayo. Phambi kokuhlaziya bonke oomatshini, kuya kufuneka ukhubaze ukhuseleko lwesikali kuzo zonke iimeko kwiqela. Hayi uqwalaselo kwiqela, kodwa ukukhuselwa koomatshini ngokwabo, oku kwenziwa kwi-Instance management tab.

I-Application Load Balancer kunye ne-EC2 yeQela ekujoliswe kulo

Isilinganisi sidalwe kwicandelo le-EC2 → UkuHlanganisa uMlayisho → Izikali zoMlayisho. Siza kusebenzisa i-Application Load Balancer; uthelekiso lweentlobo ezahlukeneyo zabalinganisi zinokufundwa iphepha lenkonzo.

Abaphulaphuli -Kunengqiqo ukwenza izibuko ze-80 kunye ne-443 kunye nokuqondisa kwakhona ukusuka kwi-80 ukuya kwi-443 usebenzisa imithetho yokulinganisa kamva.

Iindawo eziFumanekayo — kumaxesha amaninzi, sikhetha iindawo zofikelelo kumntu wonke.

Qwalasela imimiselo yoKhuseleko - Isatifikethi se-SSL somlinganisi siboniswe apha, eyona ndlela ifanelekileyo yenza isatifikethi kwi-ACM. Malunga neeyantlukwano Umgaqo woKhuseleko inokufundwa kuyo amaxwebhu, ungayishiya ikhethiwe ngokungagqibekanga ELBSecurityPolicy-2016-08. Emva kokudala i-balancer, uya kuyibona Igama le-DNS, apho kufuneka uqwalasele i CNAME yendawo yakho. Ngokomzekelo, le yindlela ekhangeleka ngayo kwi-Cloudflare.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Iqela loKhuseleko - yenza okanye ukhethe iqela lokhuseleko lomlinganisi, ndibhale ngakumbi malunga noku ngasentla kwi-EC2 yokuQalisa iSifanekiso → icandelo leseto zeNethiwekhi.

Iqela elijoliswe kuyo - Senza iqela elinoxanduva lokuhambisa izicelo ukusuka kwi-balancer ukuya koomatshini kunye nokukhangela ukufumaneka kwabo ukuze batshintshe xa kukho iingxaki. Uhlobo ekujoliswe kulo kufuneka ibe yimeko, Protocol и izibuko nayiphi na, ukuba usebenzisa i-HTTPS yonxibelelwano phakathi komlinganisi kunye neemeko, ngoko kufuneka ulayishe isatifikethi kubo. Ngenjongo yalo mzekelo, asizukwenza oku, siya kushiya i-port 80.

Ukuhlolwa kwempilo — iiparamitha zokujonga ukusebenza kwenkonzo. Kwinkonzo yokwenyani, oku kufuneka kube sisicelo esahlukileyo esiphumeza iinxalenye ezibalulekileyo zengqiqo yeshishini, ngeenjongo zalo mzekelo, ndiya kushiya useto olungagqibekanga. Emva koko, unokukhetha ikhefu lesicelo, ixesha lokuphuma, iikhowudi zokuphumelela, njl. Kumzekelo wethu, siya kubonisa iikhowudi zempumelelo 200-399, kuba umfanekiso weDocker oza kusetyenziswa ubuyisela ikhowudi ye-304.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Bhalisa Ekujoliswe kuko - apha iimoto zeqela zikhethiweyo, kodwa kwimeko yethu le nto iya kwenziwa yi-ECS, ngoko sisuka nje siqa eli nyathelo.

Kulungile ukwazi: kwinqanaba le-balancer unokwenza iilog eziya kugcinwa kwi-S3 ngendlela ethile ifomathi. Ukusuka apho banokuthunyelwa ngaphandle kwiinkonzo zomntu wesithathu kuhlalutyo, okanye ungenza imibuzo yeSQL ngqo kwidatha kwi-S3 nge usebenzisa iAthena. Ilungile kwaye isebenza ngaphandle kwekhowudi eyongezelelweyo. Ndikwacebisa ukuseta ukukhutshwa kwezigodo kwibhakethi ye-S3 emva kwexesha elithile.

ECS Task Definition

Kumanyathelo angaphambili, senze yonke into enxulumene nesiseko senkonzo; ngoku siqhubela phambili ekuchazeni izikhongozeli esiza kuzisungula. Oku kwenziwa kwi-ECS → icandelo leeNgcaciso zoMsebenzi.

Qalisa ukuhambelana kohlobo - khetha EC2.

Ukwenziwa komsebenzi IAM indima - khetha ecsTaskExecutionRole. Ukuyisebenzisa, iilogi zibhaliwe, ukufikelela kwiinguqu eziyimfihlo zinikezelwa, njl.

Kwicandelo leeNgcaciso zeSikhongozeli, cofa Yongeza isikhongozeli.

umfanekiso - ikhonkco kumfanekiso kunye nekhowudi yeprojekthi; kulo mzekelo ndiza kusebenzisa umfanekiso kawonkewonke ovela kwiDocker Hub bitnami/node-umzekelo:0.0.1.

Imida Yenkumbulo — imida yenkumbulo kwisikhongozeli. Umda onzima - umda onzima, ukuba isitya sihamba ngaphaya kwexabiso elichaziweyo, umyalelo wokubulala i-docker uya kuphunyezwa, isitya siya kufa ngoko nangoko. Umda othambileyo - umda othambileyo, isitya sinokuhamba ngaphaya kwexabiso elichaziweyo, kodwa le parameter iya kuthathelwa ingqalelo xa ibeka imisebenzi kumatshini. Umzekelo, ukuba umatshini une-4 GiB ye-RAM, kwaye umda othambileyo wesikhongozeli yi-2048 MiB, ke lo matshini unokuba nobuninzi bemisebenzi emi-2 esebenzayo nesi sitya. Enyanisweni, i-4 GiB ye-RAM incinci ngaphantsi kwe-4096 MiB, oku kunokujongwa kwi-ECS Instances ithebhu kwiqela. Umda othambileyo awunakuba mkhulu kunomda onzima. Kubalulekile ukuqonda ukuba kukho izikhongozeli ezininzi kumsebenzi omnye, ngoko imida yazo ishwankathelwe.

Iimaphu zezibuko - ngaphakathi Izibuko lokusingatha Sibonisa u-0, oku kuthetha ukuba izibuko liya kwabelwa ngamandla kwaye liza kubekwa iliso kwiQela ekuJoliswe kulo. IPort Container -izibuko apho isicelo sakho sisebenza khona sihlala sichazwa kumyalelo wophumezo, okanye sabelwe kwikhowudi yakho yesicelo, iDockerfile, njl. Kumzekelo wethu siza kusebenzisa i-3000 kuba idweliswe kuyo dockerfile umfanekiso osetyenziswayo.

Ukujonga impilo - iiparamitha zokujonga impilo yesikhongozeli, zingabhidaniswa nale iqwalaselweyo kwiQela ekuJoliswe kulo.

okusingqongileyo -imimiselo yokusingqongileyo. iiyunithi CPU - iyafana nemida yeMemori, kuphela malunga neprosesa. Isiseko seprosesa ngasinye sineeyunithi ze-1024, ngoko ke ukuba umncedisi uneprosesa ye-double-core kwaye isitya sibekwe kwi-512, emva koko imisebenzi emi-4 kunye nesi sikhongozelo inokusungulwa kwiseva enye. Iiyunithi ze-CPU zihlala zihambelana nenani leecores; akunakubakho ncinci kancinci kubo, njengoko kunjalo ngememori.

umyalelo — umyalelo wokuqalisa inkonzo ngaphakathi kwesikhongozeli, zonke iiparameters zibalulwe zahlulwe ngeekoma. Oku kunokuba yi-guncorn, npm, njl. Ukuba ayichazwanga, ixabiso lomyalelo weCMD osuka kwiDockerfile uya kusetyenziswa. Sibonisa npm,start.

Izinto eziguquguqukayo kwimeko-bume - iinguqu zokusingqongileyo zesikhongozeli. Oku kunokuba yidatha yokubhaliweyo elula okanye iinguqu eziyimfihlo ukusuka Umphathi weeMfihlo okanye IParameter Store.

Ukugcinwa kunye nokuLoga - Apha siza kuseka ukungena kwi-CloudWatch Logs (inkonzo yeelog ezivela kwi-AWS). Ukwenza oku, vula nje i-Auto-configure CloudWatch Logs checkbox. Emva kokudala iNgcaciso yoMsebenzi, iqela leelogi liya kwenziwa ngokuzenzekelayo kwi-CloudWatch. Ngokungagqibekanga, iilog zigcinwa kuyo ngokungenasiphelo; Ndincoma ukuba utshintshe ixesha lokuGcina ukusuka kwi-Never Expire ukuya kwixesha elifunekayo. Oku kwenziwa kumaqela e-CloudWatch Log, kufuneka ucofe kwixesha langoku kwaye ukhethe entsha.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Iqela le-ECS kunye noMboneleli weZakhono ze-ECS

Yiya kwi-ECS → Cluster icandelo ukwenza iqela. Sikhetha EC2 Linux + Networking njenge template.

Igama leqela - kubaluleke kakhulu, senza apha igama elifanayo njengoko lichaziwe kwiparamitha yeSifanekiso sokuQalisa ECS_CLUSTER, kwimeko yethu - DemoApiClusterProd. Khangela i Yenza ibhokisi yokukhangela engenanto yeqela. Ngokuzithandela, unokwenza i-Container Insights ikwazi ukujonga iimetrics zeenkonzo kwi-CloudWatch. Ukuba wenze yonke into ngokuchanekileyo, ngoko kwicandelo le-ECS Instances uya kubona oomatshini abadalwe kwiqela le-Auto Scaling.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Yiya kwisithuba Ababoneleli ngeZakhono kwaye wenze entsha. Makhe ndikukhumbuze ukuba kuyafuneka ukulawula indalo kunye nokuvalwa koomatshini ngokuxhomekeke kwinani lemisebenzi ye-ECS. Kubalulekile ukuqaphela ukuba umniki-nkonzo unokwabelwa iqela elinye kuphela.

Iqela le-Auto Scaling — khetha iqela elenziwe ngaphambili.

Ukulinganisa okulawulwayo — yenza ukuba umboneleli akwazi ukukala inkonzo.

Umthamo ekujoliswe kuwo % - yiyiphi ipesenti yoomatshini abalayishwe yimisebenzi esiyifunayo. Ukuba ukhankanya i-100%, ke bonke oomatshini baya kuhlala bexakeke ngokuqhuba imisebenzi. Ukuba ukhankanya i-50%, ngoko isiqingatha seemoto siya kuhlala sikhululekile. Kule meko, ukuba kukho ukutsiba okubukhali komthwalo, iiteksi ezintsha ziya kufika ngokukhawuleza kwiimoto zamahhala, ngaphandle kokulinda iimeko eziza kuthunyelwa.

Ukhuseleko lokuphelisa olulawulwayo - vumela, le parameter ivumela umboneleli ukuba asuse ukukhuselwa kweemeko ekucinyweni. Oku kwenzeka xa kungekho misebenzi esebenzayo kumatshini kwaye ivumela umthamo weThagethi.

Inkonzo ye-ECS kunye nokusekwa kokulinganisa

Inyathelo lokugqibela :) Ukwenza inkonzo, kufuneka uye kwiqela elenziwe ngaphambili kwiiNkonzo ithebhu.

Uhlobo lokuqaliswa - kufuneka ucofe kwi Tshintshela kwisicwangciso somniki-mandla kwaye ukhethe ababoneleli abenziwe ngaphambili.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Inkcazo yomsebenzi — khetha iTask Definition eyenziwe ngaphambili kunye nohlaziyo lwayo.

Igama lenkonzo — ukunqanda ukubhideka, sihlala sibonisa into enye neTask Definition.

Uhlobo lwenkonzo - soloko Replica.

Inani lemisebenzi — inani elifunekayo lemisebenzi esebenzayo kwinkonzo. Le parameter ilawulwa ngokulinganisa, kodwa kusafuneka ixelwe.

Ubuncinci bepesenti esempilweni и Ubuninzi beepesenti - misela ukuziphatha kwemisebenzi ngexesha lokusasazwa. Amaxabiso angagqibekanga yi-100 kunye ne-200, ebonisa ukuba ngexesha lokuthunyelwa inani lemisebenzi liya kwanda amaxesha amaninzi, kwaye emva koko libuyele kwixabiso elifunekayo. Ukuba unomsebenzi om-1 osebenzayo, min=0, kunye no-max=100, ngoko ngexesha lokuthunyelwa kuya kubulawa, kwaye emva koko entsha iya kuphakanyiswa, oko kukuthi, iya kuba lixesha lokuphumla. Ukuba umsebenzi om-1 uyasebenza, min=50, max=150, ke ukusasazwa akuyi kwenzeka konke konke, kuba umsebenzi omnye awunakwahlulwa ngesiqingatha okanye unyuswe ngamaxesha anesiqingatha.

Uhlobo lokusasaza — shiya uhlaziyo oluqengqelekayo.

Izakhelo zokubekwa - imithetho yokubeka imisebenzi koomatshini. Okungagqibekanga yi-AZ Balanced Spread - oku kuthetha ukuba umsebenzi omtsha ngamnye uya kubekwa kwimeko entsha de oomatshini kuzo zonke iindawo ezifumanekayo baphakame. Sidla ngokwenza i-BinPack-CPU kunye ne-Spread-AZ; ngalo mgaqo-nkqubo, imisebenzi ibekwe ngokuxinene kangangoko kumatshini omnye nge-CPU nganye. Ukuba kuyimfuneko ukudala umatshini omtsha, udalwa kwindawo entsha yokufumaneka.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Layisha uhlobo lwesilinganisi — khetha isiLinganisi sokuLawulwa kwe-Aplikheyishini.

Inkonzo ye-IAM indima - khetha ecsServiceRole.

Layisha igama lomlinganisi — khetha isilinganisi esenziwe ngaphambili.

Ixesha lokujonga impilo - nqumama phambi kokwenza uhlolo lwempilo emva kokukhupha umsebenzi omtsha, sihlala siwubeka kwimizuzwana engama-60.

Isingxobo sokulayisha ibhalansi — Kwigama leqela ekujoliswe kulo, khetha iqela elenziwe ngaphambili, kwaye yonke into iya kuzaliswa ngokuzenzekelayo.

Ukwakha i-Scalable API kwi-AWS Spot Instances

Inkonzo Auto Ukukala - iiparamitha zokwandisa inkonzo. Khetha Qwalasela iNkonzo ngokuzenzekela Ukala ukunyenyisa ubalo olufunwayo lwenkonzo yakho. Sibeka ubuncinane kunye nenani eliphezulu lemisebenzi xa silinganisa.

Indima ye-IAM yeNkonzo ye-Auto Scaling - khetha AWSServiceRoleForApplicationAutoScaling_ECSService.

Imigaqo-nkqubo yokukala umsebenzi ozenzekelayo - imithetho yokukala. Kukho iintlobo ezi-2:

  1. Ukulandelela ekujoliswe kuko — ukulandelwa kweemetrics ekujoliswe kuzo (ukusetyenziswa kwe-CPU/RAM okanye inani lezicelo zomsebenzi ngamnye). Ngokomzekelo, sifuna umyinge womthwalo weprosesa ube ngama-85%, xa usiba phezulu, imisebenzi emitsha iya kongezwa ide ifikelele kwixabiso ekujoliswe kulo. Ukuba umthwalo usezantsi, ngoko imisebenzi iya kususwa, ngokuchaseneyo, ngaphandle kokuba ukhuselo lokukala phantsi luvuliwe (Khubaza isikali-ngaphakathi).
  2. Inyathelo lokukala - ukusabela kwisiganeko esingenasizathu. Apha ungaqwalasela ukusabela kuso nasiphi na isiganeko (i-CloudWatch Alarm), xa isenzeka, unokongeza okanye ususe inani elichaziweyo lemisebenzi, okanye uchaze inani elichanekileyo lemisebenzi.

Inkonzo inokuba nemithetho emininzi yokulinganisa, oku kunokuba luncedo, into ephambili kukuqinisekisa ukuba abangqubani omnye nomnye.

isiphelo

Ukuba ulandele imiyalelo kwaye usebenzise umfanekiso ofanayo weDocker, inkonzo yakho kufuneka ibuyise iphepha elinje.

Ukwakha i-Scalable API kwi-AWS Spot Instances

  1. Senze ithemplate ngokubhekiselele kuyo yonke imishini ekwinkonzo iqaliswe. Siphinde safunda indlela yokuhlaziya oomatshini xa ithemplate itshintsha.
  2. Siye saqwalasela ukucutshungulwa kwesignali yokumisa umzekelo webala, ngoko ke emva komzuzu emva kokuyifumana, yonke imisebenzi esebenzayo iyasuswa kumatshini, ngoko akukho nto ilahlekileyo okanye iphazamisekile.
  3. Siphakamise isilinganisi ukuze sisasaze umthwalo ngokulinganayo kubo bonke oomatshini.
  4. Senze inkonzo eqhuba kwiimeko ezithile, ezinciphisa iindleko zoomatshini malunga namaxesha angama-3.
  5. Siye saqwalasela i-autoscaling kuyo yomibini imikhombandlela yokuphatha umthwalo owongeziweyo ngaphandle kokufumana iindleko zexesha lokuphumla.
  6. Sisebenzisa iCapacity Provider ukuze isicelo silawule izibonelelo (oomatshini) hayi enye indlela.
  7. Silungile.

Ukuba unezikhonkwane eziqikelelwayo kumthwalo, umzekelo uthengisa kwiphulo elikhulu le-imeyile, unokuseta ukulinganisa ngo ithayimthebhile.

Ungaphinda ulinganise ngokusekwe kwidatha evela kwiindawo ezahlukeneyo zenkqubo yakho. Umzekelo, sinomsebenzi ukuthumela iintengiso zokuthengisa abasebenzisi besicelo esiphathwayo. Ngamanye amaxesha iphulo lithunyelwa kubantu abayi-1M +. Emva kokusasazwa okunjalo, kusoloko kukho ukwanda okukhulu kwezicelo kwi-API, kuba abasebenzisi abaninzi bangena kwisicelo ngexesha elinye. Ke ukuba sibona ukuba kukho izalathisi ezisemgangathweni ngakumbi emgceni wokuthumela izaziso zokutyhala zentengiso, sinokuqalisa kwangoko oomatshini abaliqela kunye nemisebenzi ukuba ilungele umthwalo.

Ndiya kuvuya ukuba undixelela kwiingxelo ezinomdla kwiimeko zokusebenzisa iimeko ze-spot kunye ne-ECS okanye into malunga nokulinganisa.

Kungekudala kuya kubakho amanqaku malunga nendlela esiqhuba ngayo amawaka eziganeko zohlalutyo ngesekhondi kwi-stack engena-server (ngemali) kunye nendlela ukuthunyelwa kweenkonzo kusebenza ngayo kusetyenziswa i-GitLab CI kunye ne-Terraform Cloud.

Bhalisa kuthi, kuya kuba mnandi!

Ngabasebenzisi ababhalisiweyo kuphela abanokuthatha inxaxheba kuphando. Ngena, ndiyacela.

Ngaba usebenzisa imizekelo yendawo kwimveliso?

  • 22,2%Ewe6

  • 66,7%No18

  • 11,1%Ndifunde ngazo kwinqaku kwaye ndiceba ukuzisebenzisa3

Bali-27 abasebenzisi abavotileyo. Abasebenzisi abasi-5 abakhange.

umthombo: www.habr.com

Yongeza izimvo