window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Rails-rakenduse kasutuselevõtt Amazon ECSiga - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-11-17
Tarkvaraarendus

Rails-rakenduse kasutuselevõtt Amazon ECSiga

The Codest

Marcin Doliwa

Software Engineer

Selles õpetuses näitan teile, kuidas võtta kasutusele Railsi näidisrakendus, kasutades Amazon Elastic Container Service'i (ECS).

Loome selle, käivitades rööpad uus näidisrööpad-rakendus, seejärel genereeritakse põhiline kontrolleri tegevus rööbasteed g kontroller Tere tulemast indeks ja marsruutide määramine juurtepidi kui `juurtühi: welcome#index".

Meie eesmärk on näha seda tervituslehte ECSi abil kasutusele võetuna.

Luua repositoorium Amazon Elastic Container Registry (ECR) abil

Amazon ECR on konteinerite register. Me kasutame seda oma rakenduse kujutiste salvestamiseks ja tõmbame need sealt välja, et need ECS-is jookseksid.

Mine oma AWS paneel, otsi Elastne konteiner
Register
ja klõpsake Alusta. Näete allolevat ekraani:

repositoorium koos Amazon Elastic Container Registry'ga

Loome privaatse repositooriumi ja anname sellele nimeks sample-rails-app.

Hoidla on olemas, kuid see on tühi. Me tahame, et see sisaldaks meie rakenduse pilti. See on järgmine samm.

# vigu, kui Gemfile'i on muudetud alates Gemfile.lock'ist.

RUN bundle config --global frozen 1

WORKDIR /app

COPY Gemfile Gemfile.lock ./

RUN bundle install

COPY .

CMD ["rails", "server", "-b", "0.0.0.0.0"]

Seejärel peaksime looma kujutise ja lükkama selle ECR-i repositooriumi.

Enne seda kompileerime varad eelkompileerimisega `rails assets:precompile`.

Nüüd minge loodud repositooriumi. Ekraani ülaosas näete ekraani allosas Vaata push-käske nuppu üksikasjadega selle kohta, kuidas seda teha.

Minu puhul (Linux) käivitan seda nende AWS-i juhistega:

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 212516879399.dkr.ecr.eu-central-1.amazonaws.com

docker build -t sample-rails-app .

docker tag sample-rails-app:latest 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

docker push 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

Veenduge, et teie kasutajal on lubatud seda toimingut teha. Lisasin oma kasutajale AmazonElasticContainerRegistryPowerUser poliitika, mis näeb välja selline:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:DeleteRegistryPolicy",
                "ecr:PutRegistryPolicy",
                "ecr:PutReplicationConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ecr:*",
            "Resource": "arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

Meil on meie dokkeri kujutis valmis.

Rakenduse koormuse tasakaalustaja loomine

Ma tahan, et välismaailmaga oleks võimalik ühendust luua ainult minu rakenduse koormuse tasakaalustaja (Application Load Balancer). See edastab liiklust konteineritele, mis töötavad meie ECS-i klastris.

Mine edasi EC2 teenused -> Koormuse tasakaalustamine -> Koormuse tasakaalustajad, klõpsake Koormuse tasakaalustaja loomine, valige Rakenduse koormuse tasakaalustaja ja klõpsake Loo nuppu.

Määra selle nimeks sample-rails-app-alb, kasutage oma vaikimisi VPC-d ja valige kõik selle alamvõrgud.

Meil on jäänud Turvarühmad ja Kuulajad ja marsruutimine sektsioonid.

Turvarühmad

Me loome meie koormuse tasakaalustaja jaoks uue turvarühma. See töötab nagu tulemüür; me kehtestame reeglid sissetulevale ja väljaminevale liiklusele. Me tahame aktsepteerida sissetulevat http-liiklust (TCP port 80) ja lubada kogu väljaminevat liiklust. 

Selleks klõpsake nuppu "Uue turvarühma loomine" link.

Jaotises "Põhilised üksikasjad", määrake nimi ja kirjeldus, jätke vaikimisi VPC.

Minu puhul - nimi: "sample-rails-app-alb-sg", kirjeldus: "http väljastpoolt, kõik seestpoolt"

Lisa sissetuleva reegli Type: HTTP ja allikas: Anywhere-IPv4. Jäta väljaminevad reeglid nii, nagu nad on.

Klõpsake luua turvarühm, siis minge tagasi vahekaardile, kus te lootsite rakenduse koormuse tasakaalustaja, värskendage turvarühmi ja lisage see, mille me just lõime, eemaldage vaikimisi loodud.

Kuulajad ja marsruutimine

Selles jaotises määratleme, kuhu me tahame, et koormustasakaalustaja edastaks liiklust. Jäta Kuulaja Protokoll ja Sadam kui HTTP ja 80, kuna see on täpselt see, mida me tahame, ja klõpsake "Sihtrühma loomine" link.

Määrake nimeks "sample-rails-app-alb-tg". Ainus muudatus on sadama number. Me anname selle edasi port 3000, kuna see on meie Rails rakenduse jaoks. Ignoreerige järgmist sammu (Registreeritud eesmärgid) ja luua sihtrühm.

Nüüd minge tagasi vahekaardile, kus me lõime rakenduse koormuse tasakaalustaja, värskendage sihtrühma ja valige see, mille me just lõime.

Meie rakenduse koormuse tasakaalustaja on valmis, nüüd mängime ECSiga.

ECS-klastri loomine

Seal on palju hirmuäratavaid termineid, mida te näete - klastrid, ülesanded, ülesannete määratlus, teenused. Et asi oleks lihtsam, mõtle klastrist kui serverite (EC2 instantside) grupist. Igaühel neist käivitame ülesandeid, mis on lihtsalt grupp konteinereid, mis töötavad koos. Ülesannete definitsioon kirjeldab, millised konteinerid on antud grupis ja milliseid ressursse me tahame neile anda (mälu, cpu). Teenused hoiavad neil ülesannetel silma peal, et meie klastris jookseks alati õige arv terveid ülesandeid.

Seda silmas pidades loome oma klastri.

Mine ECSi lehele ja klõpsa nupule Klastrid link ja Klastri loomine nuppu. Valige "EC2 + Linuxi võrgustik" üks ja klõpsake Järgmine samm. 

Määrake klastri nimeks "sample-rails-app-cluster". Valige EC2 instantsi tüüp, mina võtsin t2-micro, kuna see on saadaval Free Tier paketi raames. Jäta instantside arvuks 1. 

Kasutage võrguosas oma vaikimisi VPC-d ja valige kõik selle alamvõrgud. Vajuta Create, oota natuke ja voila, meil on uus ECS Cluster loodud.

Ülesande määratlus

Klõpsake nuppu Ülesannete määratlused link, siis Uue ülesande määratluse loomine nuppu. Valige EC2 valik ja klõpsake Järgmine samm. Rakendus, mida me käivitame, on väga lihtne, nii et meil on siin vaja ainult mõned valikud. 

Komplekt Ülesande määratlus nimi "sample-rails-app", siis minge otse Konteineri määratlused sektsioonis ja klõpsake "Lisage konteiner". Konteineri nimi on "sample-rails-app" ja määrata pildi asukoht formaadis "repository-url/image:tag". Uues brauseri vahekaardis minge ECR-i, et kopeerida pildi URI. Minu puhul oli see: "212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".

Seadke oma mälupiiranguks soovitatav 300-500MiB. Nüüd kõige keerulisem asi - Port Mapping.

Meie rakendus töötab konteineri sees sadamas 3000. Seega pane 3000 konteineri porti. Me sisestame 0 kui host port, mis põhimõtteliselt tähendab, et ta valib juhusliku pordi. Õnneks teab meie rakenduse koormuse tasakaalustaja seda pordi kaardistamist ja suudab liiklust õigesti suunata. Me võime isegi mitu ülesannet sellel ühel instantsil käivitada. 

Lisage keskkonnamuutuja RAILS_ENV ja seadistada see tootmine.

Nüüd klõpsa Lisa lisada meie konteineri määratlus ja klõpsata Loo et lõpetada ülesande määratluse seadistamine.

Teenus

Meil on meie klastri, koormuse tasakaalustaja ja ülesannete määratlus. Nüüd peame neid ülesandeid kuidagi meie klastri sees käivitama. See on teenuste ülesanne. Minge äsja loodud klastrisse, valige Teenused vahekaart ja klõpsa Loo nuppu. 

Määrake käivitamise tüübiks EC2, lisage nimi "sample-rails-app-service". Määrake ülesannete arvuks 1 ja klõpsake Järgmine samm. Valige sellel lehel valikunupp Application Load Balancer ja valige selle jaoks olemasolev IAM-roll. "Container to load balance" sektsioonis peaks olema juba sisestatud õige konteiner "sample-rails-app:0:3000", seejärel klõpsake "Add to load balancer".

Valige "Tootmise kuulaja port" jaoks 80:HTTP; sihtrühma nimeks kasutage seda, mille me eelnevalt lõime - "sample-rails-app-alb-tg" ja klõpsake Järgmine samm. Jäta Automaatne skaleerimine valikud nagu nad on, klõpsake Järgmine samm ja Teenuse loomine.

ECSi turvarühma ajakohastamine

Saate minna loodud klastri lehele ja kontrollida Ülesanded vahekaardid, peaks olema üks ülesanne käimas. Teenus on selle käivitanud. Nüüd minge EC2 teenuse lehele, klõpsake Load Balancers ja vaadake meie Application Load Balancer'i andmeid. Sul peaks seal olema selle DNS nimi. Kopeeri see ja ava brauseris. See peaks suunama teid meie rakendusele. Kahjuks saame "504 gateway time-out" viga. 

Probleem on meie klastri turvarühmas. Selle sissetulevad reeglid ei luba koormustasakaalustajalt sissetulevat liiklust. Selle parandamiseks minge tagasi EC2 paneelile ja klõpsake nuppu Turvarühmad link. On olemas uus rühm, mis loodi klastri loomise käigus. Selle nimi peaks algama sõnaga "EC2ContainerService-sample-rails-app-cluster". Klõpsake sellel ja redigeerige sissetulevaid reegleid. Kuna me tahame lubada mis tahes liiklust meie VPC-st, minge Amazon VPC-paneelile ja kontrollige, mis on teie VPC IPv4 CIDR. Määrake reegli tüübiks "Kogu liiklus" ja allikas IPv4 CIDR. Salvestage see reegel ja proovige laadida tasakaalustaja DNS-nime. 

Loodetavasti näete te sama, mida mina 🙂 .

Loe edasi

GraphQL Ruby. Kuidas on tulemuslikkus?

Rööpad ja muud transpordivahendid

Railsi arendamine TMUX, Vim, Fzf + Ripgrep abil

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian