A’ togail API Scalable air AWS Spot Instances

Hi uile! Is e Kirill an t-ainm a th’ orm, is mise CTO aig Adapty. Tha a’ mhòr-chuid den ailtireachd againn air AWS, agus an-diugh bruidhnidh mi air mar a lughdaich sinn cosgaisean frithealaiche 3 tursan le bhith a’ cleachdadh spot-shuidheachaidhean ann an àrainneachd cinneasachaidh, a bharrachd air mar a shuidhicheas sinn an fèin-sgèileadh. An toiseach bidh sealladh farsaing air mar a tha e ag obair, agus an uairsin stiùireadh mionaideach airson tòiseachadh.

Dè a th’ ann an cùisean spot?

Spot tha cùisean mar luchd-frithealaidh luchd-cleachdaidh AWS eile a tha an-dràsta leisg, agus bidh iad gan reic aig lasachadh mòr (bidh Amazon a’ sgrìobhadh suas ri 90%, nar n-eòlas ~ 3x, ag atharrachadh a rèir na sgìre, AZ agus seòrsa eisimpleir). Is e am prìomh eadar-dhealachadh aca bho fheadhainn àbhaisteach gum faod iad tionndadh aig àm sam bith. Mar sin, airson ùine mhòr bha sinn a 'creidsinn gu robh e àbhaisteach an cleachdadh airson àrainneachdan òighean, no airson gnìomhan àireamhachadh rudeigin, le toraidhean eadar-mheadhanach air an sàbhaladh air AS3 no san stòr-dàta, ach chan ann airson reic. Tha fuasglaidhean treas-phàrtaidh ann a leigeas leat spotan a chleachdadh air cinneasachadh, ach tha mòran crutches ann airson ar cùis, agus mar sin cha do chuir sinn an gnìomh iad. Tha an dòigh-obrach a tha air a mhìneachadh san artaigil ag obair gu tur taobh a-staigh gnìomhachd àbhaisteach AWS, às aonais sgriobtaichean a bharrachd, crùin, msaa.

Gu h-ìosal tha beagan dhealbhan-sgrìn a sheallas eachdraidh prìsean airson suidheachaidhean spot.

m5.large ann an roinn eu-iar-1 (Èirinn). Tha a’ phrìs air a bhith seasmhach sa mhòr-chuid airson 3 mìosan, an-dràsta a’ sàbhaladh 2.9x.

A’ togail API Scalable air AWS Spot Instances

m5.large anns an roinn us-ear-1 (N. Virginia). Tha a’ phrìs an-còmhnaidh ag atharrachadh thar 3 mìosan, an-dràsta a’ sàbhaladh bho 2.3x gu 2.8x a rèir an t-sòn a tha ri fhaighinn.

A’ togail API Scalable air AWS Spot Instances

t3.small anns an roinn us-ear-1 (N. Virginia). Tha prìs air a bhith seasmhach airson 3 mìosan, an-dràsta a’ sàbhaladh 3.4x.

A’ togail API Scalable air AWS Spot Instances

Ailtireachd seirbheis

Tha structar bunaiteach na seirbheis air am bi sinn a 'bruidhinn san artaigil seo air a shealltainn anns an dealbh gu h-ìosal.

A’ togail API Scalable air AWS Spot Instances

Cothromachadh luchdan tagraidh → EC2 Buidheann Targaid → Seirbheis gleidhidh elastaig

Bithear a’ cleachdadh an Neach-cothromachaidh Iarrtas (ALB) mar chothromachadh, a chuireas iarrtasan gu Buidheann Targaid EC2 (TG). Tha e an urra ri TG puirt fhosgladh air suidheachaidhean airson ALBn agus an ceangal ri puirt soithichean Seirbheis Elastic Container (ECS). Tha ECS na analogue de Kubernetes ann an AWS, a bhios a’ riaghladh soithichean Docker.

Faodaidh grunn shoithichean ruith a bhith aig aon eisimpleir leis na h-aon phuirt, agus mar sin chan urrainn dhuinn an suidheachadh gu socair. Tha ECS ag innse do TG gu bheil iad a ’cur air bhog gnìomh ùr (ann am briathrachas Kubernetes canar pod ris an seo), bidh e a’ sgrùdadh puirt an-asgaidh air an t-suidheachadh agus a ’sònrachadh aon dhiubh don ghnìomh a chaidh a chuir air bhog. Bidh TG cuideachd a’ sgrùdadh gu cunbhalach a bheil an eisimpleir agus an API ag obair air a’ cleachdadh sgrùdadh slàinte, agus ma chì e duilgheadas sam bith, stadaidh e bho bhith a’ cur iarrtasan an sin.

Buidhnean sgèileadh fèin-ghluasadach EC2 + solaraichean comas ECS

Chan eil an diagram gu h-àrd a’ sealltainn seirbheis EC2 Auto Scaling Groups (ASG). Bhon ainm faodaidh tu tuigsinn gu bheil e an urra ri cùisean sgèileachaidh. Ach, gu o chionn ghoirid, cha robh comas togte aig AWS an àireamh de dh’ innealan ruith bho ECS a riaghladh. Rinn ECS e comasach an àireamh de ghnìomhan a sgèileadh, mar eisimpleir, a rèir cleachdadh CPU, RAM no àireamh iarrtasan. Ach ma bha gnìomhan an-asgaidh ann an suidheachadh sam bith, cha deach innealan ùra a chruthachadh gu fèin-ghluasadach.

Tha seo air atharrachadh le teachd Solaraichean Comais ECS (ECS CP). A-nis faodaidh gach seirbheis ann an ECS a bhith co-cheangailte ri ASG, agus mura h-eil na gnìomhan a’ freagairt air na h-amannan ruith, thèid feadhainn ùra a thogail (ach taobh a-staigh crìochan stèidhichte ASG). Bidh seo cuideachd ag obair an taobh eile, ma chì ECS CP suidheachaidhean leisg gun ghnìomhan, bheir e an òrdugh ASG an dùnadh sìos. Tha comas aig ECS ​​CP ceudad targaid de luchd eisimpleir a shònrachadh, gus am bi àireamh sònraichte de dh’ innealan an-còmhnaidh saor airson gnìomhan sgèileadh gu sgiobalta; Bruidhnidh mi mu dheidhinn seo beagan nas fhaide air adhart.

Teamplaidean cur air bhog EC2

Is e an t-seirbheis mu dheireadh air am bi mi a’ bruidhinn mus tèid mi a-steach gu mion-fhiosrachadh mu bhith a ’cruthachadh a’ bhun-structair seo EC2 Launch Templates. Leigidh e leat teamplaid a chruthachadh a rèir an tòisich a h-uile inneal, gus nach dèan thu seo a-rithist bhon fhìor thoiseach a h-uile uair. An seo faodaidh tu an seòrsa inneal a thaghadh airson tòiseachadh, buidheann tèarainteachd, ìomhaigh diosc agus mòran pharaimearan eile. Faodaidh tu cuideachd dàta cleachdaiche a shònrachadh a thèid a luchdachadh suas gu gach suidheachadh a chaidh a chuir air bhog. Faodaidh tu sgriobtaichean a ruith ann an dàta luchd-cleachdaidh, mar eisimpleir, faodaidh tu susbaint faidhle a dheasachadh rèiteachaidhean àidseant ECS.

Is e aon de na paramadairean rèiteachaidh as cudromaiche airson an artaigil seo ECS_ENABLE_SPOT_INSTANCE_DRAINING= fìor. Ma tha am paramadair seo air a chomasachadh, an uairsin cho luath ‘s a gheibh ECS comharra gu bheilear a’ toirt air falbh eisimpleir spot, bidh e a ’gluasad a h-uile gnìomh a tha ag obair air chun inbhe drèanaidh. Cha tèid gnìomhan ùra sam bith a shònrachadh don t-suidheachadh seo; ma tha gnìomhan ann a tha airson a bhith air an sgaoileadh a-mach thuige an-dràsta, thèid an cur dheth. Bidh iarrtasan bhon chothromachadh cuideachd a 'stad a' tighinn. Thig fios mu dhubhadh às eisimpleir 2 mhionaid ron tachartas fhèin. Mar sin, mura dèan an t-seirbheis agad gnìomhan nas fhaide na 2 mhionaid agus nach sàbhail e dad air diosc, faodaidh tu suidheachaidhean spot a chleachdadh gun dàta a chall.

A thaobh diosc - AWS o chionn ghoirid rinn Tha e comasach an siostam faidhle Elastic (EFS) a chleachdadh còmhla ri ECS; leis an sgeama seo, chan eil eadhon an diosc na chnap-starra, ach cha do dh’ fheuch sinn seo, oir ann am prionnsapal chan fheum sinn an diosc gus an stàit a stòradh. Gu gnàthach, às deidh dhut SIGINT fhaighinn (air a chuir nuair a thèid gnìomh a ghluasad chun inbhe drèanaidh), thèid stad a chuir air a h-uile gnìomh ruith às deidh 30 diog, eadhon ged nach eil iad deiseil fhathast; faodaidh tu an turas seo atharrachadh a’ cleachdadh am paramadair ECS_CONTAINER_STOP_TIMEOUT. Is e am prìomh rud gun a bhith ga shuidheachadh airson barrachd air 2 mhionaid airson innealan spot.

A 'cruthachadh seirbheis

Gluaisidh sinn air adhart gu bhith a 'cruthachadh an t-seirbheis a chaidh a mhìneachadh. Anns a 'phròiseas, bheir mi cunntas cuideachd air grunn phuingean feumail nach deach ainmeachadh gu h-àrd. San fharsaingeachd, is e stiùireadh ceum air cheum a tha seo, ach cha bheachdaich mi air cuid de chùisean fìor bhunasach no, air an làimh eile, cùisean fìor shònraichte. Thèid a h-uile gnìomh a dhèanamh ann an consol lèirsinneach AWS, ach faodar ath-riochdachadh gu prògramach a’ cleachdadh CloudFormation no Terraform. Aig Adapty bidh sinn a’ cleachdadh Terraform.

Teamplaid cur air bhog EC2

Bidh an t-seirbheis seo a’ cruthachadh rèiteachadh de dh’ innealan a thèid a chleachdadh. Tha teamplaidean air an riaghladh anns an roinn EC2 -> Cùisean -> Cuir air bhog teamplaidean.

Ìomhaigh inneal Amazon (AMI) - sònraich an ìomhaigh diosc leis an tèid a h-uile suidheachadh a chuir air bhog. Airson ECS, sa mhòr-chuid de chùisean is fhiach an ìomhaigh leasaichte bho Amazon a chleachdadh. Tha e air ùrachadh gu cunbhalach agus tha a h-uile dad a tha riatanach airson ECS ag obair ann. Gus faighinn a-mach an ID ìomhaigh làithreach, rachaibh chun duilleag AMIan làn-leasaichte Amazon ECS, tagh an roinn a tha thu a’ cleachdadh agus dèan lethbhreac den ID AMI air a shon. Mar eisimpleir, airson roinn us-ear-1, is e an ID gnàthach aig àm sgrìobhaidh ami-00c7c1cf5bdc913ed. Feumaidh an ID seo a bhith air a chuir a-steach don nì Sònraich luach gnàthaichte.

Seòrsa samhla - comharraich an seòrsa eisimpleir. Tagh am fear as fheàrr a fhreagras air an obair agad.

Prìomh phaidhir (logadh a-steach) - sònraich teisteanas leis an urrainn dhut ceangal ris an eisimpleir tro SSH, ma tha sin riatanach.

Roghainnean lìonraidh - sònraich crìochan an lìonraidh. Àrd-ùrlar lìonraidh sa mhòr-chuid de chùisean bu chòir Cloud Prìobhaideach Brìgheil (VPC) a bhith ann. Buidhnean tèarainteachd - buidhnean tèarainteachd airson na cùisean agad. Leis gun cleachd sinn cothromachadh air beulaibh nan suidheachaidhean, tha mi a’ moladh buidheann a shònrachadh an seo a leigeas le ceanglaichean a-steach a-mhàin bhon chothromachadh. Is e sin, bidh 2 bhuidheann tèarainteachd agad, aon airson an balancer, a leigeas le ceanglaichean a-steach bho àite sam bith air puirt 80 (http) agus 443 (https), agus an dàrna fear airson innealan, a leigeas le ceanglaichean a-steach air puirt sam bith bhon bhuidheann balancer . Feumar ceanglaichean a-mach anns an dà bhuidheann fhosgladh a’ cleachdadh a’ phròtacal TCP gu puirt gu gach seòladh. Faodaidh tu puirt agus seòlaidhean a chuingealachadh airson ceanglaichean a-mach, ach an uairsin feumaidh tu sùil a chumail gu cunbhalach nach eil thu a’ feuchainn ri faighinn gu rudeigin air port dùinte.

Stòradh (meudan) - sònraich crìochan diosc airson na h-innealan. Chan fhaod meud an diosc a bhith nas lugha na na tha air a shònrachadh san AMI; airson ECS Optimized is e 30 GiB a th’ ann.

Mion-fhiosrachadh adhartach - sònraich crìochan a bharrachd.

Roghainn ceannach - a bheil sinn airson eisimpleirean spot a cheannach. Tha sinn ag iarraidh, ach cha toir sinn sùil air a’ bhogsa seo an seo; rèitichidh sinn e anns a’ Auto Scaling Group, tha barrachd roghainnean ann an sin.

Pròifil eisimpleir IAM - comharraich an àite leis an tèid na cùisean a chuir air bhog. Gus an tèid cùisean a ruith ann an ECS, feumaidh iad ceadan, a gheibhear mar as trice san dreuchd ecsInstanceRole. Ann an cuid de chùisean faodar a chruthachadh, mura h-eil, an uairsin an seo làimhe air mar a nì thu seo. Às deidh cruthachadh, bidh sinn ga chomharrachadh anns an teamplaid.
An uairsin tha mòran pharaimearan ann, gu bunaiteach faodaidh tu luachan bunaiteach fhàgail anns a h-uile àite, ach tha tuairisgeul soilleir aig gach fear dhiubh. Bidh mi an-còmhnaidh a’ comasachadh an eisimpleir EBS-optimized agus roghainnean T2 / T3 Unlimited ma thèid an cleachdadh burstach eisimpleirean.

Dàta cleachdaiche - comharraich dàta luchd-cleachdaidh. Deasaichidh sinn am faidhle /etc/ecs/ecs.config, anns a bheil rèiteachadh àidseant ECS.
Eisimpleir de cò ris a bhiodh dàta cleachdaiche coltach:

#!/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 - tha am paramadair a’ nochdadh gum buin an eisimpleir do bhuidheann leis an ainm a chaidh a thoirt seachad, is e sin, bidh e comasach don bhuidheann seo na gnìomhan aige a chuir air an t-seirbheisiche seo. Chan eil sinn air brabhsair a chruthachadh fhathast, ach cleachdaidh sinn an t-ainm seo nuair a bhios sinn ga chruthachadh.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true - tha am paramadair a’ sònrachadh nuair a gheibhear comharra gus eisimpleir spot a chuir dheth, gum bu chòir a h-uile gnìomh air a ghluasad chun inbhe drèanaidh.

ECS_CONTAINER_STOP_TIMEOUT=1m - tha am paramadair a’ sònrachadh, às deidh dhaibh comharra SIGINT fhaighinn, gu bheil 1 mhionaid aig a h-uile gnìomh mus tèid a mharbhadh.

ECS_ENGINE_AUTH_TYPE=docker - tha am paramadair a’ nochdadh gu bheil an sgeama Docker air a chleachdadh mar an uidheamachd ceadachaidh

ECS_ENGINE_AUTH_DATA=... - crìochan ceangail ri clàr nan soithichean prìobhaideach, far a bheil na h-ìomhaighean Docker agad air an stòradh. Ma tha e poblach, chan fheum thu dad a shònrachadh.

Airson adhbharan an artaigil seo, cleachdaidh mi ìomhaigh phoblach bho Docker Hub, mar sin sònraich na crìochan ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA gun fheum.

Math airson fios a bhith agad: Thathas a’ moladh an AMI ùrachadh gu cunbhalach, oir bidh dreachan ùra ag ùrachadh tionndaidhean de Docker, Linux, àidseant ECS, msaa. Gus nach dìochuimhnich thu mu dheidhinn seo, faodaidh tu cuir fiosan air dòigh mu dheidhinn dreachan ùra fhoillseachadh. Gheibh thu fiosan air post-d agus ùrachadh le làimh, no faodaidh tu gnìomh Lambda a sgrìobhadh a chruthaicheas gu fèin-ghluasadach dreach ùr de Launch Template le AMI ùraichte.

Buidheann Sgèileadh fèin-ghluasadach EC2

Tha uallach air Auto Scaling Group airson suidheachaidhean cur air bhog agus sgèileadh. Tha buidhnean air an riaghladh anns an roinn EC2 -> Auto Scaling -> Auto Scaling Groups.

Teamplaid cur air bhog - tagh an teamplaid a chaidh a chruthachadh sa cheum roimhe. Bidh sinn a’ fàgail an dreach bunaiteach.

Roghainnean ceannach agus seòrsachan eisimpleirean - sònraich na seòrsaichean de shuidheachaidhean airson a’ bhuidheann. Bidh cumail ri teamplaid cur air bhog a’ cleachdadh an seòrsa eisimpleir bhon Teamplaid Launch. Leigidh cothlamadh roghainnean ceannach agus seòrsachan eisimpleir dhut seòrsachan eisimpleirean a rèiteachadh gu sùbailte. Cleachdaidh sinn e.

Bunait roghainneil air iarrtas - an àireamh de shuidheachaidhean cunbhalach, neo-spot a bhios an-còmhnaidh ag obair.

Ìre sa cheud air-iarrtas os cionn a' bhunait - co-mheas sa cheud de shuidheachaidhean cunbhalach agus spot, thèid 50-50 a sgaoileadh gu co-ionann, 20-80 airson gach suidheachadh cunbhalach thèid 4 spot a thogail. Airson adhbharan na h-eisimpleir seo, seallaidh mi 50-50, ach ann an da-rìribh bidh sinn mar as trice a ’dèanamh 20-80, ann an cuid de chùisean 0-100.

Seòrsaichean institiud - an seo faodaidh tu seòrsaichean a bharrachd de shuidheachaidhean a shònrachadh a thèid a chleachdadh sa bhuidheann. Cha do chleachd sinn a-riamh e oir chan eil mi dha-rìribh a’ tuigsinn brìgh na sgeòil. Is dòcha gu bheil seo mar thoradh air na crìochan air seòrsachan sònraichte de shuidheachaidhean, ach faodar an àrdachadh gu furasta tro thaic. Ma tha thu eòlach air an tagradh, bidh mi toilichte a leughadh anns na beachdan)

A’ togail API Scalable air AWS Spot Instances

lìonra - roghainnean lìonra, tagh VPC agus subnets airson innealan, sa mhòr-chuid bu chòir dhut a h-uile subnets a tha rim faighinn a thaghadh.

Luchdaich cothromachadh - roghainnean cothromachaidh, ach nì sinn seo air leth, cha suathadh sinn dad an seo. Sgrùdaidhean slàinte thèid a rèiteachadh nas fhaide air adhart cuideachd.

Meud buidhne - bidh sinn a’ comharrachadh na crìochan air an àireamh de dh ’innealan anns a’ bhuidheann agus an àireamh de dh ’innealan a tha thu ag iarraidh aig an toiseach. Cha bhith an àireamh de dh’ innealan anns a ’bhuidheann gu bràth nas ìsle na an ìre as ìsle a chaidh a shònrachadh agus nas àirde na an ìre as àirde, eadhon ged a bu chòir sgèileadh tachairt a rèir nam meatrach.

Poileasaidhean sgèileadh - crìochan sgèileachaidh, ach nì sinn sgèile stèidhichte air gnìomhan ruith ECS, agus mar sin rèitichidh sinn an sgèile nas fhaide air adhart.

Mar eisimpleir, dìon ìre - dìon shuidheachaidhean bho bhith air an sguabadh às nuair a thèid an lughdachadh. Bidh sinn ga chomasachadh gus nach cuir ASG às don inneal aig a bheil gnìomhan ruith. Cuiridh Solaraiche Comais ECS casg air dìon airson suidheachaidhean aig nach eil gnìomhan.

Cuir tagaichean ris - faodaidh tu tagaichean a shònrachadh airson suidheachaidhean (airson seo, feumar sùil a thoirt air bogsa sgrùdaidh suidheachaidhean ùra Tag). Tha mi a’ moladh an taga Ainm a shònrachadh, an uairsin bidh an aon ainm aig a h-uile suidheachadh a thèid a chuir air bhog taobh a-staigh na buidhne, agus tha e goireasach am faicinn sa chonsail.

A’ togail API Scalable air AWS Spot Instances

Às deidh dhut a’ bhuidheann a chruthachadh, fosgail e agus rach gu roinn nan rèiteachaidhean adhartach.

Poileasaidhean crìochnachaidh - riaghailtean air an tèid beachdachadh nuair a thathar a’ cuir às do shuidheachaidhean. Tha iad air an cur an sàs ann an òrdugh. Mar as trice bidh sinn a’ cleachdadh an fheadhainn san dealbh gu h-ìosal. An toiseach, thèid cùisean leis an Teamplaid Launch as sine a dhubhadh às (mar eisimpleir, ma dh’ ùraich sinn an AMI, chruthaich sinn dreach ùr, ach chaidh aig a h-uile suidheachadh air tionndadh thuige). An uairsin thèid na suidheachaidhean as fhaisge air an ath uair bileachaidh a thaghadh. Agus an uairsin thèid an fheadhainn as sine a thaghadh a rèir ceann-latha cur air bhog.

A’ togail API Scalable air AWS Spot Instances

Math airson fios a bhith agad: gus a h-uile inneal ùrachadh ann am brabhsair, goireasach airson a chleachdadh Ùrnaigh mar eisimpleir. Ma chuireas tu seo còmhla ri gnìomh Lambda bhon cheum roimhe, bidh siostam ùrachadh eisimpleir làn fèin-ghluasadach agad. Mus ùraich thu a h-uile inneal, feumaidh tu dìon sgèile-in eisimpleir a dhì-cheadachadh airson a h-uile suidheachadh sa bhuidheann. Chan e rèiteachadh sa bhuidheann, ach dìon bho na h-innealan fhèin, tha seo air a dhèanamh air an taba Instance Management.

Cothromaiche luchdan tagraidh agus Buidheann Targaid EC2

Tha an cothromachadh air a chruthachadh anns an roinn EC2 → Cothromachadh luchdan → Luchd-cothromachaidh. Cleachdaidh sinn Iarrtas Load Balancer; faodar coimeas a dhèanamh eadar diofar sheòrsaichean cothromachaidh a leughadh aig duilleag seirbheis.

Luchd-èisteachd - tha e ciallach puirt 80 agus 443 a dhèanamh agus ath-stiùireadh bho 80 gu 443 a’ cleachdadh riaghailtean balancer nas fhaide air adhart.

Sònaichean rim faighinn - sa mhòr-chuid de chùisean, bidh sinn a’ taghadh sònaichean ruigsinneachd airson a h-uile duine.

Dèan rèiteachadh air na roghainnean tèarainteachd - tha an teisteanas SSL airson an cothromaiche air a chomharrachadh an seo, is e an roghainn as freagarraiche teisteanas a dhèanamh ann an ACM. Mu na h-eadar-dhealachaidhean Poileasaidh tèarainteachd faodar a leughadh a-steach sgrìobhainnean, faodaidh tu fhàgail air a thaghadh gu bunaiteach ELBSecurityPolicy-2016-08. Às deidh dhut an balancer a chruthachadh, chì thu e Ainm DNS, a dh'fheumas tu gus an CNAME a rèiteachadh airson an àrainn agad. Mar eisimpleir, seo mar a tha e a’ coimhead ann an Cloudflare.

A’ togail API Scalable air AWS Spot Instances

Buidheann tèarainteachd - cruthaich no tagh buidheann tèarainteachd airson an neach-cothromachaidh, sgrìobh mi barrachd mu dheidhinn seo dìreach gu h-àrd ann an Teamplaid Launch EC2 → Roghainnean lìonra roinn.

Buidheann amais - bidh sinn a’ cruthachadh buidheann a bhios an urra ri bhith a’ stiùireadh iarrtasan bhon chothromachadh gu innealan agus a’ dèanamh cinnteach gu bheil iad rim faighinn gus an tèid an cur nan àite gun fhios nach bi duilgheadasan ann. Seòrsa targaid feumaidh e bhith mar eisimpleir, Pròtacal и Port sam bith, ma chleachdas tu HTTPS airson conaltradh eadar an balancer agus suidheachaidhean, feumaidh tu teisteanas a luchdachadh suas thuca. Airson adhbharan an eisimpleir seo, cha dèan sinn seo, fàgaidh sinn port 80 gu sìmplidh.

Sgrùdaidhean slàinte - crìochan airson sgrùdadh a dhèanamh air gnìomhachd na seirbheis. Ann an seirbheis fhìor, bu chòir gur e iarrtas air leth a tha seo a chuireas an gnìomh pàirtean cudromach de loidsig gnìomhachais; airson adhbharan an eisimpleir seo, fàgaidh mi na roghainnean bunaiteach. An uairsin, faodaidh tu an eadar-ama iarrtas, ùine a-mach, còdan soirbheachais, msaa a thaghadh. Anns an eisimpleir againn, seallaidh sinn Còdan Soirbheachais 200-399, oir tha an ìomhaigh Docker a thèid a chleachdadh a ’tilleadh còd 304.

A’ togail API Scalable air AWS Spot Instances

Clàradh targaidean - an seo tha na càraichean airson na buidhne air an taghadh, ach sa chùis againn thèid seo a dhèanamh le ECS, agus mar sin bidh sinn dìreach a’ leum air a ’cheum seo.

Math airson fios a bhith agad: aig an ìre balancer urrainn dhut a chur an comas logaichean a thèid a shàbhaladh ann an S3 ann an àraidh cruth. Às an sin faodar an às-mhalairt gu seirbheisean treas-phàrtaidh airson anailis, no faodaidh tu ceistean SQL a chuir gu dìreach air an dàta ann an S3 le a’ cleachdadh Athena. Tha e goireasach agus ag obair gun còd sam bith a bharrachd. Tha mi cuideachd a 'moladh a bhith a' stèidheachadh toirt air falbh logaichean bhon bhucaid S3 an dèidh ùine shònraichte.

Mìneachadh gnìomh ECS

Anns na ceumannan roimhe seo, chruthaich sinn a h-uile càil co-cheangailte ri bun-structar na seirbheis; a-nis gluaisidh sinn air adhart gu bhith a’ toirt cunntas air na soithichean a chuireas sinn air bhog. Tha seo air a dhèanamh anns an roinn ECS → Mìneachaidhean Gnìomha.

Co-fhreagarrachd seòrsa tòiseachaidh - tagh EC2.

Coileanadh gnìomh Ròl IAM - tagh ecsTaskExecutionRole. Le bhith ga chleachdadh, tha logaichean air an sgrìobhadh, tha cothrom air caochladairean dìomhair air a thoirt seachad, msaa.

Anns an roinn Mìneachaidhean Container, cliog Cuir Container ris.

Ìomhaigh - ceangail ris an ìomhaigh le còd a’ phròiseict; airson an eisimpleir seo cleachdaidh mi ìomhaigh phoblach bho Docker Hub bitnami/node-eisimpleir: 0.0.1.

Crìochan cuimhne - crìochan cuimhne airson an t-soithich. Crìochan cruaidh - crìoch cruaidh, ma thèid an soitheach nas fhaide na an luach ainmichte, thèid an àithne marbhadh docker a chuir gu bàs, bàsaichidh an soitheach sa bhad. Crìochan bog - crìoch bog, faodaidh an soitheach a dhol nas fhaide na an luach ainmichte, ach thèid am paramadair seo a thoirt fa-near nuair a bhios tu a’ cur gnìomhan air innealan. Mar eisimpleir, ma tha 4 GiB de RAM aig inneal, agus gu bheil crìoch bog inneal 2048 MiB, faodaidh suas ri 2 ghnìomh ruith a bhith aig an inneal seo leis a’ ghobhar seo. Ann an da-rìribh, tha 4 GiB de RAM beagan nas lugha na 4096 MiB, faodar seo fhaicinn air taba ECS Instances sa bhuidheann. Chan urrainn crìoch bog a bhith nas àirde na crìoch cruaidh. Tha e cudromach tuigsinn ma tha grunn shoithichean ann an aon ghnìomh, gu bheil na crìochan aca air an geàrr-chunntas.

Mapaichean port - a-steach Port aoigheachd Tha sinn a’ comharrachadh 0, tha seo a’ ciallachadh gun tèid am port a shònrachadh gu dinamach agus gun tèid sùil a chumail air leis a’ Bhuidheann Targaid. Port Container - gu tric bidh am port air a bheil an tagradh agad a’ ruith air a shònrachadh anns an àithne gnìomhachaidh, no air a shònrachadh sa chòd tagraidh agad, Dockerfile, msaa. Airson an eisimpleir againn cleachdaidh sinn 3000 oir tha e air a liostadh ann Faidhle docker an ìomhaigh ga chleachdadh.

Sgrùdadh slàinte - paramadairean sgrùdadh slàinte soithichean, gun a bhith air am measgachadh leis an fhear a chaidh a dhealbhadh sa Bhuidheann Targaid.

àrainneachd - suidheachaidhean àrainneachd. Aonadan CPU - coltach ri crìochan Cuimhne, dìreach mun phròiseasar. Tha 1024 aonad aig gach cridhe pròiseasar, mar sin ma tha pròiseasar dà-cridhe aig an fhrithealaiche agus gu bheil an soitheach suidhichte gu 512, faodar 4 gnìomhan leis a’ ghobhar seo a chuir air bhog air aon fhrithealaiche. Bidh aonadan CPU an-còmhnaidh a’ freagairt ris an àireamh de choraichean; chan urrainn beagan nas lugha dhiubh a bhith ann, mar a tha fìor le cuimhne.

Command - àithne airson seirbheis a thòiseachadh taobh a-staigh soitheach, tha a h-uile paramadair air a shònrachadh air a sgaradh le cromagan. Dh’ fhaodadh seo a bhith gunicorn, npm, msaa. Mura h-eil e air a shònrachadh, thèid luach an stiùiridh CMD bhon Dockerfile a chleachdadh. Tha sinn a 'comharrachadh npm,start.

Caochlaidhean àrainneachd - caochladairean àrainneachd container. Faodaidh seo a bhith an dàrna cuid dàta teacsa sìmplidh no caochladairean dìomhair bho Manaidsear dìomhaireachdan no Stòr Parameter.

Stòradh agus Logadh - an seo cuiridh sinn air dòigh logadh a-steach CloudWatch Logs (seirbheis airson logaichean bho AWS). Gus seo a dhèanamh, dìreach cuir an comas bogsa sgrùdaidh Logaichean CloudWatch Auto-configure. Às deidh dhut am Mìneachadh Gnìomha a chruthachadh, thèid buidheann de logaichean a chruthachadh gu fèin-ghluasadach ann an CloudWatch. Gu gnàthach, bidh logaichean air an stòradh ann gun chrìoch; Tha mi a’ moladh an ùine gleidhidh atharrachadh bho Cha tig crìoch gu bràth chun ùine a tha a dhìth. Tha seo air a dhèanamh ann am buidhnean CloudWatch Log, feumaidh tu briogadh air an ùine làithreach agus fear ùr a thaghadh.

A’ togail API Scalable air AWS Spot Instances

Buidheann ECS agus Solaraiche Comais ECS

Rach gu roinn ECS → Clusters gus cruinneachadh a chruthachadh. Bidh sinn a’ taghadh EC2 Linux + Networking mar an teamplaid.

Ainm a' chluais - glè chudromach, bidh sinn a’ dèanamh an seo an aon ainm agus a tha air a shònrachadh ann am paramadair Launch Template ECS_CLUSTER, nar cùis- DemoApiClusterProd. Thoir sùil air a’ bhogsa-seic Cruthaich brabhsair falamh. Gu roghnach, faodaidh tu comas a thoirt do Container Insights sùil a thoirt air meatrach airson seirbheisean ann an CloudWatch. Ma rinn thu a h-uile càil ceart, an uairsin ann an roinn ECS Instances chì thu innealan a chaidh a chruthachadh sa bhuidheann Auto Scaling.

A’ togail API Scalable air AWS Spot Instances

Rach gu tab Solaraichean Comas agus cruthaich fear ùr. Leig leam do chuimhneachadh gu bheil feum air smachd a chumail air cruthachadh agus dùnadh innealan a rèir an àireamh de ghnìomhan ECS a tha a 'ruith. Tha e cudromach cuimhneachadh nach urrainn solaraiche a bhith air a shònrachadh ach do aon bhuidheann.

Buidheann fèin-sgèileadh - tagh am buidheann a chaidh a chruthachadh roimhe.

Sgèileadh air a riaghladh - comas a thoirt dha gus an urrainn don t-solaraiche an t-seirbheis a sgèile.

Comas targaid % - dè an àireamh sa cheud de dh’ innealan làn de ghnìomhan a dh’ fheumas sinn. Ma shònraicheas tu 100%, bidh a h-uile inneal an-còmhnaidh trang le gnìomhan ruith. Ma shònraicheas tu 50%, bidh leth nan càraichean an-còmhnaidh an-asgaidh. Anns a 'chùis seo, ma tha àrdachadh mòr ann an luchd, gheibh tacsaidhean ùra gu càraichean an-asgaidh sa bhad, gun a bhith a' feitheamh gus an tèid cùisean a chuir a-steach.

Dìon crìochnachaidh air a riaghladh - comasach, leigidh am paramadair seo leis an t-solaraiche dìon suidheachaidhean a thoirt air falbh bho bhith air a dhubhadh às. Bidh seo a 'tachairt nuair nach eil gnìomhan gnìomhach air an inneal agus a' ceadachadh comas Targaid%.

Seirbheis ECS agus suidheachadh sgèile

An ceum mu dheireadh :) Gus seirbheis a chruthachadh, feumaidh tu a dhol chun bhuidheann a chaidh a chruthachadh roimhe seo air taba nan Seirbheisean.

Seòrsa cur air bhog - feumaidh tu briogadh air Switch gu ro-innleachd solaraiche comas agus tagh na solaraichean a chaidh a chruthachadh roimhe.

A’ togail API Scalable air AWS Spot Instances

Mìneachadh Gnìomha - tagh am mìneachadh gnìomh a chaidh a chruthachadh roimhe seo agus an ath-sgrùdadh aige.

Ainm na seirbheis - gus troimh-chèile a sheachnadh, bidh sinn an-còmhnaidh a’ nochdadh an aon rud ri Mìneachadh Gnìomha.

Seòrsa seirbheis - an-còmhnaidh mac-samhail.

Àireamh de ghnìomhan - an àireamh de ghnìomhan gnìomhach a tha thu ag iarraidh san t-seirbheis. Tha am paramadair seo fo smachd sgèileadh, ach feumar a shònrachadh fhathast.

Ceud fallain as ìsle и Àireamh sa cheud as àirde - co-dhùnadh giùlan gnìomhan rè cleachdadh. Is e na luachan bunaiteach 100 agus 200, a ’nochdadh gum bi an àireamh de ghnìomhan ag àrdachadh grunn thursan aig àm an cleachdadh, agus an uairsin till air ais chun luach a tha thu ag iarraidh. Ma tha gnìomh 1 agad a’ ruith, min = 0, agus max = 100, an uairsin nuair a thèid a chuir a-steach thèid a mharbhadh, agus às deidh sin thèid fear ùr a thogail, is e sin, is e àm downt a bhios ann. Ma tha gnìomh 1 a’ ruith, min = 50, max = 150, cha tachair cleachdadh idir, oir chan urrainnear gnìomh 1 a roinn ann an leth no àrdachadh uair gu leth.

Seòrsa cleachdadh - fàg ùrachadh Rolling.

Teamplaidean suidheachaidh - riaghailtean airson gnìomhan a chuir air innealan. Is e an roghainn àbhaisteach AZ Spread Cothromach - tha seo a’ ciallachadh gun tèid gach gnìomh ùr a chuir air eisimpleir ùr gus an èirich innealan anns a h-uile sòn ruigsinneachd. Mar as trice bidh sinn a’ dèanamh BinPack - CPU agus Spread - AZ; leis a’ phoileasaidh seo, tha gnìomhan air an cur cho dùmhail sa ghabhas air aon inneal gach CPU. Ma tha feum air inneal ùr a chruthachadh, thèid a chruthachadh ann an raon ruigsinneachd ùr.

A’ togail API Scalable air AWS Spot Instances

Seòrsa cothromachadh a luchdadh a-nuas - tagh App Load Balancer.

Dreuchd seirbheis IAM - tagh ecsServiceRole.

Luchdaich a-nuas an t-ainm cothromachadh - tagh an cothromachadh a chaidh a chruthachadh roimhe.

Ùine sgrùdaidh slàinte - stad mus dèan thu sgrùdaidhean slàinte às deidh dhuinn gnìomh ùr a chuir a-steach, mar as trice bidh sinn ga chuir gu 60 diog.

Container airson cothromachadh a luchdadh - anns an nì ainm buidheann targaid, tagh am buidheann a chaidh a chruthachadh roimhe, agus thèid a h-uile càil a lìonadh a-steach gu fèin-ghluasadach.

A’ togail API Scalable air AWS Spot Instances

Sgèileadh fèin-ghluasadach seirbheis - crìochan sgèile seirbheis. Tagh Configure Service Auto Scaling gus an àireamh a tha thu ag iarraidh don t-seirbheis agad atharrachadh. Shuidhich sinn an àireamh as lugha agus as àirde de ghnìomhan nuair a bhios sinn a’ sgèileadh.

Dreuchd IAM airson Sgèileadh Auto Seirbheis - tagh AWSServiceRoleForApplicationAutoScaling_ECSService.

Poileasaidhean sgèileadh ghnìomhan fèin-ghluasadach - riaghailtean airson sgèileadh. Tha 2 sheòrsa ann:

  1. Rianachd targaid - cumail sùil air meatrach targaid (cleachdadh CPU / RAM no an àireamh de dh’ iarrtasan airson gach gnìomh). Mar eisimpleir, tha sinn ag iarraidh gum bi an luchd pròiseasar cuibheasach 85%, nuair a dh'fhàsas e nas àirde, thèid gnìomhan ùra a chur ris gus an ruig e an luach targaid. Ma tha an luchd nas ìsle, thèid gnìomhan a thoirt air falbh, air an làimh eile, mura h-eil dìon an aghaidh sgèileadh air a chomasachadh (Cuir à comas sgèile-a-steach).
  2. Sgèileadh ceum - freagairt do thachartas neo-riaghailteach. An seo faodaidh tu freagairt do thachartas sam bith (CloudWatch Alarm) a rèiteachadh, nuair a thachras e, faodaidh tu an àireamh ainmichte de ghnìomhan a chur ris no a thoirt air falbh, no an dearbh àireamh de ghnìomhan a shònrachadh.

Faodaidh grunn riaghailtean sgèileadh a bhith aig seirbheis, faodaidh seo a bhith feumail, is e am prìomh rud dèanamh cinnteach nach bi iad a ’strì ri chèile.

co-dhùnadh

Ma lean thu an stiùireadh agus gun do chleachd thu an aon ìomhaigh Docker, bu chòir don t-seirbheis agad duilleag mar seo a thilleadh.

A’ togail API Scalable air AWS Spot Instances

  1. Tha sinn air teamplaid a chruthachadh a rèir am bi a h-uile inneal san t-seirbheis air a chuir air bhog. Dh'ionnsaich sinn cuideachd mar a dh'ùraicheas sinn innealan nuair a dh'atharraicheas an teamplaid.
  2. Tha sinn air giullachd a’ chomharra stad spot spot a rèiteachadh, agus mar sin taobh a-staigh mionaid às deidh dhuinn fhaighinn, thèid a h-uile gnìomh ruith a thoirt air falbh bhon inneal, agus mar sin chan eil dad air chall no air a bhriseadh.
  3. Thog sinn an cothromachadh gus an luchd a sgaoileadh gu cothromach thairis air na h-innealan.
  4. Tha sinn air seirbheis a chruthachadh a bhios a’ ruith sa bhad, a lughdaicheas cosgaisean inneal timcheall air 3 tursan.
  5. Tha sinn air fèin-sgèileadh a rèiteachadh gach taobh gus barrachd eallach obrach a làimhseachadh gun a bhith a’ tighinn a-steach do chosgaisean ùine downt.
  6. Bidh sinn a’ cleachdadh Solaraiche Comas gus am bi an tagradh a’ riaghladh a’ bhun-structair (innealan) agus chan ann an taobh eile.
  7. Tha sinn air leth math.

Ma tha spìcean ro-innseach agad ann an luchd, mar eisimpleir tha thu a’ sanasachd ann an iomairt post-d mòr, faodaidh tu sgèileadh a stèidheachadh le clàr-ama.

Faodaidh tu cuideachd sgèile stèidhichte air dàta bho dhiofar phàirtean den t-siostam agad. Mar eisimpleir, tha an comas-gnìomh againn a’ cur a-mach tairgsean brosnachaidh fa leth luchd-cleachdaidh an aplacaid gluasadach. Aig amannan thèid iomairt a chuir gu 1M+ neach. Às deidh a leithid de chuairteachadh, tha an-còmhnaidh àrdachadh mòr ann an iarrtasan don API, leis gu bheil mòran de luchd-cleachdaidh a ’logadh a-steach don tagradh aig an aon àm. Mar sin ma chì sinn gu bheil mòran a bharrachd chomharran àbhaisteach anns a’ chiudha airson fiosan brosnachaidh a chuir, is urrainn dhuinn grunn innealan agus gnìomhan a bharrachd a chuir air bhog sa bhad gus a bhith deiseil airson an luchd.

Bidh mi toilichte ma dh’ innseas tu dhomh anns na beachdan cùisean inntinneach mu bhith a’ cleachdadh spot-shuidheachaidhean agus ECS no rudeigin mu dheidhinn sgèileadh.

A dh’ aithghearr bidh artaigilean ann mu mar a bhios sinn a’ làimhseachadh mìltean de thachartasan anailis gach diog air stac gun fhrithealaiche sa mhòr-chuid (le airgead) agus mar a bhios cleachdadh sheirbheisean ag obair a’ cleachdadh GitLab CI agus Terraform Cloud.

Subscribe dhuinn, bidh e inntinneach!

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Am bi thu a’ cleachdadh eisimpleirean spot ann an cinneasachadh?

  • 22,2%Seadh6

  • 66,7%Chan eil 18

  • 11,1%Dh’ ionnsaich mi mun deidhinn bho artaigil agus tha mi an dùil an cleachdadh3

Bhòt 27 neach-cleachdaidh. Sheall 5 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann