Acest articol este o privire de nivel înalt pentru începători asupra Amazon ECS. Vom acoperi concepte de bază, termeni, diagrame simple de arhitectură și exemple abstractizate. Deci sa începem!

Docher

Pentru a aprecia Amazon ECS, trebuie mai întâi să înțelegeți Docker.

Docker este o aplicație client-server care poate fi instalată pe Linux, Windows și MacOS și care vă permite să rulați Docker containere. Containerele sunt medii ușoare care conțin tot ce este necesar pentru a rula o anumită aplicație sau o parte a unei aplicații. Mai multe containere diferite pot fi rulate pe o singură mașină, atâta timp cât are instalat software-ul Docker.

Dacă vă interesează Cum funcționează și cum diferă Docker de o mașină virtuală, atunci aceasta introducere în Docker este un loc minunat pentru a începe.

Un ghid pentru incepatori la serviciul de containere elastice Amazon
Adaptat de la Dockerincepe‘, vezi aici pentru’pubele / libs

Folosirea containerelor Docker permite echipelor să aibă un mediu de dezvoltare consecvent prin abstractizarea software-ului, a sistemului de operare și a configurației hardware într-un bloc de construcție standard care poate fi rulat pe orice mașină.

ad-banner

Fiecare container are exact ceea ce are nevoie – de exemplu, anumite versiuni ale unui limbaj sau bibliotecă – și nu mai mult decât are nevoie. Dacă doriți, pot fi utilizate mai multe containere pentru diferite părți ale aplicației și pot fi configurate pentru a comunica între ele atunci când este necesar.

Prin utilizarea containerelor Docker specificate pentru a rula codul de producție, puteți fi sigur că mediul dvs. de dezvoltare este exact același cu mediul dvs. de producție.

Pe măsură ce aplicația dvs. crește, gestionarea implementării, structurii, programării și scalării acestor containere devine foarte complicată. Aici intervine un „serviciu de gestionare a containerelor”. Acesta își propune să permită opțiuni de configurare simple și să gestioneze greutatea ridicată în timp ce reveniți la scrierea aplicației.

O introducere în Amazon ECS

Amazon Serviciu de containere elastice (ECS) este, potrivit Amazon,

… un serviciu de gestionare a containerelor extrem de scalabil, rapid, care facilitează rularea, oprirea și gestionarea containerelor Docker pe un cluster.

Este comparabil cu Kubernetes, Docker Swarm, și Serviciu de containere Azure.

1611654368 150 Un ghid pentru incepatori la serviciul de containere elastice Amazon

ECS rulează containerele pe un cluster de Amazon EC2 (Elastic Compute Cloud) instanțe de mașini virtuale preinstalat cu Docker. Se ocupă de instalarea containerelor, de scalare, monitorizare și gestionare a acestor instanțe atât prin intermediul unui API, cât și al AWS Management Console. Vă permite să vă simplificați vizualizarea instanțelor EC2 într-un grup de resurse, cum ar fi CPU și memorie. Instanța specifică pe care rulează un container și întreținerea tuturor instanțelor este gestionată de platformă. Nu trebuie să te gândești la asta.

Este demn de remarcat faptul că este legat de infrastructura Amazon, spre deosebire de alți furnizori care permit mai multă flexibilitate. Cu toate acestea, asta înseamnă că vine cu o integrare excelentă cu alte servicii AWS.

Termeni și arhitectură

Să oferim un context imaginar pentru definițiile pe care urmează să le examinăm. Să presupunem că construiți o aplicație care rulează pe două containere Docker, poate unul pentru aplicația principală și unul pentru gestionarea valorilor. Ambele sunt necesare pentru ca aplicația să ruleze conform intenției. Dacă ați avut cantități mari de trafic, poate fi necesar să rulați mai multe perechi de containere.

Aici ajungem la două seturi de termeni noi:

  • A Definirea sarcinii, Sarcină, și Serviciu, și
  • A Cluster, Instanță de container ECS, și Agent de containere ECS.

Definirea sarcinii

Acesta este planul care descrie ce containere Docker să ruleze și reprezintă aplicația dvs. În exemplul nostru, ar fi două containere. ar detalia imaginile de utilizat, CPU și memoria de alocat, variabilele de mediu, porturile de expus și modul în care containerele interacționează.

Sarcină

O instanță a definiției sarcinii, care rulează containerele detaliate în cadrul acesteia. Sarcini multiple pot fi create printr-o definiție a sarcinii, după cum solicită cererea.

1611654369 586 Un ghid pentru incepatori la serviciul de containere elastice Amazon
O definiție a unei sarcini creează mai multe sarcini identice

Serviciu

Definește sarcinile minime și maxime dintr-o definiție a sarcinii executată la un moment dat, autoscalare și echilibrare a sarcinii. În exemplul nostru, dacă CPU-ul a fost maximizat din singura sarcină pe care am rulat-o, este posibil să dorim ca aceasta să adauge o sarcină suplimentară.

Cu toate acestea, este posibil să dorim să limităm numărul maxim de activități pe care le poate executa, deoarece știm că executarea unor activități suplimentare utilizează resurse suplimentare care costă bani.

1611654369 262 Un ghid pentru incepatori la serviciul de containere elastice Amazon
Definiție de serviciu care definește alarmele când trebuie scalată capacitatea

Acum că avem Serviciul nostru, Sarcinile sale trebuie executate undeva pentru a fi accesibile. Trebuie pus pe un Cluster, iar serviciul de gestionare a containerelor îl va gestiona pe unul sau mai multe Instanță (e) de container ECS.

Instanțe ECS Container și ECS Container Agenți

1611654370 308 Un ghid pentru incepatori la serviciul de containere elastice Amazon
O instanță de container ECS care rulează 8 activități din mai multe servicii diferite

Aceasta este o Instanță EC2 care are Docker și un agent de containere ECS care rulează pe el. O instanță de container poate rula mai multe activități, de la aceleași sau de la servicii diferite.

Agentul se ocupă de comunicarea dintre ECS și instanță, oferind starea de rulare a containerelor și gestionarea rulării celor noi.

Cluster

1611654370 815 Un ghid pentru incepatori la serviciul de containere elastice Amazon
Un exemplu de cluster ECS, cu un serviciu care rulează patru activități pe două instanțe de container ECS

După cum s-a văzut mai sus, un cluster este un grup de instanțe de containere ECS. Amazon ECS gestionează logica planificării, întreținerii și gestionării cererilor de scalare către aceste instanțe. De asemenea, îndepărtează munca de a găsi amplasarea optimă a fiecărei activități pe baza procesorului și a nevoilor de memorie.

Un cluster poate rula multe servicii. Dacă aveți mai multe aplicații ca parte a produsului dvs., vă recomandăm să puneți mai multe dintre ele într-un singur cluster. Acest lucru face o utilizare mai eficientă a resurselor disponibile și minimizează timpul de configurare.

1611654370 374 Un ghid pentru incepatori la serviciul de containere elastice Amazon
Servicii multiple alocate mai multor instanțe de containere ECS care rulează pe un singur cluster

Concluzie

Am văzut cum o aplicație Dockerized poate fi reprezentată de un Sarcină Definiție care are o relație unu-la-unu cu o Serviciu care la rândul său îl folosește pentru a crea multe altele Sarcină instanțe.

Acest Serviciu este implementat într-un Cluster de Instanțe de container ECS care furnizează rezerva de resurse necesare pentru a rula și a scala aplicația dvs. Serviciile suplimentare pot fi implementate în același cluster.

Amazon ECS sau orice serviciu de gestionare a containerelor își propune să facă acest lucru cât mai simplu posibil, abstrăgând multe complexități ale infrastructurii de rulare la scară largă.

1611654370 489 Un ghid pentru incepatori la serviciul de containere elastice Amazon
Un cluster care rulează 3 servicii, fiecare rulând o cantitate diferită de activități, pe două instanțe de container ECS

Pe măsură ce nevoile dvs. devin mai complexe, serviciul de gestionare a containerelor asigură că acest lucru rămâne gestionabil. Folosind API-ul sau consola de administrare, puteți pune definiții la locul lor pentru a adăuga noi instanțe de container, după cum aveți nevoie de ele. Acest lucru vă asigură că există întotdeauna un număr sănătos de activități care rulează și alocă în mod inteligent resurse între servicii.

Mulțumesc pentru lectură!

Resurse