window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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-sovelluksen käyttöönotto Amazon ECS:n avulla - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2021-11-17
Ohjelmistokehitys

Rails-sovelluksen käyttöönotto Amazon ECS:n avulla

Codest

Marcin Doliwa

Software Engineer

Tässä opetusohjelmassa haluan näyttää, miten esimerkin Rails-sovellus otetaan käyttöön Amazon Elastic Container Service (ECS) -palvelun avulla.

Luodaan se ajamalla rails new sample-rails-app, minkä jälkeen luodaan ohjaimen perustoiminto kiskot g ohjain Tervetuloa indeksi ja asettamalla reitit juuripolulle `root to: welcome#index'.

Tavoitteenamme on, että tämä tervetulosivu otetaan käyttöön ECS:n avulla.

Luo arkisto Amazon Elastic Container Registry (ECR) -palvelun avulla.

Amazon ECR on konttirekisteri. Käytämme sitä sovelluksemme kuvien tallentamiseen ja vedämme ne sieltä, jotta ne toimivat ECS:ssä.

Mene omaan AWS paneeli, etsi Elastinen säiliö
Rekisteri
ja klikkaa Aloita. Näet alla olevan näytön:

arkisto Amazon Elastic Container Registryn kanssa

Luomme yksityisen arkiston ja nimeämme sen nimellä sample-rails-app.

Arkisto on olemassa, mutta se on tyhjä. Haluamme sen sisältävän sovelluksemme kuvan. Tämä on seuraava vaihe.

# heittää virheitä, jos Gemfile-tiedostoa on muutettu Gemfile.lockin jälkeen.

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"]

Sitten meidän pitäisi rakentaa kuva ja työntää se ECR-tietovarastoon.

Ennen sitä, käännetään omaisuuserät valmiiksi komennolla `rails assets:precompile`.

Siirry nyt luotuun arkistoon. Näytön yläreunassa on näkymä Näytä push-komennot painiketta, jossa on lisätietoja siitä, miten tämä tehdään.

Omassa tapauksessani (Linux) käytän näitä AWS:n ohjeita:

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

Varmista, että käyttäjälläsi on lupa tehdä tämä toiminto. Lisäsin käyttäjälleni AmazonElasticContainerRegistryPowerUser-käytännön, joka näyttää tältä:

{
    "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/*"
        }
    ]
}

Meillä on valmis dokkarikuvamme.

Sovelluksen kuormituksen tasapainottajan luominen

Haluan, että ulkomaailma voi muodostaa yhteyden vain Application Load Balanceriin. Se välittää liikennettä ECS-klusterissamme toimiviin kontteihin.

Siirry osoitteeseen EC2-palvelut -> Kuormituksen tasapainottaminen -> Kuormituksen tasaajat, klikkaa Luo kuorman tasapainottaja, valitse Sovelluksen kuormituksen tasapainottaja ja napsauta Luo nappi.

Aseta sen nimeksi sample-rails-app-alb, käytä oletus-VPC:täsi ja valitse kaikki sen aliverkot.

Jäljelle jäävät Turvallisuusryhmät ja Kuuntelijat ja reititys osastot.

Turvallisuusryhmät

Luomme uuden suojausryhmän kuormantasaajallemme. Se toimii kuin palomuuri; asetamme säännöt saapuvalle ja lähtevälle liikenteelle. Haluamme hyväksyä saapuvan http-liikenteen (TCP-portti 80) ja sallia kaiken lähtevän liikenteen. 

Tee tämä napsauttamalla "Luo uusi suojausryhmä" linkki.

Jaksossa "Perustiedot", aseta nimi ja kuvaus, jätä oletusarvoinen VPC.

Minun tapauksessani - nimi: "sample-rails-app-alb-sg", kuvaus: "http ulkopuolelta, kaikki sisäpuolelta"

Lisää saapuvan säännön tyyppi: HTTP ja Lähde: Anywhere-IPv4. Jätä lähtevät säännöt ennalleen.

Klikkaa luo suojausryhmä, palaa sitten välilehdelle, jossa luot Application Load Balancerin, päivitä suojausryhmät ja lisää juuri luomaamme suojausryhmää ja poista oletusryhmä.

Kuuntelijat ja reititys

Tässä osiossa määritetään, mihin haluamme kuormantasaajan ohjaavan liikennettä. Jätä Kuuntelija Pöytäkirja ja Satama HTTP:ksi ja 80:ksi, koska haluamme juuri tämän, ja klikkaa "Luo kohderyhmä" linkki.

Aseta nimeksi "sample-rails-app-alb-tg". Ainoa muutos on portin numero. Me annamme sen portille 3000, koska se on Rails-sovelluksemme portti. Jätä seuraava vaihe huomiotta (Rekisteröidyt kohteet) ja luo kohderyhmä.

Mene nyt takaisin välilehdelle, jossa olimme luomassa Application Load Balanceria, päivitä kohderyhmä ja valitse juuri luomamme kohderyhmä.

Application Load Balancer on valmis, nyt pelataan ECS:n kanssa.

ECS-klusterin luominen

Tulet näkemään paljon pelottavia termejä - klusteri, tehtävät, tehtävien määrittely, palvelut. Yksinkertaistaaksesi asiaa ajattele klusteria palvelinryhmänä (EC2-instansseina). Jokaisella niistä ajetaan tehtäviä, jotka ovat vain ryhmä kontteja, jotka toimivat yhdessä. Tehtävien määrittelyssä kuvataan, mitkä kontit kuuluvat tiettyyn ryhmään ja mitä resursseja haluamme niille antaa (muistia, suorittimia). Palvelut pitävät silmällä näitä tehtäviä varmistaakseen, että klusterissamme on aina oikea määrä terveitä tehtäviä käynnissä.

Kun tämä on mielessä, luodaan klusterimme.

Siirry ECS-sivulle ja napsauta painiketta Klusterit linkki ja Luo klusteri nappi. Valitse "EC2 + Linux-verkko" yksi ja klikkaa Seuraava askel. 

Aseta klusterin nimeksi "sample-rails-app-cluster". Valitse EC2-instanssityyppi, minä valitsin t2-micro-instanssin, koska se on saatavilla Free Tier -paketin sisällä. Jätä instanssien lukumääräksi 1. 

Käytä verkko-osassa oletusarvoista VPC:täsi ja valitse kaikki sen aliverkot. Napsauta create, odota hetki ja voila, uusi ECS-klusteri on luotu.

Tehtävän määritelmä

Napsauta Tehtävän määritelmät linkki, sitten Luo uusi tehtävämäärittely nappi. Valitse EC2 ja napsauta Seuraava askel. Käyttämämme sovellus on hyvin yksinkertainen, joten tarvitsemme vain muutamia vaihtoehtoja. 

Aseta Tehtävän määritelmä nimeksi "sample-rails-app", siirry sitten suoraan Säiliön määritelmät ja klikkaa "Lisää säiliö". Nimeä säiliö nimellä "sample-rails-app", ja aseta kuvan sijainti muodossa "repository-url/image:tag". Siirry uudessa selaimen välilehdessä ECR:ään kopioidaksesi kuvan URI:n. Minun tapauksessani se oli: "212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".

Aseta muistiraja suositeltuun 300-500MiB:iin. Nyt kaikkein hankalin asia - porttikartoitus.

Sovelluksemme toimii kontin sisällä portissa 3000. Laita siis 3000 kontin portiksi. Kirjoitamme isäntäportiksi 0, mikä tarkoittaa periaatteessa sitä, että se valitsee satunnaisen portin. Onneksi Application Load Balancer tietää tämän porttikuvauksen ja pystyy ohjaamaan liikenteen oikein. Voimme jopa suorittaa useita tehtäviä tässä yksittäisessä instanssissa. 

Lisää ympäristömuuttuja RAILS_ENV ja aseta sen arvoksi tuotanto.

Klikkaa nyt Lisää lisätäksesi säiliömäärittelymme ja napsauta Luo päättääksesi Task Definition -asetukset.

Palvelu

Meillä on klusteri, kuorman tasapainottaja ja tehtävämäärittely. Nyt meidän on jotenkin suoritettava nämä tehtävät klusterissamme. Tämä on palveluiden tehtävä. Siirry äskettäin luotuun klusteriin, valitse Palvelut välilehteä ja napsauta Luo nappi. 

Aseta käynnistystyypiksi EC2, lisää nimi "sample-rails-app-service". Aseta tehtävien lukumääräksi 1 ja napsauta Seuraava askel. Valitse tällä sivulla valintapainike Application Load Balancer ja valitse sille olemassa oleva IAM-rooli. "Container to load balancer" -kohtaan sinun pitäisi olla jo syöttänyt oikea kontti "sample-rails-app:0:3000" ja napsauta sitten "Add to load balancer".

Valitse "Tuotannon kuuntelijan portiksi" 80:HTTP; käytä kohderyhmän nimeksi aiemmin luotua nimeä -"sample-rails-app-alb-tg" ja klikkaa Seuraava askel. Jätä Automaattinen skaalaus vaihtoehdot sellaisina kuin ne ovat, napsauta Seuraava askel ja Luo palvelu.

Päivitä ECS Security Group -ryhmä

Voit siirtyä luodun klusterin sivulle ja tarkistaa kohdan Tehtävät välilehdillä pitäisi olla yksi tehtävä käynnissä. Palvelu on käynnistänyt sen. Siirry nyt EC2-palvelusivulle, valitse Load Balancers ja katso Application Load Balancerin tiedot. Siellä pitäisi olla sen DNS-nimi. Kopioi se ja avaa selaimessa. Sen pitäisi ohjata sinut sovellukseemme. Valitettavasti saamme näkyviin "504 yhdyskäytävän aikakatkaisu" virhe. 

Ongelma on klusterimme turvallisuusryhmässä. Sen saapuvat säännöt eivät salli kuormantasaajasta tulevaa liikennettä. Korjaa se palaamalla EC2-paneeliin ja napsauttamalla kohtaa Turvallisuusryhmät linkki. Uusi ryhmä luotiin klusterin luomisprosessin aikana. Sen nimen pitäisi alkaa kirjaimella "EC2ContainerService-sample-rails-sovellusklusteri". Napsauta sitä ja muokkaa saapuvia sääntöjä. Koska haluamme sallia kaiken liikenteen VPC:stämme, siirry Amazon VPC -paneeliin ja tarkista, mikä on VPC:n IPv4 CIDR. Aseta sääntötyypiksi "Kaikki liikenne" ja lähde IPv4 CIDR. Tallenna tämä sääntö ja yritä ladata tasapainottajan DNS-nimi. 

Toivottavasti näet samoin kuin minä 🙂 .

Lue lisää

GraphQL Ruby. Entä suorituskyky?

Kiskot ja muut liikennevälineet

Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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