Hur att Komma Igång med Automatisk Skalning Behållare Installationer på AWS ECS

0
174

AWS är Elastisk Container Service (ECS) är en beräkna motor särskilt designad för Docker behållare. Du kan använda den för att installera behållare med underliggande EC2-instanser, eller köra en server-dev-distribution på Fargate.

Vad Är en ECS?

Grundläggande användning av ECS är ganska enkel. I stället för att administrera Linux-servrar, du helt enkelt ge det en Docker behållare, välj själv hur mycket beräkna makt du vill ge det, och ställ det att fungera. ECS-handtag det smutsiga arbetet för att hitta den metall för att köra det på. Som standard körs det serverlösa med Fargate, men du kan alternativt välja att köra din behållare på EC2-instanser, och behålla full kontroll över dem.

När du vill göra uppdateringar, du helt enkelt uppdatera container i container-registret och utlösa en uppdatering för ECS. Du kan automatisera hela processen med hjälp av CodePipeline, som kan bygga din container från källan, och rulla ut en blå/grön distribution till ECS.

ECS kan också vara lätt att automatiskt skalas med en enda växla, jämfört med EC2, som tar några ytterligare inställningar. Om du väljer att aktivera denna funktion, ECS kommer att automatiskt distribuera nya behållare för att matcha efterfrågan när CPU-användning, minnesanvändning, eller andra larm få hög. Med automatisk skalning, kommer du aldrig oroa dig för att uppgradera din server till en högre klass, eller manuellt distribuera flera av dem. Effekten den motsatta är också sant—din ansökan kan skala ner under ledig tid, du sparar pengar i processen.

Så långt som prissättning går, det finns inga extra avgifter för EC2 lansera modellen. Du betalar helt enkelt för den underliggande fall. För Fargate, den avgift är beräknad baserat på antal vCPUs och minne begärs. Om du kör siffror, Fargate kommer ut att vara 20% dyrare på papper. Detta är dock kompenseras av det faktum att Fargate driftsättning (när den är korrekt konfigurerad) kommer endast att använda exakt lika mycket resurser som de behöver, vilket effektiviserar kostar en hel del. Fargate stöder också Plats Instanser, vilket sparar massor av pengar över EC2, och göra Fargate rekommenderad starta metod i alla fall som inte kräver direkt tillgång till den underliggande server av någon anledning.

Att sätta Upp Docker och Driver på för att REG

För att få behållaren till ECS, du behöver för att driva det till ett slutförvar. Du kan använda Docker hubb eller dina egna register server, men AWS har sin egen lösning med Elastisk Behållare Registret. Du kan trycka behållare här, och ha dem privat till din AWS konto, och kan lätt nås från andra tjänster som ECS och CodePipeline.

Chef över till ECR-Management Console och skapa en ny databas. Arkivet URI beror på din AWS konto-ID—du kan kopiera den under “URI” – kolumnen.

Spara följande skript som updateECR.sh bredvid din Dockerfile. Byt TAG och REPO variabler med rätt värden.

TAG=”docker-test”
REPO=”ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/”$TAG”:senaste”

aws ecr-få-login-lösenord | docker logga in –användarnamn AWS –password-stdin $REPORÄNTAN
docker bygga -t $TAG .
docker tag $TAG:senaste $REPORÄNTAN
docker push $REPORÄNTAN

Kör detta script kommer att logga in på REG, bygga din container, märka den, och tryck in den till ditt arkiv. Om du vill uppdatera listan, bör du se din behållare:

Utbyggnaden på ECS

Att lansera en container på ECS, behöver du två saker:

  • En “Task Definition”, som innehåller metadata om behållare själva—vilka portar som är utsatta, hur mycket minne för att fördela behållare, etc. Du kan köra flera behållare i en enda uppgift definition, om ditt program använder sig av mer än en.
  • En “Tjänst”, som innebär en utbyggnad av en uppgift definition, nätverk i samband med det, och automatisk skalning inställningar. Du kan gruppera flera tjänster tillsammans i ett enda Kluster.”

Du behöver för att skapa uppgiften definition först, så skapa en “Uppgift Definitioner” i sidomenyn.

Ge det ett namn och ange uppgift minne och vCPU storlek. Tänk på att du alltid kan skapa flera behållare och länka ihop dem med en lastbalanserare. Om du planerar att använda en automatisk skalning, du kommer att vilja tänka på det värde som enhet storleken på varje container—i stället för att lansera en enda 16 vCPU-behållare, kan du välja att distribuera åtta 2 vCPU behållare.

Nästa, klicka på “Lägg till Behållare” för att definiera behållare denna uppgift definition kommer att få tillgång till. Klistra in i URI för din Docker behållare i REG. Du kan också ställa mjuk – och hård-minne gränser här, och öppna portar (gäller endast EC2 starta typer).

När det är skapat, kan du använda Tjänster med hjälp av denna definition. Chef över till “Kluster” och skapa ett nytt kluster välja antingen Fargate eller EC2 beroende på dina önskemål. Du kan alternativt välja att skapa en ny VPC för detta kluster, eller så kan du använda det i din standard VPC.

Du kan köra uppgifter manuellt, men det är bättre att skapa en tjänst för att hantera det. Skapa en ny tjänst från Klustret visa:

Ge den ett namn, välj lanseringen typ du använder, och välj den uppgift definition som du just har skapat. Här kan du ange antalet uppgifter som du vill starta och hur många av dem borde vara frisk vid varje given tidpunkt. Om en av de uppgifter som misslyckas eller sägs upp, en ny kommer att delas upp för att ersätta den. Detta är oberoende av automatisk skalning.

På nästa skärm, välj din VPC, och välj ett subnät att sätta in. Du kommer också vill öppna upp Gruppen som din tjänst använder, och öppna de portar som krävs för att din ansökan ska fungera.

Du kan också lägga till en lastbalanserare, eller ställa egna DNS-inställningarna från den här sidan. Om du använder en lastbalanserare, du kommer att vilja se till att sätta en rimlig “hälsokontroll” Grace Period”, som kommer att förhindra att uppgifter inte markeras som ohälsosamma, medan du fortfarande starta.

På nästa skärm kan du konfigurera automatisk skalning, som är så enkelt som att sätta det på, med angivande av hur många uppgifter du vill köra, det maximala antalet kan du ha råd med, och den minsta som ECS ska aldrig släppa nedan.

Du kan ställa in target tracking skalning politik för att TargetTrackingPolicy, och ECSServiceAverageCPUUtilization tröskeln till 75-80% eller så. Om du inte vill använda target-spårning politik, du kan manuellt skala upp och ner som bygger på CloudWatch larm.

När utnyttjas, din service kommer att ta en minut eller så för att skjuta upp de första containrarna, och kommer att finnas tillgänglig på behållaren eller lastbalanserare ENI: s slutpunkt. Om du vill kan du tilldela en Elastisk IP till detta ENI, som du kan konfigurera med din DNS för en permanent länk till klustret.