En begyndervejledning til Amazons Elastic Container Service

Denne artikel er en begynders højt niveau kig på Amazon ECS. Vi dækker kernekoncepter, termer, enkle arkitekturdiagrammer og abstrakte eksempler. Så lad os komme i gang!

Docker

For at værdsætte Amazon ECS skal du først forstå Docker.

Docker er et klientserverprogram, der kan installeres på Linux, Windows og MacOS, og som giver dig mulighed for at køre Docker-containere. Containere er lette miljøer, der indeholder alt, hvad der er nødvendigt for at køre en bestemt applikation eller del af en applikation. Flere forskellige containere kan køres på en maskine, så længe Docker-softwaren er installeret.

Hvis du er interesseret i hvordande fungerer, og hvordan Docker er forskellig fra en virtuel maskine, så er denne introduktion til Docker et godt sted at starte.

Brug af Docker-containere gør det muligt for teams at have et konsistent udviklingsmiljø ved at abstrahere software, operativsystem og hardwarekonfiguration til en standardblok, der kan køres på enhver maskine.

Hver container har nøjagtigt det, den har brug for - for eksempel bestemte versioner af et sprog eller bibliotek - og ikke mere end den har brug for. Flere containere kan bruges til forskellige dele af din applikation, hvis du vil, og de kan indstilles til at kommunikere med hinanden, når det er nødvendigt.

Ved at bruge specificerede Docker-containere til at køre din produktionskode kan du være sikker på, at dit udviklingsmiljø er nøjagtigt det samme som dit produktionsmiljø.

Efterhånden som din applikation vokser, bliver det meget kompliceret at administrere implementering, struktur, planlægning og skalering af disse containere. Det er her, en "containeradministrationstjeneste" kommer ind. Den sigter mod at tillade enkle konfigurationsmuligheder og håndterer det tunge løft, mens du går tilbage til at skrive appen.

En introduktion til Amazon ECS

Amazon Elastic Container Service (ECS) er ifølge Amazon

… En meget skalerbar, hurtig containeradministrationstjeneste, der gør det let at køre, stoppe og administrere Docker-containere i en klynge.

Det kan sammenlignes med Kubernetes, Docker Swarm og Azure Container Service.

ECS kører dine containere på en klynge af Amazon EC2 (Elastic Compute Cloud) virtuelle maskininstanser forudinstalleret med Docker. Det håndterer installation af containere, skalering, overvågning og styring af disse forekomster gennem både en API og AWS Management Console. Det giver dig mulighed for at forenkle din visning af EC2-forekomster til en pulje af ressourcer, såsom CPU og hukommelse. Den specifikke forekomst, som en container kører på, og vedligeholdelse af alle forekomster håndteres af platformen. Du behøver ikke tænke over det.

Det er værd at bemærke, at det er bundet til Amazon-infrastrukturen, i modsætning til nogle andre udbydere, der giver mere fleksibilitet. Det betyder dog, at det kommer med fremragende integration med andre AWS-tjenester.

Vilkår og arkitektur

Lad os give en imaginær kontekst til de definitioner, vi er ved at se på. Sig, at du bygger en applikation, der kører på to Docker-containere, måske en til hovedapplikationen og en til styring af metrics. Begge er nødvendige for at applikationen kører som beregnet. Hvis du havde store mængder trafik, skal du muligvis køre flere par containere.

Her kommer vi til to sæt nye udtryk:

  • en opgavedefinition , opgave og service og
  • -enKlynge ,ECS Container Instance ,ogECS Container Agent .

Opgavedefinition

Dette er planen, der beskriver hvilke Docker-containere der skal køres og repræsenterer din applikation. I vores eksempel ville det være to containere. ville detaljerede billeder, der skal bruges, CPU og hukommelse, der skal tildeles, miljøvariabler, porte, der skal eksponeres, og hvordan containerne interagerer.

Opgave

En forekomst af en opgavedefinition, der kører containerne detaljeret i den. Flere opgaver kan oprettes med en opgave definition, som efterspørgslen kræver.

Service

Definerer minimums- og maksimumopgaver fra en opgavedefinitionskørsel til enhver tid, autoskalering og belastningsafbalancering. I vores eksempel, hvis CPU'en blev maksimeret fra den enkelte opgave, vi havde kørt, vil vi måske have den til at tilføje en ekstra opgave.

Vi vil dog muligvis begrænse det maksimale antal opgaver, den kan køre, da vi ved, at kørsel af ekstra opgaver bruger yderligere ressourcer, der koster penge.

Nu hvor vi har vores service, skal dens opgaver køres et eller andet sted for at være tilgængelige. Det skal anbringes i en klynge, og containeradministrationstjenesten håndterer det, der kører på tværs af en eller flere ECS-containerinstanser .

ECS Container Instances og ECS ​​Container Agents

Dette er en EC2-forekomst, der kører Docker og en ECS Container Agent. En containerinstans kan køre mange opgaver fra de samme eller forskellige tjenester.

Agenten tager sig af kommunikationen mellem ECS og forekomsten, leverer status for kørsel af containere og administrerer kørsel af nye.

Klynge

Som set ovenfor er en klynge en gruppe af ECS-containerinstanser. Amazon ECS håndterer logikken i planlægning, vedligeholdelse og håndtering af skaleringsanmodninger til disse tilfælde. Det fjerner også arbejdet med at finde den optimale placering af hver opgave baseret på dine CPU- og hukommelsesbehov.

En klynge kan køre mange tjenester. Hvis du har flere applikationer som en del af dit produkt, kan du lægge flere af dem i en klynge. Dette gør en mere effektiv brug af de tilgængelige ressourcer og minimerer opsætningstiden.

Konklusion

Vi har set, hvordan en Dockerized-applikation kan repræsenteres af en opgaveDefinition, der har et en-til-en forhold til en tjeneste, som igen bruger det til at oprette mange forskellige opgaveforekomster .

Denne serviceer implementeret i en klyngeafECS-containerinstanserder giver den pool af ressourcer, der er nødvendige for at køre og skalere din applikation. Yderligere tjenester kan implementeres i den samme klynge.

Amazon ECS eller en hvilken som helst containeradministrationstjeneste har til formål at gøre dette så simpelt som muligt ved at abstrahere mange kompleksiteter af kørende infrastruktur i stor skala.

Da dine behov bliver mere komplekse, sikrer containeradministrationstjenesten, at dette forbliver håndterbart. Ved hjælp af dets API eller Management Console kan du sætte definitioner på plads for at tilføje nye Container-forekomster, efterhånden som du har brug for dem. Dette sørger for, at der altid er et sundt antal opgaver, der kører og tildeler ressourcer intelligent på tværs af tjenester.

Tak for læsningen!

Ressourcer

  • Blid introduktion til, hvordan AWS ECS fungerer med eksempelvejledning
  • Implementering af grupperede Akka-applikationer på Amazon ECS
  • Byggesten i Amazon ECS
  • Introduktion til Amazon EC2 Container Service (ECS) - Docker Management på AWS
  • Amazon ECS: Core Concepts
  • AWS EC2 for begyndere
  • En bedre udvikling / testoplevelse: Docker og AWS
  • Klyngebaserede arkitekturer, der bruger Docker og Amazon EC2 Container Service