Gina API mai Matsala akan AWS Spot Misalai

Sannu duka! Sunana Kirill, Ni CTO ne a Adapty. Yawancin gine-ginen mu yana kan AWS, kuma a yau zan yi magana game da yadda muka rage farashin uwar garken ta sau 3 ta hanyar amfani da lokuta tabo a cikin yanayin samarwa, da kuma yadda za a kafa tsarin su na atomatik. Da farko za a yi bayyani na yadda yake aiki, sannan kuma cikakken umarnin farawa.

Menene Misalin Spot?

Tabo lokuttan sabar ne na wasu masu amfani da AWS waɗanda ba su da aiki a halin yanzu, kuma suna sayar da su a babban ragi (Amazon ya rubuta har zuwa 90%, a cikin ƙwarewarmu ~ 3x, ya bambanta dangane da yankin, AZ da nau'in misali). Babban bambancin su daga na yau da kullum shine cewa za su iya kashewa a kowane lokaci. Sabili da haka, na dogon lokaci mun yi imani cewa al'ada ne don amfani da su don wuraren budurwa, ko don ayyuka na ƙididdige wani abu, tare da matsakaicin sakamakon da aka ajiye akan S3 ko a cikin bayanan bayanai, amma ba don tallace-tallace ba. Akwai mafita na ɓangare na uku waɗanda ke ba ku damar amfani da aibobi akan samarwa, amma akwai crutches da yawa don shari'ar mu, don haka ba mu aiwatar da su ba. Hanyar da aka bayyana a cikin labarin yana aiki gaba ɗaya a cikin daidaitaccen aikin AWS, ba tare da ƙarin rubutun ba, rawanin, da sauransu.

A ƙasa akwai ƴan hotunan kariyar kwamfuta waɗanda ke nuna tarihin farashi don tabo.

m5.mafi girma a yankin eu-west-1 (Ireland). Farashin ya kasance mafi yawa tsayayye na watanni 3, a halin yanzu yana adana 2.9x.

Gina API mai Matsala akan AWS Spot Misalai

m5.mafi girma a yankin us-gabas-1 (N. Virginia). Farashin yana canzawa akai-akai sama da watanni 3, a halin yanzu yana adanawa daga 2.3x zuwa 2.8x ya danganta da yankin samuwa.

Gina API mai Matsala akan AWS Spot Misalai

t3.small a yankin us-gabas-1 (N. Virginia). Farashin ya tsaya tsayin daka na tsawon watanni 3, a halin yanzu yana adana 3.4x.

Gina API mai Matsala akan AWS Spot Misalai

Gine-ginen sabis

An nuna ainihin gine-ginen sabis ɗin da za mu yi magana game da shi a cikin wannan labarin a cikin zanen da ke ƙasa.

Gina API mai Matsala akan AWS Spot Misalai

Ma'auni Load na Aikace-aikacen → EC2 Target Group → Sabis na kwantena na roba

Ana amfani da Balancer Load Balancer (ALB) azaman ma'auni, wanda ke aika buƙatun zuwa EC2 Target Group (TG). TG ita ce ke da alhakin buɗe tashoshin jiragen ruwa a kan misalai na ALBs da haɗa su zuwa tashar jiragen ruwa na kwantena na Sabis na Kwantena na Elastic (ECS). ECS analog ne na Kubernetes a cikin AWS, wanda ke sarrafa kwantena Docker.

Misali ɗaya na iya samun kwantena masu gudana da yawa tare da tashar jiragen ruwa iri ɗaya, don haka ba za mu iya saita su daidai ba. ECS ta gaya wa TG cewa tana ƙaddamar da sabon ɗawainiya (a cikin kalmomin Kubernetes ana kiran wannan kwas ɗin), yana bincika tashar jiragen ruwa kyauta akan misalin kuma ya sanya ɗayansu ga aikin da aka ƙaddamar. Hakanan TG yana bincika akai-akai ko misalin da API suna aiki akan shi ta amfani da duba lafiyar jiki, kuma idan ya ga wasu matsaloli, yana daina aika buƙatun a can.

EC2 Ƙungiyoyin Ƙirar Ma'auni + Masu Ba da Ƙarfin ECS

Hoton da ke sama baya nuna sabis ɗin EC2 Auto Scaling Groups (ASG). Daga sunan za ku iya fahimtar cewa ita ce ke da alhakin daidaita al'amura. Koyaya, har zuwa kwanan nan, AWS ba ta da ginanniyar ikon sarrafa adadin injunan aiki daga ECS. ECS ya ba da damar auna adadin ayyuka, misali, ta amfani da CPU, RAM ko adadin buƙatun. Amma idan ayyuka sun mamaye duk lokuta na kyauta, to, ba a ƙirƙiri sababbin injuna ta atomatik ba.

Wannan ya canza tare da zuwan ECS Capacity Providers (ECS CP). Yanzu kowane sabis a cikin ECS ana iya haɗa shi da ASG, kuma idan ayyukan ba su dace da al'amuran da ke gudana ba, za a ɗaga sababbi (amma a cikin iyakokin ASG da aka kafa). Wannan kuma yana aiki a akasin shugabanci, idan ECS CP ya ga lokuta marasa aiki ba tare da ayyuka ba, to zai ba da umarnin ASG don rufe su. ECS CP yana da ikon ƙididdige adadin adadin abin da ake buƙata na misali, ta yadda wasu adadin injuna koyaushe suna da kyauta don ayyuka masu ƙima da sauri; Zan yi magana game da wannan nan gaba kadan.

EC2 Ƙaddamar da Samfura

Sabis na ƙarshe da zan yi magana game da shi kafin yin cikakken bayani game da ƙirƙirar wannan kayan aikin shine EC2 Launch Templates. Yana ba ku damar ƙirƙirar samfuri bisa ga abin da duk injuna za su fara, don kada ku maimaita wannan daga karce kowane lokaci. Anan zaka iya zaɓar nau'in na'ura don farawa, rukunin tsaro, hoton diski da sauran sigogi masu yawa. Hakanan zaka iya saka bayanan mai amfani waɗanda za a loda su zuwa duk abubuwan da aka ƙaddamar. Kuna iya gudanar da rubutun a cikin bayanan mai amfani, misali, zaku iya shirya abubuwan da ke cikin fayil Saitunan wakilin ECS.

Ɗaya daga cikin mahimman sigogin daidaitawa na wannan labarin shine ECS_ENABLE_SPOT_INSTANCE_DRAINING=gaskiya. Idan an kunna wannan siga, to da zarar ECS ta karɓi sigina cewa ana ɗauke tabo tabo, ta canza duk ayyukan da ke aiki akansa zuwa matsayin Driing. Babu sabbin ayyuka da za a sanya wa wannan misali; idan akwai ayyukan da ke son a aiwatar da su a yanzu, za a soke su. Buƙatun daga ma'auni shima ya daina zuwa. Sanarwa na share misali yana zuwa mintuna 2 kafin ainihin abin da ya faru. Don haka, idan sabis ɗin ku baya yin ayyuka sama da mintuna 2 kuma baya ajiye komai akan faifai, to zaku iya amfani da tabo ba tare da rasa bayanai ba.

Game da faifai - AWS kwanan nan yi Yana yiwuwa a yi amfani da Elastic File System (EFS) tare da ECS; tare da wannan makirci, ko da faifai ba wani cikas ba ne, amma ba mu gwada wannan ba, tun da yake ba mu buƙatar faifai don adana jihar. Ta hanyar tsoho, bayan karɓar SIGINT (aiko lokacin da aka canja wurin aiki zuwa matsayin Magudanar ruwa), za a dakatar da duk ayyukan da ke gudana bayan daƙiƙa 30, koda kuwa ba a gama ba tukuna; zaku iya canza wannan lokacin ta amfani da siga. ECS_CONTAINER_STOP_TIMEOUT. Babban abu shine kada a saita shi fiye da mintuna 2 don injunan tabo.

Ƙirƙirar sabis

Bari mu ci gaba zuwa ƙirƙirar sabis ɗin da aka bayyana. A cikin wannan tsari, zan kuma bayyana wasu abubuwa masu amfani waɗanda ba a ambata a sama ba. Gabaɗaya, wannan koyarwa ce ta mataki-mataki, amma ba zan yi la'akari da wasu na asali ba ko, akasin haka, takamaiman lokuta. Ana yin duk ayyuka a cikin na'urar wasan bidiyo na gani na AWS, amma ana iya sake yin su ta hanyar shirye-shirye ta amfani da CloudFormation ko Terraform. A Adapty muna amfani da Terraform.

EC2 Ƙaddamar da Samfura

Wannan sabis ɗin yana ƙirƙirar ƙayyadaddun injuna waɗanda za a yi amfani da su. Ana sarrafa samfura a cikin EC2 -> Misalai -> Ƙaddamar da samfuri.

Hoton Injin Amazon (AMI) - saka hoton faifan da za a ƙaddamar da duk lokuta da shi. Don ECS, a mafi yawan lokuta yana da daraja amfani da ingantaccen hoto daga Amazon. Ana sabunta shi akai-akai kuma ya ƙunshi duk abin da ake buƙata don ECS yayi aiki. Don nemo ID na hoto na yanzu, je zuwa shafin Amazon ECS-ingantattun AMIs, zaɓi yankin da kake amfani da shi kuma ka kwafi AMI ID gareshi. Misali, ga yankin us-gabas-1, ID na yanzu a lokacin rubuta shine ami-00c7c1cf5bdc913ed. Dole ne a saka wannan ID a cikin Ƙayyade abin ƙima na al'ada.

Nau'in misali - nuna nau'in misali. Zaɓi wanda ya fi dacewa da aikinku.

Maɓalli na biyu (shiga) - saka takardar shaidar da za ku iya haɗawa da misalin ta hanyar SSH, idan ya cancanta.

Saitunan cibiyar sadarwa - ƙayyade sigogin cibiyar sadarwa. Dandalin sadarwa a mafi yawan lokuta ya kamata a sami Virtual Private Cloud (VPC). Kungiyoyin tsaro - ƙungiyoyin tsaro don al'amuran ku. Tun da za mu yi amfani da ma'auni a gaban al'amuran, Ina ba da shawarar ƙayyade ƙungiya a nan wanda ke ba da damar haɗin shiga kawai daga ma'auni. Wato, zaku sami ƙungiyoyin tsaro guda 2, ɗaya don daidaitawa, wanda ke ba da damar haɗin haɗin kai daga ko'ina akan tashar jiragen ruwa 80 (http) da 443 (https), na biyu don injuna, wanda ke ba da damar haɗi mai shigowa akan kowane tashar jiragen ruwa daga rukunin ma'auni. . Dole ne a buɗe hanyoyin haɗin waje a cikin ƙungiyoyin biyu ta amfani da ka'idar TCP zuwa duk tashar jiragen ruwa zuwa duk adireshi. Kuna iya iyakance tashoshin jiragen ruwa da adireshi don haɗin kai masu fita, amma sannan kuna buƙatar saka idanu akai-akai cewa ba ku ƙoƙarin samun damar wani abu akan tashar da aka rufe.

Ajiye (juzu'i) - ƙayyade sigogin faifai don injinan. Girman faifan ba zai iya zama ƙasa da abin da aka ƙayyade a cikin AMI ba; don Ingantaccen ECS shine 30 GiB.

Cikakkun bayanai - ƙayyade ƙarin sigogi.

Zaɓin siyayya - ko muna son siyan abubuwan tabo. Muna so, amma ba za mu duba wannan akwatin a nan ba; za mu saita shi a cikin Ƙungiyar Sikeli ta atomatik, akwai ƙarin zaɓuɓɓuka a can.

IAM bayanin martaba - nuna rawar da za a ƙaddamar da al'amuran. Domin al'amuran su gudana a cikin ECS, suna buƙatar izini, waɗanda galibi ana samun su a cikin rawar ecsBabban Matsayi. A wasu lokuta ana iya ƙirƙirar, idan ba haka ba, to anan manual kan yadda ake yin hakan. Bayan halitta, muna nuna shi a cikin samfuri.
Bayan haka akwai sigogi da yawa, a zahiri zaku iya barin ƙimar tsoho a ko'ina, amma kowannensu yana da bayyananniyar bayanin. A koyaushe ina kunna misalin ingantaccen EBS da T2/T3 Unlimited zažužžukan idan aka yi amfani da su fashewa lokuta.

Bayanan mai amfani - nuna bayanan mai amfani. Za mu gyara fayil ɗin /etc/ecs/ecs.config, wanda ya ƙunshi daidaitawar wakili na ECS.
Misalin abin da bayanan mai amfani zai iya kama:

#!/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 - ma'aunin yana nuna cewa misalin na gungu ne mai suna, wato wannan gungu zai iya sanya ayyukansa akan wannan uwar garken. Ba mu ƙirƙiri gungu ba tukuna, amma za mu yi amfani da wannan sunan lokacin ƙirƙirar shi.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true - ma'aunin yana ƙayyadaddun cewa lokacin da aka karɓi sigina don kashe misali tabo, duk ayyukan da ke kan sa yakamata a canza su zuwa matsayin Magudanar ruwa.

ECS_CONTAINER_STOP_TIMEOUT=1m - siga yana ƙayyade cewa bayan karɓar siginar SIGINT, duk ayyuka suna da minti 1 kafin a kashe su.

ECS_ENGINE_AUTH_TYPE=docker - ma'aunin yana nuna cewa ana amfani da tsarin Docker azaman hanyar ba da izini

ECS_ENGINE_AUTH_DATA=... - sigogin haɗin kai zuwa wurin rajistar kwantena masu zaman kansu, inda aka adana hotunan Docker na ku. Idan na jama'a ne, to ba kwa buƙatar saka wani abu.

Don dalilan wannan labarin, zan yi amfani da hoton jama'a daga Docker Hub, don haka saka sigogi ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA babu bukata.

Kyakkyawan sani: Ana ba da shawarar sabunta AMI akai-akai, saboda sabbin nau'ikan sabunta nau'ikan Docker, Linux, wakilin ECS, da sauransu. Don kar a manta game da wannan, zaku iya. saita sanarwar game da sakin sababbin sigogin. Kuna iya karɓar sanarwa ta imel da sabuntawa da hannu, ko za ku iya rubuta aikin Lambda wanda zai ƙirƙiri sabon sigar Ƙaddamar da Samfura ta atomatik tare da sabunta AMI.

EC2 Auto Scaling Group

Ƙungiya Sikeli ta atomatik tana da alhakin ƙaddamarwa da ƙima. Ana sarrafa ƙungiyoyi a cikin EC2 -> Ƙimar atomatik -> Sashen Ƙungiyoyin Ƙirar Kai.

Ƙaddamar da samfuri - zaɓi samfurin da aka ƙirƙira a mataki na baya. Mun bar tsoho version.

Zaɓuɓɓukan saye da nau'ikan misali - ƙididdige nau'ikan misalai don tari. Riƙe samfurin ƙaddamarwa yana amfani da nau'in misali daga Samfuran Ƙaddamarwa. Haɗa zaɓuɓɓukan sayayya da nau'ikan misali suna ba ku damar daidaita nau'ikan misali cikin sassauƙa. Za mu yi amfani da shi.

Tushen Buƙatar Zaɓuɓɓuka - adadin na yau da kullun, lokuta marasa tabo waɗanda koyaushe zasuyi aiki.

Kashi akan buƙata sama da tushe - yawan adadin lokuta na yau da kullun da tabo, 50-50 za a rarraba daidai, 20-80 ga kowane misali na yau da kullun 4 tabo za a tashe. Don dalilan wannan misalin, zan nuna 50-50, amma a zahiri muna yawan yin 20-80, a wasu lokuta 0-100.

Nau'in misali - Anan zaku iya ƙididdige ƙarin nau'ikan misalai waɗanda za a yi amfani da su a cikin tari. Ba mu taɓa amfani da shi ba saboda ban fahimci ainihin ma'anar labarin ba. Wataƙila wannan ya faru ne saboda iyaka akan takamaiman nau'ikan lokuta, amma ana iya ƙara su cikin sauƙi ta hanyar tallafi. Idan kun san aikace-aikacen, zan yi farin cikin karanta shi a cikin sharhi)

Gina API mai Matsala akan AWS Spot Misalai

Network - saitunan cibiyar sadarwa, zaɓi VPC da ƙananan raƙuman ruwa don injuna, a mafi yawan lokuta ya kamata ka zaɓi duk abubuwan da ke akwai.

Load daidaita - saitunan daidaitawa, amma za mu yi wannan daban, ba za mu taɓa wani abu a nan ba. Binciken lafiya za a kuma daidaita daga baya.

Girman rukuni - muna nuna iyaka akan adadin injina a cikin gungu da adadin injin da ake so a farkon. Adadin injuna a cikin gungu ba zai taɓa zama ƙasa da ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun bayanai ba kuma fiye da matsakaicin, ko da ya kamata sikeli ya faru bisa ga ma'auni.

Manufofin daidaitawa - sikelin sikelin, amma za mu ƙima dangane da ayyukan ECS masu gudana, don haka za mu saita sikelin daga baya.

Kariyar ma'aunin misali - kariya daga al'amuran daga gogewa lokacin da aka ƙirƙira ƙasa. Muna kunna shi don ASG kar ta goge injin da ke da ayyuka masu gudana. Mai Ba da Ƙarfin ECS zai kashe kariya ga al'amuran da ba su da ayyuka.

Sanya alamun - za ka iya saka tags ga misalai (don wannan, Tag sabon akwati dole ne a duba). Ina ba da shawarar ƙididdige alamar Suna, sannan duk al'amuran da aka ƙaddamar a cikin ƙungiyar za su sami suna iri ɗaya, kuma ya dace don duba su a cikin na'ura wasan bidiyo.

Gina API mai Matsala akan AWS Spot Misalai

Bayan ƙirƙirar ƙungiyar, buɗe shi kuma je zuwa sashin daidaitawa na ci gaba.Me yasa ba a iya ganin duk zaɓuɓɓuka a cikin na'ura wasan bidiyo a matakin ƙirƙira.

Manufofin ƙarewa - dokokin da ake la'akari lokacin da ake share al'amura. Ana amfani da su a cikin tsari. Mu yawanci muna amfani da waɗanda ke cikin hoton da ke ƙasa. Da farko, ana share abubuwan da ke da tsohuwar Ƙaddamar da Samfurin Ƙaddamarwa (misali, idan muka sabunta AMI, mun ƙirƙiri sabon sigar, amma duk abubuwan sun sami damar canzawa zuwa gare shi). Sannan an zaɓi al'amuran da suka fi kusa da sa'ar biyan kuɗi na gaba. Sannan kuma ana zabar tsofaffi bisa ranar da aka kaddamar.

Gina API mai Matsala akan AWS Spot Misalai

Kyakkyawan sani: don sabunta duk injuna a cikin tari, dacewa don amfani Musanya Misali. Idan kun haɗa wannan tare da aikin Lambda daga mataki na baya, zaku sami cikakken tsarin sabunta misali mai sarrafa kansa. Kafin sabunta duk injuna, dole ne ka musaki ma'auni-a kariyar ga dukkan lamura a cikin rukuni. Ba daidaitawa a cikin rukuni ba, amma kariya daga injunan kansu, ana yin wannan akan shafin gudanarwa na Misali.

Aikace-aikacen Load Balancer da EC2 Target Group

An ƙirƙiri ma'auni a cikin sashe na EC2 → Ma'auni Load → Load Balancers. Za mu yi amfani da Ma'aunin Load na Aikace-aikacen; ana iya karanta kwatancen nau'ikan ma'auni daban-daban a shafin sabis.

Masu sauraro - yana da ma'ana don yin tashar jiragen ruwa 80 da 443 da turawa daga 80 zuwa 443 ta amfani da dokokin daidaitawa daga baya.

Yankunan Kasancewa - a mafi yawan lokuta, muna zaɓar wuraren samun dama ga kowa.

Sanya Saitunan Tsaro - Ana nuna takardar shaidar SSL don ma'auni a nan, zaɓi mafi dacewa shine yi takardar shaida in ACM. Game da bambance-bambance Tsaro Policy ana iya karantawa a ciki takardun, za ka iya barin shi zaba ta tsohuwa ELBSecurityPolicy-2016-08. Bayan ƙirƙirar ma'auni, za ku gan shi Sunan DNS, wanda kuke buƙatar saita CNAME don yankinku. Misali, wannan shine yadda yake kallon Cloudflare.

Gina API mai Matsala akan AWS Spot Misalai

Ƙungiyar Tsaro - ƙirƙira ko zaɓi ƙungiyar tsaro don ma'auni, Na rubuta ƙarin game da wannan a sama a cikin EC2 Launch Template → Sashen saitunan cibiyar sadarwa.

Ƙungiyar Target - mun ƙirƙiri ƙungiyar da ke da alhakin tafiyar da buƙatun daga ma'auni zuwa injina da kuma duba samuwarsu don maye gurbin su idan akwai matsaloli. Nau'in manufa dole ne misali, layinhantsaki и Port kowane, idan kuna amfani da HTTPS don sadarwa tsakanin ma'auni da lokuta, to kuna buƙatar loda takaddun shaida zuwa gare su. Don dalilan wannan misalin, ba za mu yi wannan ba, za mu bar tashar jiragen ruwa 80 kawai.

Binciken lafiya - sigogi don duba ayyukan sabis. A cikin sabis na gaske, wannan yakamata ya zama buƙatun daban wanda ke aiwatar da mahimman sassa na dabarun kasuwanci; don dalilan wannan misalin, zan bar saitunan tsoho. Na gaba, zaku iya zaɓar tazarar buƙatun, lokacin ƙarewa, lambobin nasara, da sauransu. A cikin misalinmu, za mu nuna lambobin Nasara 200-399, saboda hoton Docker da za a yi amfani da shi ya dawo da lambar 304.

Gina API mai Matsala akan AWS Spot Misalai

Yi Rijista Target - Anan an zaɓi motocin don ƙungiyar, amma a cikin yanayinmu wannan za ta yi ta ECS, don haka kawai mu tsallake wannan matakin.

Kyakkyawan sani: a matakin ma'auni zaka iya kunna rajistan ayyukan da za'a adana a cikin S3 a cikin takamaiman tsari. Daga can za a iya fitar da su zuwa sabis na ɓangare na uku don nazari, ko za ku iya yin tambayoyin SQL kai tsaye akan bayanan da ke cikin S3 tare da amfani da Athena. Ya dace kuma yana aiki ba tare da wani ƙarin lamba ba. Ina kuma ba da shawarar kafa cire rajistan ayyukan daga guga na S3 bayan ƙayyadadden lokaci.

ECS Ma'anar Aiki

A cikin matakan da suka gabata, mun ƙirƙiri duk abin da ke da alaƙa da kayan aikin sabis; yanzu mun ci gaba don bayyana kwantenan da za mu ƙaddamar. Ana yin wannan a cikin sashin ECS → Ma'anar Aiki.

Kaddamar da dacewa nau'in - zaɓi EC2.

Ayyukan aiwatar da aikin IAM - zabi ecsTaskExecutionRole. Yin amfani da shi, ana rubuta rajistan ayyukan, ana ba da dama ga masu canjin sirri, da sauransu.

A cikin sashin Ma'anar Kwantena, danna Ƙara Container.

image - haɗi zuwa hoton tare da lambar aikin; don wannan misali zan yi amfani da hoton jama'a daga Docker Hub bitnami/node-misali: 0.0.1.

Iyakokin Ƙwaƙwalwa - iyakokin ƙwaƙwalwar ajiya don akwati. Limayyadaddun Hardarfi - iyaka mai ƙarfi, idan kwandon ya wuce ƙayyadaddun ƙimar, za a aiwatar da umarnin kashe docker, akwati zai mutu nan da nan. Limayyadadden Taushi - iyaka mai laushi, akwati na iya wuce ƙimar da aka ƙayyade, amma za a yi la'akari da wannan siga lokacin sanya ayyuka akan inji. Misali, idan injin yana da 4 GiB na RAM, kuma iyakar taushin kwantena shine 2048 MiB, to wannan injin yana iya samun matsakaicin ayyuka guda 2 masu gudana tare da wannan akwati. A zahiri, 4 GiB na RAM yana ɗan ƙasa da 4096 MiB, ana iya kallon wannan akan shafin Misalai na ECS a cikin tari. Iyaka mai laushi ba zai iya girma fiye da ƙaƙƙarfan iyaka ba. Yana da mahimmanci a fahimci cewa idan akwai kwantena da yawa a cikin aiki ɗaya, to ana taƙaita iyakokin su.

Taswirar tashar jiragen ruwa - a cikin tashar jiragen ruwa Mun nuna 0, wannan yana nufin cewa za a sanya tashar jiragen ruwa a hankali kuma ƙungiyar Target za ta kula da ita. Tashar kwantena - tashar tashar da aikace-aikacenku ke gudana galibi ana keɓance shi a cikin umarnin aiwatarwa, ko sanya shi a cikin lambar aikace-aikacen ku, Dockerfile, da sauransu. Misalin mu za mu yi amfani da 3000 saboda an jera a ciki Dockerfile hoton da ake amfani da shi.

Duba lafiya - sigogin duba lafiyar akwati, kar a ruɗe da wanda aka saita a cikin Ƙungiyar Target.

muhalli - saitunan yanayi. CPU raka'a - kama da iyakokin Ƙwaƙwalwar ajiya, game da processor kawai. Kowane processor core raka'a 1024, don haka idan uwar garken yana da dual-core processor kuma an saita kwantena zuwa 512, to ana iya ƙaddamar da ayyuka 4 tare da wannan akwati akan sabar guda ɗaya. Raka'o'in CPU koyaushe suna daidai da adadin muryoyin; ba za a iya samun ƙasa kaɗan daga cikinsu ba, kamar yadda lamarin yake tare da ƙwaƙwalwar ajiya.

umurnin - umarni don fara sabis a cikin akwati, duk sigogi an ƙayyade su ta hanyar waƙafi. Wannan na iya zama gunicorn, npm, da dai sauransu. Idan ba a bayyana ba, za a yi amfani da ƙimar umarnin CMD daga Dockerfile. Mun nuna npm,start.

Matsalolin muhalli - masu canjin yanayi na akwati. Wannan na iya zama ko dai bayanan rubutu mai sauƙi ko masu canjin sirri daga Manajan Sirrin ko Ma'ajiyar siga.

Adana da Logging - Anan za mu saita shiga cikin CloudWatch Logs (sabis na rajistan ayyukan daga AWS). Don yin wannan, kawai kunna Akwatin rajistar CloudWatch Logs ta atomatik. Bayan ƙirƙirar Ma'anar Task, rukunin rajistan ayyukan za a ƙirƙira ta atomatik a cikin CloudWatch. Ta hanyar tsoho, ana adana rajistan ayyukan a cikinsa har abada; Ina ba da shawarar canza lokacin Tsayawa daga Karɓata Karewa zuwa lokacin da ake buƙata. Ana yin wannan a cikin ƙungiyoyin Log na CloudWatch, kuna buƙatar danna kan lokacin yanzu kuma zaɓi sabon.

Gina API mai Matsala akan AWS Spot Misalai

Ƙungiyar ECS da Mai Ba da Ƙarfin ECS

Jeka sashen ECS → Ƙungiyoyi don ƙirƙirar tari. Mun zaɓi EC2 Linux + Networking azaman samfuri.

Sunan tari - mai mahimmanci, muna sanya a nan suna iri ɗaya kamar yadda aka ƙayyade a cikin sigar Ƙaddamar da Samfurin ECS_CLUSTER, a wajenmu - DemoApiClusterProd. Bincika Ƙirƙirar akwati mara komai. Zabi, za ka iya kunna Hankalin Kwantena don duba awo don ayyuka a cikin CloudWatch. Idan kun yi komai daidai, to a cikin sashin Misalin ECS za ku ga injunan da aka ƙirƙira a ƙungiyar Sikeli ta atomatik.

Gina API mai Matsala akan AWS Spot Misalai

Jeka tab Masu Ba da Ƙarfi kuma ƙirƙirar sabo. Bari in tunatar da ku cewa ana buƙata don sarrafa ƙirƙira da kashe injuna dangane da adadin ayyukan ECS masu gudana. Yana da mahimmanci a lura cewa ana iya sanya mai bayarwa zuwa rukuni ɗaya kawai.

Ƙungiyar Sikeli ta atomatik - zaɓi ƙungiyar da aka ƙirƙira a baya.

Gudanar da sikelin - ba da damar ta yadda mai bayarwa zai iya daidaita sabis ɗin.

Ƙarfin manufa % - kashi nawa ne na injuna makil da ayyuka muke bukata. Idan ka ayyana 100%, to duk injina koyaushe za su kasance cikin shagaltuwa da ayyuka masu gudana. Idan ka ƙayyade 50%, to, rabin motocin za su kasance masu kyauta. A wannan yanayin, idan aka yi tsalle mai kaifi a cikin kaya, nan da nan sabbin tasi za su sami motocin kyauta, ba tare da jira lokacin da za a tura su ba.

Kariyar ƙarewa da aka sarrafa - ba da damar, wannan siga yana bawa mai bada damar cire kariyar al'amura daga gogewa. Wannan yana faruwa lokacin da babu ayyuka masu aiki akan injin kuma yana ba da damar iyawar Target%.

Sabis na ECS da saitin sikeli

Mataki na ƙarshe :) Don ƙirƙirar sabis, kuna buƙatar zuwa gungu wanda aka ƙirƙira a baya akan shafin Sabis.

Nau'in ƙaddamarwa - kana buƙatar danna Canja zuwa dabarun samar da ƙarfin aiki kuma zaɓi masu samarwa da aka ƙirƙira a baya.

Gina API mai Matsala akan AWS Spot Misalai

Ma'anar Aiki - zaɓi Ma'anar Aiki da aka ƙirƙira a baya da bita.

Sunan sabis - don guje wa rudani, koyaushe muna nuna iri ɗaya da Ma'anar Aiki.

Nau'in sabis - ko da yaushe Replica.

Yawan ayyuka - adadin da ake so na ayyuka masu aiki a cikin sabis. Ana sarrafa wannan siga ta hanyar sikeli, amma har yanzu dole ne a ƙayyade.

Mafi ƙarancin lafiya kashi и Mafi girman kashi - ƙayyade halayen ayyuka yayin ƙaddamarwa. Matsakaicin ma'auni shine 100 da 200, yana nuna cewa a lokacin tura adadin ayyukan zai karu sau da yawa, sannan komawa zuwa darajar da ake so. Idan kuna da aiki guda 1 yana gudana, min = 0, da max = 100, to lokacin turawa za'a kashe shi, bayan haka kuma za'a tayar da wani sabo, ma'ana, zai ragu. Idan aiki 1 yana gudana, min = 50, max = 150, to aikin ba zai faru ba kwata-kwata, saboda ba za a iya raba ɗawainiya biyu ko ƙara sau ɗaya da rabi ba.

Nau'in turawa - bar sabuntawar Rolling.

Samfuran Sanyawa - dokokin sanya ayyuka a kan inji. Tsohuwar ita ce AZ Balanced Spread - wannan yana nufin cewa kowane sabon ɗawainiya za a sanya shi akan sabon misali har sai injuna a duk wuraren samuwa sun tashi. Mu yawanci muna yin BinPack - CPU da Spread - AZ; tare da wannan manufar, ana sanya ayyuka da yawa sosai akan na'ura ɗaya kowace CPU. Idan ya zama dole don ƙirƙirar sabon na'ura, an ƙirƙira shi a cikin sabon yankin samuwa.

Gina API mai Matsala akan AWS Spot Misalai

Nau'in ma'aunin nauyi - zaɓi Ma'aunin Load na Aikace-aikacen.

Matsayin IAM Service - zabi ecsServiceRole.

Load sunan ma'auni - zaɓi madaidaicin ƙirƙira a baya.

Lokacin alherin duba lafiya - dakata kafin yin gwajin lafiya bayan fitar da sabon aiki, yawanci muna saita shi zuwa daƙiƙa 60.

Kwantena don ɗaukar ma'auni - a cikin sunan ƙungiyar Target, zaɓi rukunin da aka ƙirƙira a baya, kuma komai zai cika ta atomatik.

Gina API mai Matsala akan AWS Spot Misalai

Sabis Auto Sikelin - sigogi na sikelin sabis. Zaɓi Sanya Sabis na Sikeli ta atomatik don daidaita ƙimar sabis ɗin da kuke so. Mun saita mafi ƙanƙanta da matsakaicin adadin ayyuka lokacin ƙira.

Matsayin IAM don Sikelin Mota na Sabis - zabi AWSServiceRoleForApplicationAutoScaling_ECSService.

Manufofin sikelin ɗawainiya ta atomatik - dokoki don sikelin. Akwai iri guda 2:

  1. Bin sawun manufa - bin diddigin ma'auni (amfani da CPU/RAM ko adadin buƙatun kowane ɗawainiya). Misali, muna son matsakaicin nauyin sarrafawa ya zama 85%, lokacin da ya zama mafi girma, za a ƙara sabbin ayyuka har sai ya kai ƙimar da ake so. Idan nauyin ya kasance ƙasa, to, za a cire ayyuka, akasin haka, sai dai idan ba a kunna kariya daga raguwa ba (Kashe sikelin shiga).
  2. Sikelin mataki - amsa ga wani lamari na sabani. Anan zaku iya saita amsa ga kowane lamari (CloudWatch Alarm), idan ya faru, zaku iya ƙara ko cire takamaiman adadin ayyuka, ko saka ainihin adadin ayyuka.

Sabis na iya samun ka'idojin ƙira da yawa, wannan na iya zama da amfani, babban abu shine tabbatar da cewa basu sabawa juna ba.

ƙarshe

Idan kun bi umarnin kuma kuka yi amfani da hoton Docker iri ɗaya, sabis ɗinku yakamata ya dawo da shafi kamar wannan.

Gina API mai Matsala akan AWS Spot Misalai

  1. Mun ƙirƙiri samfuri bisa ga abin da aka ƙaddamar da duk injunan sabis ɗin. Mun kuma koyi yadda ake sabunta inji lokacin da samfuri ya canza.
  2. Mun tsara sarrafa siginar tasha misali tabo, don haka a cikin minti daya bayan karɓar ta, ana cire duk ayyukan da ke gudana daga injin, don haka babu abin da ya ɓace ko katsewa.
  3. Mun tayar da ma'auni don rarraba nauyin a ko'ina cikin inji.
  4. Mun ƙirƙiri sabis ɗin da ke gudana akan abubuwan tabo, wanda ke rage farashin injin da kusan sau 3.
  5. Mun daidaita autoscaling a cikin biyu kwatance don rike da ƙarin ayyuka ba tare da jawo downtime farashin.
  6. Muna amfani da Mai ba da ƙarfi don aikace-aikacen ya sarrafa abubuwan more rayuwa (injuna) ba ta wata hanyar ba.
  7. Muna da kyau.

Idan kuna da tsinkaya masu tsini a cikin kaya, misali kuna talla a cikin babban kamfen ɗin imel, zaku iya saita sikelin ta tsarin lokaci.

Hakanan zaka iya ma'auni bisa bayanai daga sassa daban-daban na tsarin ku. Misali, muna da ayyuka aika fitar da daidaitattun tayin talla masu amfani da aikace-aikacen wayar hannu. Wani lokaci ana aika kamfen ga mutane 1M+. Bayan irin wannan rarraba, ana samun karuwar buƙatun zuwa API, tun da yawancin masu amfani suna shiga cikin aikace-aikacen a lokaci guda. Don haka idan muka ga cewa akwai ƙarin madaidaitan alamomi a cikin jerin gwano don aika sanarwar turawa, nan da nan za mu iya ƙaddamar da ƙarin injuna da ayyuka da yawa don kasancewa cikin shiri don ɗaukar nauyi.

Zan yi farin ciki idan kun gaya mani a cikin maganganun maganganu masu ban sha'awa na amfani da lokuta tabo da ECS ko wani abu game da ƙima.

Nan ba da jimawa ba za a sami labarai game da yadda muke aiwatar da dubban al'amuran nazari a cikin daƙiƙa guda akan ɗimbin yawa marasa sabar (tare da kuɗi) da kuma yadda tura sabis ke aiki ta amfani da GitLab CI da Terraform Cloud.

Biyan kuɗi zuwa gare mu, zai zama mai ban sha'awa!

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Kuna amfani da misalin tabo a samarwa?

  • 22,2%Da 6

  • 66,7%No18

  • 11,1%Na koyi game da su daga labarin kuma na shirya yin amfani da su3

Masu amfani 27 sun kada kuri'a. Masu amfani 5 sun kaurace.

source: www.habr.com

Add a comment