sql >> Database >  >> RDS >> Database

Aan de slag met Amazon ECS en Amazon Fargate

Docker kan op de meest gebruikte OS-platforms worden geïnstalleerd. CoreOS heeft Docker vooraf geïnstalleerd en is speciaal ontworpen voor het uitvoeren van Docker-containers. Docker voor AWS biedt een kant-en-klare Docker-zwermmodus waarin een cluster van knooppunten, een zwerm genaamd, een gedistribueerd platform biedt voor het uitvoeren van Docker-containertoepassingen.

Probleem: Alle bovengenoemde Docker-platforms zijn slechts verschillende typen Docker-installaties en vereisen dat Docker-containers op de opdrachtregel worden uitgevoerd en beheerd.

Oplossing: Amazon ECS (Elastische containerservice ) is een beheerde service voor Docker-containers met ingebouwde ondersteuning voor schalen, taakverdeling, netwerken, opslag, logboekregistratie en andere Docker-containerbeheertaken. Amazon ECS ondersteunt twee lanceringstypes:EC2 en Fargate.

Met het EC2-starttype worden EC2-instanties gestart om Docker-containers uit te voeren. Het Fargate-starttype, dat onlangs (november 2017) is geïntroduceerd, host taken die Docker-containers inkapselen. De taken worden direct toegankelijk gemaakt voor de gebruiker via een Elastic Network Interface (ENI ). De EC2-instanties waarop Fargate is ingericht, zijn niet zichtbaar voor de gebruiker en zijn niet direct toegankelijk.

In dit hoofdstuk leren we over het volgende:Wat Amazon Fargate is

  • Voordelen van Fargate Amazon ECS-objecten
  • Rekenbronnen in Amazon ECS Fargate
  • Wat is er nieuw in de Amazon Fargate-startmodus?

Wat Amazon Fargate is

Amazon Fargate is een nieuw lanceringstype voor Amazon ECS en Amazon EKS (Elastische Kubernetes-service )-beheerde orkestratieservices voor Docker-containers op AWS. Met het Fargate-lanceringstype wordt de infrastructuur volledig geleverd door Fargate. Het is serverloos en er zijn geen EC2-instanties zichtbaar voor de gebruiker. Dockercontainers worden gedefinieerd als containerdefinities binnen een taakdefinitie. Een service implementeert de taakdefinitie om een ​​of meer taken uit te voeren. Elke taak is gekoppeld aan een ENI. Als de automatische toewijzing van het openbare IP-adres op taakniveau is ingeschakeld, wordt automatisch een openbaar IP-adres waarop een externe client toegang heeft tot een taak, aan een taak toegewezen. Taken communiceren met elkaar via een privé IP.

Voordelen van Fargate

De voordelen in ECS zijn als volgt:

  • Een beheerde service voor gecontaineriseerde applicaties die niet veel gebruikersinvoer vereist om Docker-applicaties uit te voeren
  • Microservices bestaande uit meerdere applicaties draaien in geïsoleerde containers. Schaal automatisch taken op basis van applicatiebelasting
  • Integreer met andere AWS-services, waaronder IAM, CloudWatch-logboeken, Elastic Load Balancing, CloudFormation-sjablonen, EBS-volumes, Batch-, ECR- en CloudTrail-logboeken
  • Een virtuele privécloud (VPC ) zonder bronnen die met andere gebruikers worden gedeeld Biedt ondersteuning voor het uitvoeren van een CodePipeline met ECS als implementatieplatform
  • Ondersteunt de nieuwste Docker-versie 17.0

Fargate biedt de volgende extra voordelen:

  • Met een Fargate-starttype maakt of beheert een gebruiker geen EC2-instanties, aangezien er geen beschikbaar zijn op het cluster.
  • Taken worden direct aan de gebruiker getoond via een ENI.
  • De onderliggende infrastructuur wordt geleverd door Fargate. EC2-instanties mogen niet worden beheerd met het Fargate-starttype.
  • CodePipeline ondersteunt Fargate als implementatieplatform.
  • Microservices op basis van containerdefinities ingekapseld in een taakdefinitie zijn expliciet gekoppeld en mogen niet worden gekoppeld aan aanvullende opties, zoals koppelingen.
  • CloudWatch-logboeken kunnen automatisch worden geconfigureerd.

Amazon ECS-objecten

Amazon ECS-objecten met Fargate zijn hetzelfde als voor het EC2-starttype. Een ECS-cluster is de buitenste inkapseling en bestaat uit een of meer services. Een cluster kan worden verdeeld over meerdere beschikbaarheidszones. Een service is een implementatie van een taakdefinitie en voert een of meer taken uit. Een taakdefinitie kan een of meer taakrevisies hebben. Een taakrevisie is een afzonderlijke taakdefinitie met een reeks taken en een bijbehorende service. Eén Fargate-instantie is gekoppeld aan een reeks taken in een service. Een taakdefinitie bestaat uit nul of meer containerdefinities. Typisch zou een taakdefinitie worden gekoppeld aan een of meer containerdefinities, en een taakdefinitie die niet uit een containerdefinitie bestaat, zou geen taakcontainers uitvoeren. Een diagram van ECS-objecten wordt als volgt weergegeven:

Een Taakdefinitie is een toepassingssjabloon en beschrijft een of meer containers. Hoewel sommige kenmerken of instellingen op taakniveau zijn geconfigureerd, worden de meeste op containerniveau geconfigureerd. Er kunnen meerdere revisies aan een taakdefinitie worden gekoppeld.

Een Service implementeert een taakdefinitie en definieert een gewenste telling voor taken die moeten worden uitgevoerd voor een taakdefinitie. Optionele functies zoals automatisch schalen en taakverdeling worden geconfigureerd in de service.

Een Cluster in een ECS-service is een groepering van een of meer containerservices. Een clusternaam moet uniek zijn binnen een account. Een cluster met de naam default is standaard ingericht.

Rekenbronnen in Amazon ECS Fargate

Taakgrootte bestaat uit Taakgeheugen (GB) en Taak CPU (vCPU) . Hoewel optioneel in het EC2-starttype, is taakgrootte vereist bij het Fargate-starttype. Docker-geheugen- en CPU-instellingen op containerniveau kunnen optioneel worden gedefinieerd, maar worden overschreven door instellingen op taakdefinitieniveau. Alleen specifieke combinaties van taakgeheugen en taak-CPU worden ondersteund, en de ECS-wizard geeft met een bericht de ondersteunde waarde (of het bereik van waarden) voor een geselecteerde waarde aan. Het geldige CPU-bereik voor 1 GB geheugen is bijvoorbeeld 0,25 vCPU tot 0,5 vCPU. Het totale aantal resources (geheugen of CPU) dat op containerniveau is geconfigureerd, mag de resource-instellingen op taakniveau niet overschrijden. Als een taakdefinitie bijvoorbeeld bestaat uit twee containers (MySQL en WordPress) met een geheugenlimiet van 128 MB voor elke container, moet het geheugen op taakniveau minimaal 256 MB zijn. Ook mag het totaal aan geheugen op containerniveau niet groter zijn dan 256 MB. Zo ook voor de CPU. Er kunnen twee geheugenlimieten worden gedefinieerd op containerniveau:Zachte limiet en Harde limiet . De zachte limiet komt overeen met de memoryReservation attribuut op taakniveau, en de harde limiet komt overeen met het geheugen attribuut op taakniveau. De som van containergeheugenreserveringen (zachte limieten) mag het taakgeheugen niet overschrijden. De harde limiet voor elke container mag het geheugen dat op taakniveau is geconfigureerd niet overschrijden. Er moet standaard minimaal 4 GB worden opgegeven voor een container.

Een voorbeeldtaakgrootte wordt getoond in de volgende schermafbeelding, waarin het Taakgeheugen (geheugen attribuut) is ingesteld op 0,5 GB (512 GB) en de Taak-CPU is ingesteld op 0,25 vCPU . Op containerniveau, zoals geconfigureerd in de twee containerdefinities, is de geheugenreservering 128 MB voor elke container, wat de totale geheugenreservering maakt van 256 MB ruim binnen de 512 GB toegewezen op taakniveau. De taakgrootte wordt toegewezen aan een taak, al dan niet gebruikt. Evenzo is het aantal CPU-eenheden geconfigureerd voor elke container is 10 , waardoor de totale CPU-eenheden 20 voor containers binnen de CPU-eenheden 25 worden toegewezen op taakniveau. Raadpleeg de volgende schermafbeelding:

Taakgrootteconfiguratie en toewijzing voor containers

Wat is er nieuw in de Amazon Fargate-startmodus?

Naast en gelijktijdig met de eerder besproken Fargate-voordelen, ondersteunt Fargate de volgende nieuwe functies:

  • Netwerkmodus, awsvpc , is de enige ondersteunde modus
  • Hostpoorttoewijzingen zijn niet geldig met de Fargate-starttype netwerkmodus (awsvpc ), en hostpoorten waarop een toepassing wordt weergegeven, zijn dezelfde als de containerpoorten
  • ecsTaskExecutionRole is toegevoegd voor het Fargate-starttype om Docker-afbeeldingen te kunnen ophalen en logboeken naar CloudWatch-logboeken te kunnen verzenden
  • Alleen de awslogs logconfiguratie en awslogs log-stuurprogramma worden ondersteund met CloudWatch-logboeken
  • Taakplaatsing wordt niet ondersteund, omdat er geen ECS-instanties zijn ingericht om plaatsingsbeperkingen te definiëren voor
  • Alleen Docker-images op Docker Hub en Amazon ECR worden ondersteund Geprivilegieerde Windows-containers worden niet ondersteund voor het Fargate-starttype Hostapparaten kunnen niet worden blootgesteld aan een container
  • De host en sourcePath parameters voor volumes worden niet ondersteund met het Fargate-starttype

Samenvatting

In dit inleidende hoofdstuk hebben we de voordelen besproken van het gebruik van het Fargate-starttype, hoe computerbronnen worden gedistribueerd en geconfigureerd met het Fargate-starttype, hoe de ECS-objecten met Fargate hetzelfde zijn als voor het EC2-starttype en de nieuwe functies in Fargate. In het volgende hoofdstuk bespreken we netwerken zoals gebruikt met Fargate.

Het voorgaande materiaal is een fragment uit Amazon Fargate Quick Start Guide , door Deepak Vohra, uitgegeven door Pact Publishing.

Dit artikel is een bijdrage. ©Developer.com. Alle rechten voorbehouden


  1. Oracle SQL om kolomtype te wijzigen van getal in varchar2 terwijl het gegevens bevat

  2. Hoe een PostgreSQL-database verwijderen als er actieve verbindingen mee zijn?

  3. Hoe IsFinite() werkt in PostgreSQL

  4. Geaggregeerde functie in een SQL-updatequery?