Í þessari kennslu vil ég sýna þér hvernig á að setja upp sýnishorns Rails-forrit með Amazon Elastic Container Service (ECS).
Hér er tómt.
Skulum búa það til með því að keyra járnbrautir nýtt sýnishorns-rails-forrit, síðan búa til grunnstjórnendaaðgerð rails g controller Kveðja vísitala og stilla leiðir til rótarbrautarinnar sem ”root to: welcome#index".
Markmið okkar er að sjá þessa velkominsíðu útfærða með ECS.
Búðu til geymslu með Amazon Elastic Container Registry (ECR)
Amazon ECR er gámamiðlæging. Við munum nota hana til að geyma myndir forritsins okkar og sækja þær þaðan svo þær keyri á ECS.
Farðu í þitt AWS panel, leitaðu að Teygjanlegur ílátur Skrá og smelltu Byrjaðu. Þú munt sjá skjáinn hér að neðan:
Við munum búa til einka-geymslu og nefna hana sýnishorn-rails-forrit.
Geymslan er til staðar, en hún er tóm. Við viljum að hún innihaldi mynd forritsins okkar. Þetta er næsta skref.
# kasta villum ef Gemfile hefur verið breytt síðan Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
CMD ["rails", "server", "-b", "0.0.0.0"]
Þá ættum við að búa til ímynd og senda hana í ECR-geymsluna.
Áður en við gerum það skulum við forkompíla eignir með `rails assets:precompile`.
Nú skaltu fara í þann geymslustað sem búinn var til. Efst á skjánum munt þú sjá a Skoða push-skipanir hnappur með upplýsingum um hvernig á að gera þetta.
Í mínu tilfelli (Linux) keyri ég það með þessum AWS leiðbeiningum:
Gakktu úr skugga um að notandinn þinn hafi heimild til að framkvæma þessa aðgerð. Ég bætti AmazonElasticContainerRegistryPowerUser-stefnu við notandann minn, sem lítur svona út:
Ég vil að ytri heimurinn geti tengst eingöngu Application Load Balancer-inum mínum. Hann mun senda umferð til gámanna sem keyra í ECS-þyrpingunni okkar.
Farðu á EC2-þjónustur -> Aðlögun álags -> Hleðslujafnara, smelltu Búðu til álagsjafnvægi, velja Forritabyrðajafnari og smelltu á Búa til hnappur.
Settu nafn þess á sýnishorn-rails-app-alb, notaðu sjálfgefna VPC-ið þitt og veldu öll undarnet þess.
Við erum eftir með Öryggishópar og Hlustendur og leiðsögn kafla.
Öryggishópar
Við munum búa til nýja öryggishóp fyrir álagsjafnvægið okkar. Hann virkar eins og eldveggur; við munum setja reglur fyrir innkomandi og útgangandi umferð. Við viljum samþykkja innkomandi HTTP-umferð (TCP-port 80) og leyfa alla útgangandi umferð.
Til að gera þetta, smelltu á “Búðu til nýja öryggishóp”tengill.
Í kaflanum “Grunnupplýsingar”, stilltu nafn og lýsingu, skildu eftir sjálfgefna VPC.
Í mínu tilfelli – nafn: “sýnishorn-rails-app-alb-sg”, lýsing: “http utanfrá, allt innanfrá”
Bættu við innkomandi reglu með gerð: HTTP og heimild: Hvar sem er-IPv4. Láttu útgöngureglur vera óbreyttar.
Smelltu Búa til öryggishóp, farðu svo aftur í flipann þar sem þú varst að búa til Application Load Balancer, endurnýjaðu öryggishópana og bættu við þeim sem við höfum nýlega búið til, fjarlægðu sjálfgefna hópinn.
Hlustendur og leiðsögn
Í þessum hluta munum við skilgreina hvert við viljum að álagsjafnari sendi umferð. Láttu vera HlustandiSamkomulag og Höfn sem HTTP og 80, þar sem þetta er nákvæmlega það sem við viljum, og smelltu á “Búa til markhóp”tengill.
Settu nafnið á “sýnishorn-rails-app-alb-tg”. Eina breytingin er portnúmerið. Við munum senda það á port 3000 þar sem það er fyrir Rails-forritið okkar. Hunsaðu næsta skref (Skráðar skotmarkmið) og búa til markhópinn.
Farðu nú aftur í flipann þar sem við vorum að búa til Application Load Balancer, endurnýjaðu markhópinn og veldu þann sem við höfum nýlega búið til.
Við höfum forritalegra álagsjafnvægið okkar tilbúið, nú skulum við leika okkur með ECS.
Að búa til ECS-þyrpingu
Það eru margir ógnvekjandi hugtök sem þú munt sjá – klasa, verkefni, verkefnadefinition, þjónustur. Til að einfalda málið skaltu hugsa um klasann sem hóp netþjóna (EC2-dæmi). Á hverjum þeirra keyrum við verkefni, sem eru einfaldlega hópur af gámum sem keyra saman. Verkefnislýsing lýsir hvaða gámar eru í tilteknum hópi og hvaða auðlindir við viljum úthluta þeim (minni, örgjörvi). Þjónustur fylgjast með þessum verkefnum til að tryggja að í klasanum okkar séu alltaf réttan fjölda heilbrigðra verkefna í gangi.
Með þetta í huga skulum við búa til klasann okkar.
Farðu á ECS-síðuna og smelltu á Klasar tengill og Búa til klasa hnappur. Veldu “EC2 + Linux netverk”einn og smella Næsta skref.
Settu nafn klasans í “sýnishorn-rails-app-þyrping”Veldu EC2-dæmigerðstýpu; ég valdi t2-micro þar sem hún er fáanleg í ókeypis þrepi. Láttu fjölda eintaka vera 1.
Í netkerfis kaflanum skaltu nota sjálfgefna VPC-ið þitt og velja öll undarnet þess. Smelltu á Búa til, bíddu smá og voilà, við höfum nýjan ECS-klúster tilbúinn.
Verkefnislýsing
Smelltu á Verkefnislýsingar tengill, þá Búðu til nýja verkefnisskilgreiningu hnappur. Veldu EC2 valkostur og smella Næsta skref. Forritið sem við ætlum að keyra er mjög einfalt, svo við þurfum aðeins nokkra valkosti hér.
Settu Verkefnislýsing nafn til “sýnishorn-rails-forrit”, farðu síðan beint á Skjálýsingar kafla og smelltu á “Bæta við ílát”. Nefndu ílátið sem “sýnishorn-rails-forrit”, og stilltu myndstaðsetningu í sniði “geymslu-slóð/mynd:merki”Í nýrri vafraglugga farðu í ECR til að afrita mynd-URI. Í mínu tilfelli var það: “212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest”.
Settu minnismörk þín á ráðlagða 300–500 MiB. Nú kemur flóknasta atriðið – portakortlagning.
Forritið okkar keyrir í gám á höfn 3000. Settu því 3000 sem gámahöfn. Við sláum inn 0 sem gestahöfn, sem í raun þýðir að valið er handahófskennd höfn. Sem betur fer mun Application Load Balancer-inn okkar þekkja þessa höfnarmyndun og geta beint umferðinni rétt. Við getum jafnvel keyrt mörg verkefni á þessari einu einingu.
Bættu við umhverfisbreytunni Umhverfi Rails og stilltu það á framleiðsla.
Nú skaltu smella Bæta við að bæta við gámabreytingu okkar og smella Búa til til að ljúka uppsetningu verkefnisskilgreiningar.
Þjónusta
Við höfum klasann okkar, álagsjafnvægið og verkefnisskilgreininguna. Nú verðum við einhvern veginn að keyra þessi verkefni innan klasans. Þetta er hlutverk þjónustna. Farðu í nýlega búinn klasann og veldu Þjónusta Smelltu á flipann og smelltu á Búa til hnappur.
Settu gerð ræsingu á EC2, bættu við nafni “sýnishorn-rails-app-þjónusta”. Stilltu fjölda verkefna á 1 og smelltu Næsta skref. Á þessari síðu skaltu velja hringkassahnappinn fyrir Application Load Balancer og velja núverandi IAM-hlutverk fyrir hann. Í kaflanum “Íláti til álagsjafnvægis” ættirðu þegar að hafa slegið inn rétt íláti “sample-rails-app:0:3000”, og smelltu síðan á “Bæta við álagsjafnvægi”.”
Fyrir “Production listener port” veldu 80:HTTP; sem nafn markhópsins notaðu það sem við bjuggum til áður – “sýnishorn-rails-app-alb-tg”og smelltu Næsta skref. Fara Sjálfvirk stærðarstilling valkostir eins og þeir eru, smelltu Næsta skref og Búa til þjónustu.
Uppfæra ECS öryggishópinn
Þú getur farið á síðuna fyrir búinn klasa og athugað hann. Verkefni Í flipunum ætti eitt verkefni að vera í gangi. Þjónustan hefur ræst það. Nú skaltu fara á EC2 þjónustusíðuna, smella á Load Balancers og skoða upplýsingar um Application Load Balancer okkar. Þar ættir þú að sjá DNS-nafn þess. Afritaðu það og opnaðu í vafranum. Það ætti að vísa þér á appið okkar. Því miður fáum við “504 gateway tímaút” villa.
Vandamálið er í öryggishópi klasans okkar. Inntaksreglur hans leyfa ekki umferð sem berst frá álagsjafnvægi. Til að laga þetta skaltu fara aftur í EC2-vitanum og smella á Öryggishópar tengill. Það er nýr hópur sem var búinn til í ferlinu við klasa-sköpun. Hann ætti að heita með nafni sem byrjar á “EC2ContainerService-dæmi-rails-app-þyrping”. Smelltu á það og breyttu innkomandi reglum. Þar sem við viljum leyfa alla umferð frá VPC-inu okkar skaltu fara í Amazon VPC-stjórnborðið og athuga hvaða IPv4 CIDR VPC-ið þitt er. Stilltu reglutegundina á “Allur umferð”og uppspretta IPv4 CIDR. Vistaðu þessa reglu og reyndu að hlaða DNS-nafninu á jafnvægishlutann.