Sjuk av att Hantera Servrar? Här är Hur att Komma Igång med Behållare på AWS

0
222

Behållare paket upp alla dina app-kod, beroenden, och konfiguration till en enda bild som du kan köra på Amazons Elastiska Container Service utan att konfigurera eller för att hantera en enda EC2 exempel.

Vad Är Behållare, och Hur Kan jag Använda Dem?

Containrar är ett Unix-konceptet, som tillåter program att köra i isolerade virtualiserade miljöer, utan den prestanda som kommer med virtuella maskiner som körs.

Du kan tänka på dem som Cd-skivor som innehåller allt din app behöver för att köra. Du kan skicka den här CD-skivan till AWS, och de kommer att hantera att skapa kopior av det och distribuera den till flera arbetstagare servrar. Dessa servrar kommer att köra appen förpackade i din CD-skiva, och kan snabbt startas och avslutas som en del av en automatisk skalning grupp både match skiftande belastning och optimera kostnaderna.

Samtidigt som de är mycket användbart i deras egen rätt, behållare också tjäna ett annat viktigt syfte: de föra er infrastruktur och verksamhet på samma version arbetsflöde som din kod, och de synkronisera din utveckling och produktion miljöer. Din kod kommer att köra samma på din lokala utvecklingen maskinen när det kommer på din server. Och, eftersom alla dina server-konfiguration är en del av behållaren, den kan hanteras via git precis som du vill hantera din källkod.

Det finns vissa begränsningar av behållare om. De är oftast bara att läsa; orkestrering verktyg som ECS och Kubernetes är utformade runt behållare som är statslösa. Att du egentligen bara vill använda dem för att beräkna, aldrig lagring—om du kör containrar på ett reserverade EC2 exempel, kan det vara bra att köra en databas på dem, men applikationer som körs på ECS är utformade för att ha flexibel start och stopp tider. Alla data som lagrats på dem är kortlivade, precis som RAM.

Om ditt program använder sig av en databas eller lokal lagring, kanske du vill överväga att flytta till en separat tjänst, som kan vara billigare än att köra det på EC2 ändå. AWS har många lyckats databas tjänster, och S3 är mycket billigt för lagring jämfört med EBS eller EFS.

Package Din App med Docker

Detta är det svåra och den del som är mest specifik för din app—skapa och konfigurera behållaren. Ironiskt nog, detta är mycket liknande för att konfigurera servrar, förutom att du behöver bara göra det en gång, alla av din konfigurering kommer att vara på en central plats, och du kommer att kunna synkronisera din utveckling och produktion miljöer. Fördelarna uppväger mer än väl den inledande huvudvärk.

Du vill installera Docker Skrivbordet för ditt operativsystem, så att du kan köra och hantera behållare på din lokala dator.

Den viktigaste punkten av inlägg som definierar alla inställningar för Docker kallas en Dockerfile. Du vill skapa ett nytt projekt katalog och skapa en ny Dockerfile, helt enkelt heter Dockerfilewith ingen förlängning:

touch Dockerfile

Inom denna fil, som du kommer att använda Docker kommandon för att instruera Docker om hur du bygger din instans. För att börja, kommer du förmodligen vill att punga en redan existerande bild från Docker Nav, till exempel Ubuntu, med kommandot:

FRÅN ubuntu

Det finns många färdiga Docker bilder att välja från, till exempel bilder med programvara som nginx förinstallerat.

Du kan länka lokala mappar i detta projekt katalogen till den faktiska mappar i bilden med kommandot COPY. Till exempel, om du hade en projekt-mapp som heter nginx/ med alla de konfiguration för nginx, kan du kopiera över med:

KOPIERA nginx /etc/nginx/

Detta kommer att se till att en eventuell container har korrekt konfiguration på standard nginx läge.

Docker är långt mer komplicerat än så här, och det finns många kommandon för att köra skript och initiering, passerar stateful information behållare, och köra ditt program på start. Du kan läsa vår kompletta guide om förpackningar din ansökan med Docker att lära sig mer.

Skicka Din Dockerfile till Amazons ECS

Du måste ladda upp din bild till en REG-arkiv. Chef över till ECR-Management Console, och skapa en ny databas med ett unikt namn. Välj “Visa Push-Kommandon,” och du kommer att presenteras denna dialogruta som bör hjälpa dig att koppla din docker klient med arkiv, bygga upp din bild och ladda upp den till REG.

Kort sagt, du behöver logga in med ditt AWS referenser, bygga bilden, ge det ett tag, och kör sedan:

docker tryck

Med ditt arkiv är URI.

När du är klar med det här, chef över till ECS Management Console och välj “Komma Igång.” Välja “Custom” som bilden typ:

Ange i full URI för din bild, det ska se ut:

aws_account_id.dkr.ecr.region.amazonaws.com/repository:latest

Det finns massor av extra konfiguration i dialogrutan under “Avancerade inställningar” och du kommer att vilja se till att du läser allt och fylla i allt användbart för dig. En viktig sak är att kolla “Auto-Konfigurera CloudWatch Loggar”, som kommer att länka din container app loggar för att CloudWatch.

Som standard är din app kommer att köras på AWS Fargate som compute engine, inte EC2. Fargate är AWS version av Kubernetes, det iscensätter och lyckas köra din behållare. Den viktigaste nackdelen är att du inte behöver logga in tillgång till några faktiska fall, så du måste göra några ändringar genom docker uppdateringar (som du bör i alla fall). Om du inte vill använda Fargate, kan du använda vanliga EC2-instanser, som kommer att köra AWS ECS Behållare Agent.

I nästa skärm, ska du ange hur många av dina containrar för att köra, och du kommer att ges möjlighet att skapa en lastbalanserare mellan dem:

Du kan också konfigurera tjänsten för att använda Automatisk Skalning, som kommer att skala din ansökan upp och ner beroende på efterfrågan.

När du är klar, klicka på “Skapa” för att starta din kluster. Det kommer att bli synliga under “Kluster” – fliken i ECS Management Console när det är skapat.