Ho aha Scalable API ho AWS Spot Instances

Lumelang bohle! Lebitso la ka ke Kirill, ke CTO ho Adapty. Boholo ba meralo ea rona e ho AWS, 'me kajeno ke tla bua ka hore na re fokolitse litšenyehelo tsa seva ka makhetlo a 3 joang ka ho sebelisa maemo a sebaka sebakeng sa tlhahiso, hammoho le mokhoa oa ho theha auto-scaling ea bona. Pele ho tla ba le kakaretso ea hore na e sebetsa joang, ebe ho latela litaelo tse qaqileng tsa ho qala.

Spot Instances ke eng?

Letheba mehlala ke li-server tsa basebelisi ba bang ba AWS bao hajoale ba sa sebetseng, 'me ba li rekisa ka theolelo e kholo (Amazon e ngola ho fihla ho 90%, ka boiphihlelo ba rona ~ 3x, e fapana ho latela sebaka, AZ le mofuta oa mohlala). Phapang ea bona e kholo ho tse tloaelehileng ke hore ba ka tima ka nako leha e le efe. Ka hona, ka nako e telele re ne re lumela hore ho ne ho tloaelehile ho li sebelisa bakeng sa libaka tsa moroetsana, kapa bakeng sa mesebetsi ea ho bala ntho e itseng, ka liphello tse bohareng tse bolokiloeng ho S3 kapa ho database, empa eseng bakeng sa thekiso. Ho na le litharollo tsa mokha oa boraro tse u lumellang ho sebelisa matheba tlhahisong, empa ho na le lithupa tse ngata bakeng sa nyeoe ea rona, ka hona ha rea ​​ka ra li sebelisa. Mokhoa o hlalositsoeng sehloohong o sebetsa ka ho feletseng ka har'a ts'ebetso e tloaelehileng ea AWS, ntle le mangolo a eketsehileng, meqhaka, joalo-joalo.

Ka tlase ho na le linepe tse 'maloa tse bonts'ang nalane ea litheko bakeng sa maemo a sebaka.

m5.e kholo sebakeng sa eu-west-1 (Ireland). Theko e tsitsitse haholo ka likhoeli tse 3, hajoale e boloka 2.9x.

Ho aha Scalable API ho AWS Spot Instances

m5.e kholo sebakeng sa us-bochabela-1 (N. Virginia). Theko e lula e fetoha ho feta likhoeli tse 3, hajoale e boloka ho tloha ho 2.3x ho ea ho 2.8x ho latela sebaka se fumanehang.

Ho aha Scalable API ho AWS Spot Instances

t3.e nyenyane sebakeng sa us-bochabela-1 (N. Virginia). Theko e tsitsitse likhoeli tse 3, hajoale e boloka 3.4x.

Ho aha Scalable API ho AWS Spot Instances

Mehaho ea litšebeletso

Mehaho ea motheo ea tšebeletso eo re tla bua ka eona sehloohong sena e bontšoa setšoantšong se ka tlase.

Ho aha Scalable API ho AWS Spot Instances

Sesebelisoa sa Moroalo oa Kopo → Sehlopha sa Sepheo sa EC2 → Tšebeletso ea Elastic Container

The Application Load Balancer (ALB) e sebelisoa e le balancer, e romelang likopo ho EC2 Target Group (TG). TG e na le boikarabello ba ho bula likou tsa liketsahalo tsa ALB le ho li hokela likoung tsa lijana tsa Elastic Container Service (ECS). ECS ke analogue ea Kubernetes ho AWS, e laolang lijana tsa Docker.

Mohlala o le mong o ka ba le lijana tse 'maloa tse nang le likou tse tšoanang, kahoo re ke ke ra li beha hantle. ECS e bolella TG hore e qala mosebetsi o mocha (ka mantsoe a Kubernetes sena se bitsoa pod), e hlahloba likou tse sa lefelloeng ketsahalong eo ebe e abela e 'ngoe ea tsona mosebetsing o qalileng. TG e boetse e hlahloba khafetsa hore na mohlala le API li sebetsa ho eona ka tlhahlobo ea bophelo bo botle, 'me haeba e bona mathata, e emisa ho romela likopo moo.

EC2 Auto Scalling Groups + ECS Bafani ba Bokhoni

Setšoantšo se ka holimo ha se bontše tšebeletso ea EC2 Auto Scaling Groups (ASG). Ho tsoa ka lebitso leo u ka utloisisang hore ke eona e ikarabellang bakeng sa maemo a sekhahla. Leha ho le joalo, ho fihlela morao tjena, AWS e ne e se na bokhoni bo hahiloeng ho laola palo ea mechine e sebetsang ho tloha ho ECS. ECS e entse hore ho khonehe ho lekanya palo ea mesebetsi, mohlala, ka tšebeliso ea CPU, RAM kapa palo ea likopo. Empa haeba mesebetsi e ne e le maemong ohle a mahala, metjhini e mecha ha ea ka ea etsoa ka bo eona.

Sena se fetohile ha ho fihla ECS Capacity Providers (ECS CP). Hona joale tšebeletso e 'ngoe le e' ngoe ho ECS e ka amahanngoa le ASG, 'me haeba mesebetsi e sa lumellane le maemo a sebetsang, joale tse ncha li tla tsosoa (empa ka har'a meeli ea ASG e thehiloeng). Sena se boetse se sebetsa ka lehlakoreng le leng, haeba ECS CP e bona liketsahalo tse sa sebetseng ntle le mesebetsi, joale e tla fana ka taelo ea ASG ea ho li koala. ECS CP e na le bokhoni ba ho hlakisa peresente e reriloeng ea mojaro oa mohlala, e le hore palo e itseng ea mechini e lule e lokolohile bakeng sa mesebetsi e potlakileng; Ke tla bua ka sena hamorao.

EC2 Launch Templates

Ts'ebeletso ea ho qetela eo ke tla bua ka eona pele ke bua ka botlalo mabapi le ho theha meralo ea motheo ke EC2 Launch Templates. E u lumella ho etsa template ho latela hore na mechini eohle e tla qala joang, e le hore u se ke ua pheta sena ho tloha qalong nako le nako. Mona o ka khetha mofuta oa mochini oo o lokelang ho o qala, sehlopha sa ts'ireletso, setšoantšo sa disk le li-parameter tse ling tse ngata. U ka boela ua hlakisa lintlha tsa mosebelisi tse tla romelloa liketsahalong tsohle tse qalileng. O ka tsamaisa mengolo ho data ea mosebelisi, mohlala, o ka hlophisa litaba tsa faele Litlhophiso tsa moemeli oa ECS.

E 'ngoe ea li-parameter tsa bohlokoa ka ho fetisisa tsa sengoloa sena ke ECS_ENABLE_SPOT_INSTANCE_DRAINING= nnete. Haeba parameter ena e nolofalitsoe, joale hang ha ECS e fumana letšoao la hore mohlala oa sebaka o tlosoa, o fetisetsa mesebetsi eohle e sebetsang ho eona ho boemo ba Draining. Ha ho mesebetsi e mecha e tla abeloa ketsahalong ena; haeba ho na le mesebetsi e batlang ho fetisetsoa ho eona hona joale, e tla hlakoloa. Likōpo tse tsoang ho balancer le tsona li khaotsa ho tla. Tsebiso ea ho hlakoloa ha mohlala e tla metsotso e 2 pele ho ketsahalo ea 'nete. Ka hona, haeba ts'ebeletso ea hau e sa etse mesebetsi e telele ho feta metsotso e 2 mme e sa boloke letho ho disk, o ka sebelisa maemo a sebaka ntle le ho lahleheloa ke data.

Mabapi le disk - AWS haufinyane entse Hoa khoneha ho sebelisa Elastic File System (EFS) hammoho le ECS; ka morero ona, esita le disk ha se tšitiso, empa ha rea ​​ka ra leka sena, kaha ha e le hantle ha re hloke disk ho boloka naha. Ka nako e sa lekanyetsoang, ka mor'a ho amohela SIGINT (e rometsoeng ha mosebetsi o fetisetsoa ho boemo ba Draining), mesebetsi eohle e sebetsang e tla emisoa ka mor'a metsotsoana e 30, le haeba e e-s'o phethe; u ka fetola nako ena u sebelisa parameter. ECS_CONTAINER_STOP_TIMEOUT. Ntho e ka sehloohong ke hore u se ke ua e beha bakeng sa metsotso e fetang 2 bakeng sa mechine ea letheba.

Ho theha tšebeletso

Ha re tsoeleng pele ho theha tšebeletso e hlalositsoeng. Ts'ebetsong, ke tla hlalosa lintlha tse 'maloa tsa bohlokoa tse sa boleloang ka holimo. Ka kakaretso, ena ke taelo ea mohato ka mohato, empa nke ke ka nahana ka tse ling tsa motheo kapa, ho fapana le hoo, linyeoe tse tobileng haholo. Liketso tsohle li etsoa ka AWS visual console, empa li ka hlahisoa hape ka lenaneo ho sebelisa CloudFormation kapa Terraform. Ho Adapty re sebelisa Terraform.

EC2 Launch template

Ts'ebeletso ena e theha tlhophiso ea mechini e tla sebelisoa. Lithempleite li laoloa karolong ea EC2 -> Maemo -> Karolo ea lithempleite tsa Launch.

Setšoantšo sa mochini oa Amazon (AMI) - hlakisa setšoantšo sa disk seo liketsahalo tsohle li tla qalisoa ka sona. Bakeng sa ECS, maemong a mangata ho bohlokoa ho sebelisa setšoantšo se ntlafalitsoeng se tsoang Amazon. E nchafatsoa khafetsa 'me e na le tsohle tse hlokahalang hore ECS e sebetse. Ho fumana ID ea setšoantšo sa hajoale, e ea leqepheng Amazon ECS-optimized AMIs, khetha sebaka seo u se sebelisang 'me u kopitse ID ea AMI bakeng sa eona. Mohlala, bakeng sa sebaka sa us-East-1, ID ea hajoale ka nako ea ho ngola ke ami-00c7c1cf5bdc913ed. ID ena e tlameha ho kenngoa ho Hlakisa ntho ea boleng bo ikhethileng.

Mofuta oa mohlala - bontša mofuta oa mohlala. Khetha e loketseng mosebetsi oa hau hantle.

Key pair (ho kena) - hlakisa setifikeiti seo u ka hokelang mohlala ka sona ka SSH, ha ho hlokahala.

Litlhophiso tsa marang-rang — hlakisa liparamente tsa netweke. Sethala sa marang-rang maemong a mangata ho lokela hore ho be le Virtual Private Cloud (VPC). Lihlopha tsa ts'ireletso - lihlopha tsa ts'ireletso bakeng sa maemo a hau. Kaha re tla sebelisa balancer ka pele ho maemo, ke khothaletsa ho hlakisa sehlopha mona se lumellang likhokahano tse kenang feela ho tsoa ho balancer. Ke hore, u tla ba le lihlopha tsa ts'ireletso tsa 2, e 'ngoe bakeng sa balancer, e lumellang likhokahano tse kenang ho tloha kae kapa kae ho likoung tsa 80 (http) le 443 (https), le ea bobeli bakeng sa mechine, e lumellang likhokahano tse kenang likoung leha e le life tse tsoang ho sehlopha sa balancer. . Likhokahano tse tsoang lihlopheng ka bobeli li tlameha ho buloa ho sebelisoa protocol ea TCP ho likoung tsohle ho liaterese tsohle. O ka fokotsa likou le liaterese bakeng sa likhokahano tse tsoang, empa joale o hloka ho beha leihlo kamehla hore ha o leke ho fihlella ho hong boema-kepeng bo koetsoeng.

Polokelo (bolumo) - Hlalosa li-parameter tsa disk bakeng sa mechine. Saese ea disk e ke ke ea ba tlase ho e boletsoeng ho AMI; bakeng sa ECS Optimized ke 30 GiB.

Lintlha tse tsoetseng pele - hlalosa lintlha tse eketsehileng.

Khetho ea ho reka - ho sa tsotellehe hore na re batla ho reka mehlala ea libaka. Re batla, empa re ke ke ra sheba lebokose lena mona; re tla le hlophisa ho Auto Scaling Group, ho na le likhetho tse ling moo.

Boemo ba mohlala oa IAM - bonts'a karolo eo liketsahalo li tla thakholoa ka eona. E le hore mehlala e sebetse ho ECS, ba hloka litumello, tseo hangata li fumanoang karolong eo ecsInstanceRole. Maemong a mang e ka bōptjoa, haeba ho se joalo, joale mona buka mabapi le mokhoa oa ho etsa sena. Ka mor'a pōpo, re e bontša ka template.
Ka mor'a moo ho na le liparamente tse ngata, ha e le hantle u ka tlohela litekanyetso tsa kamehla hohle, empa e 'ngoe le e' ngoe ea tsona e na le tlhaloso e hlakileng. Ke lula ke nolofalletsa mohlala oa EBS-optimized le likhetho tsa T2/T3 Unlimited haeba li sebelisoa phatloha mehlala.

Lintlha tsa basebelisi — bonts'a data ea mosebelisi. Re tla fetola faele /etc/ecs/ecs.config, e nang le tlhophiso ea moemeli oa ECS.
Mohlala oa hore na data ea mosebelisi e ka shebahala joang:

#!/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 e bontša hore mohlala ke oa sehlopha se nang le lebitso le fanoeng, ke hore, sehlopha sena se tla khona ho beha mesebetsi ea sona ho seva sena. Ha re so thehe sehlopha hajoale, empa re tla sebelisa lebitso lena ha re se theha.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true - paramethara e bolela hore ha lets'oao le amoheloa ho tima sebaka sa sebaka, mesebetsi eohle e ho eona e lokela ho fetisetsoa ho boemo ba Draining.

ECS_CONTAINER_STOP_TIMEOUT=1m - paramethara e bolela hore kamora ho amohela lets'oao la SIGINT, mesebetsi eohle e na le motsotso o le mong pele o bolaoa.

ECS_ENGINE_AUTH_TYPE=docker - paramethara e bonts'a hore leano la Docker le sebelisoa e le mochini oa tumello

ECS_ENGINE_AUTH_DATA=... - liparamente tsa khokahano ho ngoliso ea lijana tsa poraefete, moo litšoantšo tsa hau tsa Docker li bolokiloeng teng. Haeba e le ea sechaba, ha ho hlokahale hore u hlalose letho.

Molemong oa sengoloa sena, ke tla sebelisa setšoantšo sa sechaba se tsoang ho Docker Hub, ka hona, hlakisa liparamente ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA ha ho hlokahale.

Ho molemo ho tseba: Ho kgothaletswa ho ntlafatsa AMI kamehla, hobane liphetolelo tse ncha li ntlafatsa liphetolelo tsa Docker, Linux, moemeli oa ECS, joalo-joalo E le hore u se ke ua lebala ka sena, u ka theha litsebiso mabapi le ho lokolloa ha liphetolelo tse ncha. U ka fumana litemoso ka lengolo-tsoibila le ho ntlafatsa ka letsoho, kapa u ka ngola tšebetso ea Lambda e tla iketsetsa mofuta o mocha oa Launch Template ka AMI e ntlafalitsoeng.

Sehlopha sa EC2 Auto Scaling

Auto Scaling Group e ikarabella bakeng sa ho qala le ho eketsa maemo. Lihlopha li laoloa ho EC2 -> Auto Scaling -> Auto Scaling Groups karolo.

Qala template — khetha thempleite e entsoeng mohatong o fetileng. Re tlohela mofuta oa kamehla.

Likhetho tsa ho reka le mefuta ea mohlala - hlalosa mefuta ea liketsahalo bakeng sa sehlopha. Khomarela ho qala template ho sebelisa mofuta oa mohlala ho tsoa ho Template ea Launch. Kopanya likhetho tsa ho reka le mefuta ea mehlala e u lumella ho hlophisa mefuta ea mohlala habonolo. Re tla e sebelisa.

Boikhethelo On-Demand base - palo ea liketsahalo tse tloaelehileng, tse sa tsitsang tse tla lula li sebetsa.

Liphesente tse batloang ka holimo ho motheo - karo-karolelano ea liperesente tsa maemo a tloaelehileng le a matheba, 50-50 e tla ajoa ka ho lekana, 20-80 bakeng sa mohlala o mong le o mong o tloaelehileng, ho tla phahamisoa tse 4. Bakeng sa merero ea mohlala ona, ke tla bontša 50-50, empa ha e le hantle re atisa ho etsa 20-80, maemong a mang 0-100.

Mefuta ea mohlala - mona o ka hlakisa mefuta e meng ea maemo a tla sebelisoa sehlopheng. Ha ho mohla re kileng ra e sebelisa hobane ha ke utloisise hantle moelelo oa pale. Mohlomong sena se bakoa ke meeli ea mefuta e itseng ea maemo, empa e ka eketsoa habonolo ka tšehetso. Haeba u tseba ts'ebeliso, ke tla thabela ho e bala ho maikutlo)

Ho aha Scalable API ho AWS Spot Instances

Network — li-setting tsa marang-rang, khetha VPC le likhoele tse nyane bakeng sa mechini, hangata o lokela ho khetha likhoele tse nyane tse fumanehang.

Meroalo e boima - Litlhophiso tsa balancer, empa re tla etsa sena ka thoko, re ke ke ra ama letho mona. Litlhahlobo tsa bophelo bo botle le eona e tla hlophisoa hamorao.

Boholo ba sehlopha - re bonts'a meeli ea palo ea mechini ka har'a sehlopha le palo e lakatsehang ea mechini qalong. Palo ea mechini ka har'a sehlopha e ke ke ea hlola e ba ka tlase ho bonyane bo boletsoeng le ho feta boholo, leha sekala se lokela ho etsahala ho latela metrics.

Melao ea ho eketsa - litekanyetso tsa ho lekanya, empa re tla lekanya ho latela mesebetsi ea ECS e ntseng e sebetsa, kahoo re tla hlophisa sekhahla hamorao.

Tšireletso ea mohlala ka tekanyo - ts'ireletso ea liketsahalo ho tloha ho hlakoloa ha o theola. Re e nolofalletsa hore ASG e se ke ea hlakola mochini o nang le mesebetsi e sebetsang. ECS Capacity Provider e tla tima ts'ireletso bakeng sa maemo a se nang mesebetsi.

Kenya li-tag - o ka hlakisa li-tag bakeng sa maemo (bakeng sa sena, lebokose la tlhahlobo la maemo a macha le tlameha ho hlahlojoa). Ke khothaletsa ho hlakisa tag ea Lebitso, ebe maemo ohle a qalisoang ka har'a sehlopha a tla ba le mabitso a tšoanang, 'me ho bonolo ho a sheba ka har'a console.

Ho aha Scalable API ho AWS Spot Instances

Ka mor'a ho theha sehlopha, e bule 'me u ee karolong ea Advanced configurations Ke hobane'ng ha likhetho tsohle li sa bonahale ho console sethaleng sa pōpo.

Melao ea ho felisa - melao e nkoang e nkoa ha ho hlakoloa maemo. Li sebelisoa ka tatellano. Hangata re sebelisa tse setšoantšong se ka tlase. Taba ea pele, liketsahalo tse nang le template ea khale ka ho fetisisa ea Launch lia hlakoloa (mohlala, haeba re ntlafalitse AMI, re thehile mofuta o mocha, empa maemo ohle a khonne ho fetohela ho eona). Ebe ho khethoa maemo a haufi le hora e latelang ea ho kolota. 'Me joale ba khale ka ho fetisisa ba khethoa ho latela letsatsi la ho qala.

Ho aha Scalable API ho AWS Spot Instances

Ho molemo ho tseba: ho nchafatsa mechini eohle ka har'a sehlopha, e bonolo ho e sebelisa Mohlala Refresh. Haeba o kopanya sena le ts'ebetso ea Lambda ho tloha mohatong o fetileng, o tla ba le sistimi ea ntlafatso ea mohlala ka botlalo. Pele o nchafatsa mechini eohle, o tlameha ho tima ts'ireletso ea mohlala bakeng sa maemo ohle a sehlopha. Eseng tlhophiso sehlopheng, empa ts'ireletso ho mechini ka boyona, sena se etsoa ho "Instance management tab".

Application Load Balancer le EC2 Target Group

Balancer e entsoe karolong ea EC2 → Ho leka-lekanya Moroalo → Libalancer tsa Meroalo. Re tla sebelisa Application Load Balancer; papiso ea mefuta e fapaneng ea li-balancers e ka baloa ho leqephe la tšebeletso.

Bamameli - hoa utloahala ho etsa likou tsa 80 le 443 le ho tsamaisa ho tloha ho 80 ho ea ho 443 ho sebelisa melao ea balancer hamorao.

Libaka tsa Ho fumaneha — hangata, re khetha libaka tsa phihlello bakeng sa motho e mong le e mong.

Lokisa Litlhophiso tsa Tšireletso - setifikeiti sa SSL bakeng sa balancer se bontšitsoe mona, khetho e bonolo ka ho fetisisa ke etsa setifikeiti ka ACM. Mabapi le liphapang Leano la Tšireletso e ka baloa ho litokomane, u ka e siea e khethiloe ka ho sa feleng ELBSecurityPolicy-2016-08. Ka mor'a ho theha balancer, u tla e bona Lebitso la DNS, eo u e hlokang ho lokisa CNAME bakeng sa sebaka sa hau. Ka mohlala, ena ke tsela eo e shebahalang ka eona Cloudflare.

Ho aha Scalable API ho AWS Spot Instances

Sehlopha sa Tšireletso - theha kapa khetha sehlopha sa ts'ireletso bakeng sa balancer, ke ngotse ho eketsehileng ka sena ka holimo ho EC2 Launch Template → karolo ea litlhophiso tsa marang-rang.

Sehlopha se ikemiselitseng - re theha sehlopha se ikarabellang bakeng sa ho tsamaisa likopo ho tloha ho balancer ho ea ho mechini le ho lekola boteng ba tsona e le hore re ka li fetola haeba ho ka ba le mathata. Mofuta oa sepheo e tlameha ho ba Mohlala, melaoana и Port leha e le efe, haeba u sebelisa HTTPS bakeng sa puisano pakeng tsa balancer le maemo, joale u lokela ho kenya setifikeiti ho bona. Ka sepheo sa mohlala ona, re ke ke ra etsa sena, re tla tloha feela port 80.

Litlhahlobo tsa bophelo bo botle — methati ya ho lekola tshebetso ya tshebeletso. Ts'ebeletsong ea 'nete, sena e lokela ho ba kopo e arohaneng e sebelisang likarolo tsa bohlokoa tsa mohopolo oa khoebo; molemong oa mohlala ona, ke tla siea litlhophiso tsa kamehla. Ka mor'a moo, o ka khetha nako ea kopo, nako ea ho qeta nako, likhoutu tsa katleho, joalo-joalo Mohlala oa rona, re tla bontša Likhoutu tsa Katleho 200-399, hobane setšoantšo sa Docker se tla sebelisoa se khutlisetsa khoutu ea 304.

Ho aha Scalable API ho AWS Spot Instances

Ngolisa Lipheo - mona likoloi tsa sehlopha li khethiloe, empa molemong oa rona sena se tla etsoa ke ECS, kahoo re tlōla mohato ona feela.

Ho molemo ho tseba: boemong ba ho leka-lekana u ka khona ho nolofalletsa li-log tse tla bolokeha ho S3 ka mokhoa o itseng sebopeho. Ho tloha moo li ka romelloa ho lits'ebeletso tsa mokha oa boraro bakeng sa analytics, kapa u ka etsa lipotso tsa SQL ka kotloloho ho data ho S3 ka sebelisa Athena. E bonolo ebile e sebetsa ntle le khoutu efe kapa efe e eketsehileng. Ke boetse ke khothaletsa ho theha ho tlosoa ha lifate ho tloha ka nkhong ea S3 ka mor'a nako e itseng.

Tlhaloso ea Mosebetsi oa ECS

Mehatong e fetileng, re thehile ntho e 'ngoe le e' ngoe e amanang le lisebelisoa tsa litšebeletso; joale re tsoela pele ho hlalosa lijana tseo re tla li qala. Sena se etsoa karolong ea ECS → Task Definitions.

Qala ho lumellana ha mofuta - khetha EC2.

Karolo ea IAM ea ho phethahatsa mosebetsi - khetha ecsTaskExecutionRole. Ho e sebelisa, ho ngotsoe li-log, phihlello ea mefuta e fapaneng ea lekunutu e fanoa, joalo-joalo.

Karolong ea Litlhaloso tsa Container, tobetsa Eketsa nkho.

Image - sehokelo sa setšoantšo se nang le khoutu ea projeke; mohlala ona ke tla sebelisa setšoantšo sa sechaba se tsoang ho Docker Hub bitnami/node-mohlala:0.0.1.

Meeli ea Mehopolo — meedi ya memori bakeng sa setshelo. Moeli o Thata - moeli o thata, haeba setshelo se feta boleng bo boletsoeng, taelo ea docker e tla etsoa, ​​​​setshelo se tla shoa hang-hang. Moeli o Bonolo - moeli o bonolo, setshelo se ka fetela ka nģ'ane ho boleng bo boletsoeng, empa parameter ena e tla tsotelloa ha ho behoa mesebetsi ka mechine. Ka mohlala, haeba mochine o na le 4 GiB ea RAM, 'me moeli o bonolo oa setshelo ke 2048 MiB, joale mochine ona o ka ba le boholo ba mesebetsi ea 2 e sebetsang ka setshelo sena. Ha e le hantle, 4 GiB ea RAM e ka tlaase ho 4096 MiB hanyenyane, sena se ka bonoa ho ECS Instances tab ea sehlopha. Moeli o bonolo o ke ke oa ba moholo ho feta moeli o thata. Ke habohlokoa ho utloisisa hore haeba ho na le lijana tse 'maloa mosebetsing o le mong, joale meeli ea bona e akaretsoa.

Limmapa tsa koung - ka hare Boema-kepe ba baeti Re bonts'a 0, sena se bolela hore boema-kepe bo tla abeloa ka matla 'me bo tla beoa leihlo ke Sehlopha sa Maikutlo. Boema-kepe ba nkho - boema-kepe boo kopo ea hau e sebetsang ho bona hangata bo hlalosoa ka taelo ea ts'ebetso, kapa bo fuoe khoutu ea hau ea kopo, Dockerfile, jj. Bakeng sa mohlala oa rona re tla sebelisa 3000 hobane e thathamisitsoe ho dockerfile setšoantšo se sebedisoang.

Tlhahlobo ea bophelo bo botle - litekanyetso tsa tlhahlobo ea bophelo bo botle ba setshelo, e se ke ea ferekanngoa le e hlophisitsoeng ho Sehlopha sa Maikutlo.

tikoloho e khahlang - litlhophiso tsa tikoloho. Lihlopha tsa CPU - e ts'oanang le meeli ea Memori, e mabapi le processor feela. Mokotla o mong le o mong oa processor ke li-unit tsa 1024, kahoo haeba seva se na le processor ea li-dual-core mme setshelo se behiloe ho 512, joale mesebetsi e 4 e nang le setshelo sena e ka qalisoa ho seva se le seng. Li-CPU li lula li lumellana le palo ea li-cores; ho ke ke ha e-ba le bonyane ba tsona, joalo ka ha ho le joalo ka memori.

taelo - taelo ea ho qala ts'ebeletso ka har'a sets'oants'o, liparamente tsohle li hlalositsoe li arotsoe ke lifehelo. Sena e ka ba lithunya, npm, joalo-joalo. Haeba e sa hlalosoa, boleng ba taelo ea CMD bo tsoang ho Dockerfile bo tla sebelisoa. Re bontša npm,start.

Mefuta-futa ea tikoloho - mefuta e fapaneng ya tikoloho ya setshelo. Sena e ka ba data e bonolo ea mongolo kapa mefuta ea lekunutu e tsoang ho Motsamaisi oa Liphiri kapa Lebenkele la Parameter.

Polokelo le Ho Rema Lifate - mona re tla theha ho rema lifate ho CloudWatch Logs (tšebeletso ea li-logs tse tsoang ho AWS). Ho etsa sena, feela lumella "Auto-configure CloudWatch Logs checkbox". Kamora ho theha Task Definition, sehlopha sa li-log se tla iketsetsa ka har'a CloudWatch. Ka mokhoa o ikhethileng, li-log li bolokoa ho eona ka nako e sa lekanyetsoang; Ke khothaletsa ho fetola nako ea ho Boloka ho tloha ho Never Expire ho ea ho nako e hlokahalang. Sena se etsoa ka lihlopha tsa CloudWatch Log, o hloka ho tobetsa nako ea hajoale ebe o khetha e ncha.

Ho aha Scalable API ho AWS Spot Instances

ECS Cluster le ECS Capacity Provider

E-ea karolong ea ECS → Clusters ho theha sehlopha. Re khetha EC2 Linux + Networking e le template.

Lebitso la sehlopha - Ho bohlokoa haholo, re etsa mona lebitso le ts'oanang le le boletsoeng ho parameter ea Launch Template ECS_CLUSTER, molemong oa rona - DemoApiClusterProd. Sheba lebokose le reng Theha sehlopha se se nang letho. Ka boikhethelo, o ka lumella Container Insights ho bona metrics bakeng sa lits'ebeletso ho CloudWatch. Haeba u entse ntho e 'ngoe le e' ngoe ka nepo, joale karolong ea ECS Instances u tla bona mechine e entsoeng sehlopheng sa Auto Scaling.

Ho aha Scalable API ho AWS Spot Instances

Eya ho tab Bafani ba Bokhoni ebe o theha e ncha. E re ke u hopotse hore hoa hlokahala ho laola popo le ho koala ha mechini ho latela palo ea mesebetsi ea ECS e sebetsang. Ke habohlokoa ho hlokomela hore mofani a ka abeloa sehlopha se le seng feela.

Sehlopha sa Auto Scaling — khetha sehlopha se entsoeng pele.

Sekala se laoloang - etsa hore mofani a khone ho phahamisa tšebeletso.

Bokhoni ba sepheo % - ke peresente e kae ea mechini e jereng mesebetsi eo re e hlokang. Haeba u hlakisa 100%, joale mechini eohle e tla lula e tšoarehile ka mesebetsi e sebetsang. Haeba u totobatsa 50%, joale halofo ea likoloi e tla lula e lokolohile. Tabeng ena, haeba ho e-na le ho qhoma ho hoholo ha mojaro, litekesi tse ncha li tla fihla hang-hang likoloing tsa mahala, ntle le ho emela hore maemo a sebelisoe.

Ts'ireletso ea pheliso e laoloang - nolofalletsa, paramethara ena e lumella mofani hore a tlose tšireletso ea maemo ho tloha ho hlakoloa. Sena se etsahala ha ho se na mesebetsi e sebetsang mochining mme e lumella bokhoni ba Target%.

Ts'ebeletso ea ECS le ho seta sekala

Mohato oa ho qetela :) Ho theha tšebeletso, u lokela ho ea sehlopheng se entsoeng pele ho tab ea Litšebeletso.

Mofuta oa ho qala - o hloka ho tobetsa ho switjha ho leano la mofani oa bokhoni ebe o khetha bafani ba pele ba entsoeng.

Ho aha Scalable API ho AWS Spot Instances

Tlhaloso ea Mosebetsi — khetha Task Definition e entsoeng pele le ntlafatso ea eona.

Lebitso la ts'ebeletso — ho qoba pherekano, re lula re supa se tšoanang le Task Definition.

Mofuta oa ts'ebeletso - kamehla Replica.

Palo ea mesebetsi — palo e lakatsehang ya mesebetsi e sebetsang tshebeletsong. Paramethara ena e laoloa ke ho lekanya, empa e ntse e tlameha ho hlalosoa.

Bonyane peresente ea bophelo bo botle и Boholo ba liperesente - etsa qeto ea boitšoaro ba mesebetsi nakong ea ho tsamaisoa. Litekanyetso tsa kamehla ke 100 le 200, ho bonts'a hore ka nako ea ho romelloa palo ea mesebetsi e tla eketseha ka makhetlo a 'maloa, ebe e khutlela boleng bo lakatsehang. Haeba u na le 1 mosebetsi o sebetsang, min = 0, le max = 100, joale nakong ea ho tsamaisoa e tla bolaoa, 'me ka mor'a moo ho tla tsosoa e ncha, ke hore, e tla ba nako ea ho theoha. Haeba mosebetsi o le mong o ntse o sebetsa, min = 1, max = 50, joale ho tsamaisoa ho ke ke ha etsahala ho hang, hobane mosebetsi o le mong o ke ke oa aroloa ka halofo kapa oa eketseha ka nako e le 'ngoe le halofo.

Mofuta oa thomello - tlohela Rolling apdeite.

Lithempleite tsa ho Bea - melao ea ho beha mesebetsi mochining. Taba ea kamehla ke AZ Balanced Spread - sena se bolela hore mosebetsi o mong le o mong o mocha o tla beoa ketsahalong e ncha ho fihlela metjhini e libakeng tsohle tse teng e phahama. Hangata re etsa BinPack - CPU le Spread - AZ; ka leano lena, mesebetsi e beoa ka bongata kamoo ho ka khonehang mochining o le mong ka CPU. Haeba ho hlokahala ho theha mochine o mocha, o bōptjoa sebakeng se secha sa ho fumaneha.

Ho aha Scalable API ho AWS Spot Instances

Mofuta oa balancer oa mojaro — kgetha Sekalasele sa Mojaro wa Tshebediso.

Karolo ea tšebeletso ea IAM - khetha ecsServiceRole.

Laola lebitso la balancer — khetha selekanyi se entsoeng pele.

Nako ea ho hlahloba bophelo bo botle - khefutsa pele u etsa tlhahlobo ea bophelo bo botle ka mor'a ho qala mosebetsi o mocha, hangata re o beha metsotsoana e 60.

Setshelo sa ho beha tekanyo — ho ntho ea lebitso la sehlopha sa Target, khetha sehlopha se entsoeng pele, 'me tsohle li tla tlatsoa ka bohona.

Ho aha Scalable API ho AWS Spot Instances

Tšebeletso ea Auto Scaling - litekanyetso tsa ho eketsa litšebeletso. Kgetha Configure Service Auto Scaling ho lokisa palo e lakatsehang ya tshebeletso ya hao. Re beha bonyane le boholo ba palo ea mesebetsi ha re eketsa.

Karolo ea IAM bakeng sa Service Auto Scaling - khetha AWSServiceRoleForApplicationAutoScaling_ECSService.

Melao e ikemetseng ea ho eketsa mesebetsi - melao ea ho eketsa. Ho na le mefuta e 2:

  1. Ho latela sepheo - ho latela metrics ea sepheo (ts'ebeliso ea CPU / RAM kapa palo ea likopo bakeng sa mosebetsi o mong le o mong). Mohlala, re batla hore palo e tloaelehileng ea processor e be 85%, ha e se e phahame, ho tla eketsoa mesebetsi e mecha ho fihlela e fihla ho boleng bo reriloeng. Haeba mojaro o le tlase, joale mesebetsi e tla tlosoa, ho fapana le moo, ntle le haeba ts'ireletso khahlanong le ho theola fatše e nolofalitsoe (Thibela ho kena-kenana).
  2. Mohato oa ho eketsa - karabelo ya ketsahalo e itseng. Mona o ka hlophisa karabelo ketsahalong efe kapa efe (CloudWatch Alarm), ha e etsahala, o ka eketsa kapa oa tlosa palo e boletsoeng ea mesebetsi, kapa oa bolela palo e nepahetseng ea mesebetsi.

Tšebeletso e ka 'na ea e-ba le melao e mengata ea litekanyetso, sena se ka ba molemo, ntho e ka sehloohong ke ho etsa bonnete ba hore ha ba hanyetsane.

fihlela qeto e

Haeba u latetse litaelo 'me u sebelisa setšoantšo se tšoanang sa Docker, tšebeletso ea hau e lokela ho khutlisa leqephe le kang lena.

Ho aha Scalable API ho AWS Spot Instances

  1. Re thehile template ho latela hore na mechini eohle ea ts'ebeletso e qalisoa. Re boetse re ithutile ho nchafatsa mechini ha template e fetoha.
  2. Re hlophisitse ts'ebetso ea lets'oao la ho emisa mohlala, kahoo kamora motsotso kamora ho e amohela, mesebetsi eohle e sebetsang e tlosoa mochining, kahoo ha ho letho le lahlehileng kapa le sitisoang.
  3. Re phahamisitse selekanyi ho aba mojaro ka ho lekana ho pholletsa le mechini.
  4. Re thehile tšebeletso e sebetsang hang-hang, e fokotsang litšenyehelo tsa mochini ka makhetlo a ka bang 3.
  5. Re hlophisitse autoscaling ka mahlakoreng ka bobeli ho sebetsana le meroalo e mengata ea mosebetsi ntle le ho kenya litšenyehelo tsa nako ea ho theoha.
  6. Re sebelisa Capacity Provider e le hore sesebelisoa se laole lisebelisoa (mechini) eseng ka tsela e 'ngoe.
  7. Re moholo.

Haeba u na le li-spikes tse lebelletsoeng esale pele, mohlala, u bapatsa ka lets'olo le leholo la lengolo-tsoibila, u ka theha sekhahla ka kemiso ea nako.

U ka boela oa lekanya ho latela lintlha tse tsoang likarolong tse fapaneng tsa sistimi ea hau. Ka mohlala, re na le tshebetso ho romella lipapatso tsa motho ka mong basebelisi ba sesebelisoa sa mobile. Ka linako tse ling lets'olo le romelloa ho batho ba 1M+. Ka mor'a kabo e joalo, kamehla ho na le keketseho e kholo ea likopo ho API, kaha basebelisi ba bangata ba kena ka har'a kopo ka nako e le 'ngoe. Kahoo haeba re bona hore ho na le matšoao a tloaelehileng haholo moleng oa ho romella litsebiso tsa papatso, re ka qala hang-hang mechini le mesebetsi e meng e mengata ho itokisetsa mojaro.

Ke tla thaba ha u ka mpolella litlhalosong tse thahasellisang tsa ho sebelisa maemo a letheba le ECS kapa ho hong ka ho phahamisa.

Haufinyane ho tla ba le lingoloa tse mabapi le kamoo re sebetsanang le likete tsa liketsahalo tsa tlhahlobo motsotsoana ka bongata bo se nang seva (ka chelete) le hore na phepelo ea lits'ebeletso e sebetsa joang ka GitLab CI le Terraform Cloud.

Ngolisa ho rona, ho tla ba monate!

Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. kenaka kopo.

A na u sebelisa mehlala ea libaka tlhahisong?

  • 22,2%Ee6

  • 66,7%No18

  • 11,1%Ke ithutile ka tsona ho tsoa sehloohong mme ke rera ho li sebelisa3

Basebelisi ba 27 ba ile ba khetha. Basebelisi ba 5 ba ile ba hana.

Source: www.habr.com

Eketsa ka tlhaloso