Hoe aan de Slag met Auto-Scaling Container Implementaties op AWS ECS

0
258

AWS is Elastisch Container Service (ECS) is een compute engine speciaal ontworpen voor Docker containers. U kunt gebruik maken van het implementeren van containers met onderliggende EC2 gevallen, of het uitvoeren van een server-agnostisch implementatie op Fargate.

Wat Is ECS?

De basis gebruik van ECS is vrij eenvoudig. In plaats van het beheren van Linux servers, u gewoon eens een Docker container, kiest u berekenen hoeveel voeding je wilt geven, en het te werken. ECS behandelt het vuile werk van het vinden van de metalen te draaien. Door de standaard, het loopt serverloze met Fargate, maar u kunt er ook voor kiezen om uw containers op EC2 gevallen, en behouden de volledige controle over hen.

Wanneer je wilt om updates te maken, kunt u eenvoudig bijwerken van de container in de container van het register en het activeren van een update voor ECS. U kunt dit automatiseren hele proces met behulp van CodePipeline, die kan bouwen uw container van de bron en de uitrol van een blauw/groene implementatie naar ECS.

ECS kan ook eenvoudig automatisch worden geschaald met een enkele in-en uitschakelen, in vergelijking met EC2, die een aantal extra instellingen. Als u ervoor kiest om deze functie te activeren, ECS zal automatisch implementeren van nieuwe containers overeen met de vraag wanneer het CPU-gebruik, geheugengebruik, of andere alarmen voor hoge. Met auto-scaling, je zult nooit zorgen te maken over het upgraden van uw server naar een hogere klasse, of handmatig het inzetten van meerdere van hen. Het tegenovergestelde is ook waar—uw toepassing kunt de schaal tijdens de daluren, bespaart u geld in het proces.

Zoveel prijzen gaat, zijn er geen extra kosten voor de EC2 introductie model. U betaalt voor de onderliggende exemplaren. Voor Fargate, wordt het honorarium berekend op basis van het aantal vcpu ‘ s en geheugen aangevraagd. Als je de getallen, Fargate komt namelijk 20% duurder op papier. Dit wordt echter gecompenseerd door het feit dat Fargate implementaties (wanneer het goed geconfigureerd is), zal deze slechts gebruiken exact zoveel resources als zij die nodig hebben, die stroomlijnt kosten nogal wat. Fargate ondersteunt ook de Plek Gevallen, dat bespaart een hoop geld over EC2, en maken Fargate de voorkeur lancering methode in ieder geval dat niet nodig hebben direct toegang tot de onderliggende server om wat voor reden.

Het instellen van de Docker en Duwen aan de KASSA

Om de container naar ECS, je moet duwen om een repository. U kunt gebruik maken van de Docker hub of uw eigen register server, maar AWS biedt hun eigen oplossing met Elastiek in de Container Register. U kunt duwen containers hier, en hebt hen naar uw eigen AWS account, en is makkelijk bereikbaar vanuit andere diensten, zoals het ECS en CodePipeline.

Ga dan naar de KASSA Management Console en het maken van een nieuw archief. Het archief URI is afhankelijk van uw AWS account—ID vrzndn-u kunt een kopie van het onder de “URI” kolom.

Sla het volgende script op als updateECR.sh naast uw Dockerfile. Plaats de TAG en REPO variabelen met de juiste waarden.

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

aws ecr krijgen-login-wachtwoord | docker login –gebruikersnaam AWS –password-stdin $REPO
docker bouwen -t $TAG .
docker tag $TAG:laatste $REPO
docker push $REPO

Dit script wordt uitgevoerd zal inloggen op de KASSA, het bouwen van uw container tag, en duw deze naar de gegevensopslagruimte. Als u bij het vernieuwen van de lijst, moet u uw container:

De implementatie van ECS

Om de lancering van een container op de ECS, moet u twee dingen:

  • Een “Taak Definitie’, waarin metadata over de containers zelf—poorten die zijn blootgesteld, hoe veel geheugen toe te kennen aan de containers, etc. U kunt meerdere containers in een enkele taak definitie, als uw toepassing maakt gebruik van meer dan één.
  • Een “Service”, wat neerkomt op een implementatie van een taak definitie, de netwerken gekoppeld, en de auto-scaling instellingen. U kunt een groep met meerdere diensten samen in één ‘Cluster’.

Je moet voor het maken van de taak definitie in de eerste, dus het maken van een Taak Definities” in de zijbalk.

Geef het een naam en geef de taak geheugen en vCPU grootte. Houd in gedachten dat u altijd kunt u meerdere containers en link ze samen met een Load Balancer. Als u van plan bent over het gebruik van auto-scaling, wil je om te denken van deze waarde als de unit grootte van elke container—eerder dan het implementeren van een met een 16 vCPU container, u zou kunnen kiezen voor het implementeren van acht 2 vCPU containers.

Klik vervolgens op “Toevoegen Container” voor het definiëren van de containers deze taak definitie zal de toegang. Plak de url van uw Docker container in de KASSA. U kunt ook soft – en hard-geheugen grenzen hier, en open poorten (alleen van toepassing op EC2 lancering soorten).

Als dat eenmaal is gemaakt, kunt u de Services te implementeren met behulp van deze definitie. Ga dan naar “Clusters” en maak een nieuwe cluster, het kiezen van Fargate of EC2, afhankelijk van uw voorkeur. U kunt er ook voor kiezen om een nieuwe VPC voor dit cluster, of u kunt implementeren in uw standaard VPC.

Je kan taken uitvoeren handmatig, maar het is beter om een dienst te gaan. Het maken van een nieuwe service van de Cluster bekijken:

Geef het een naam, selecteer de lancering van het type dat u gebruikt, en selecteer de taak definitie die u zojuist hebt gemaakt. Hier kunt u het aantal van de taken die u wilt starten, en hoeveel van hen moet gezond zijn op een gegeven moment. Als één van de taken is mislukt of wordt beëindigd, zal deze worden gesponnen te vervangen. Dit is onafhankelijk van auto-scaling.

Op het volgende scherm selecteer je de VPC, en selecteer een subnet te implementeren in. U zult ook willen om de Veiligheid van de Groep dat de service is gebruikt, en openen de poorten die nodig zijn voor uw toepassing.

U kunt ook het toevoegen van een Load Balancer of het instellen van een aangepaste DNS-instellingen van deze pagina. Als je gebruik maakt van een Load Balancer, wilt u er zeker van om een redelijke “Health Check Grace Period” die zal voorkomen dat taken worden gemarkeerd als ongezond, terwijl nog steeds de lancering.

Op het volgende scherm kunt u auto-scaling, die is net zo eenvoudig als het draaien van het op, waarin wordt aangegeven hoe de vele taken die u wilt uitvoeren, is het maximale aantal dat je kunt veroorloven, en het minimum dat ECS mag nooit vallen hieronder.

U kunt de doelgroep tracking schalen beleid te TargetTrackingPolicy, en de ECSServiceAverageCPUUtilization drempel tot 75-80% of zo. Als u geen gebruik wilt maken van het doel voor het bijhouden van beleid, kunt u handmatig een schaal up-en down-gebaseerd op CloudWatch alarmen.

Eenmaal ingezet, uw service duurt een minuut of zo dat het vuur van de eerste containers, en zal beschikbaar zijn op de container of op de Load Balancer ENI eindpunt. Als u dat wilt, kunt u het toewijzen van een IP-Elastische deze ENI, die u kunt configureren met DNS voor een permanente verbinding met het cluster.