Bereitstellen von Java-Microservices auf Amazon ECS mithilfe von AWS Fargate - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen von Java-Microservices auf Amazon ECS mithilfe von AWS Fargate

Erstellt von Vijay Thompson (AWS) und Sandeep Bondugula (AWS)

Umgebung: PoC oder Pilotprojekt

Quelle: Container

Ziel: Amazon ECS

R-Typ: N/A

Technologien: Container und Mikroservices; Web- und mobile Apps

AWS-Dienste: Amazon ECS

Übersicht

Dieses Muster bietet Anleitungen für die Bereitstellung containerisierter Java-Mikroservices auf Amazon Elastic Container Service (Amazon ECS) mithilfe von AWS Fargate. Das Muster verwendet Amazon Elastic Container Registry (Amazon ECR) nicht für die Containerverwaltung. Stattdessen werden Docker-Images von einem Docker-Hub abgerufen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Eine bestehende Java-Microservices-Anwendung auf einem Docker-Hub

  • Ein öffentliches Docker-Repository

  • Ein aktives AWS-Konto

  • Vertrautheit mit AWS-Services, einschließlich Amazon ECS und Fargate

  • Docker-, Java- und Spring Boot-Framework

  • Amazon Relational Database Service (Amazon RDS) ist betriebsbereit (optional)

  • Eine virtuelle private Cloud (VPC), wenn für die Anwendung Amazon RDS erforderlich ist (optional)

Architektur

Quelltechnologie-Stack

  • Java-Mikroservices (z. B. in Spring Boot implementiert) und auf Docker bereitgestellt

Quellarchitektur

Quellarchitektur für Java-Microservices, die auf Docker bereitgestellt werden

Zieltechnologie-Stack

  • Ein Amazon ECS-Cluster, der jeden Microservice mithilfe von Fargate hostet

  • Ein VPC-Netzwerk zum Hosten des Amazon ECS-Clusters und der zugehörigen Sicherheitsgruppen 

  • Eine Cluster-/Aufgabendefinition für jeden Microservice, der Container mithilfe von Fargate hochfährt

Zielarchitektur

Zielarchitektur auf Java-Mikroservices auf Amazon ECS

Tools

Tools

  • Amazon ECS macht es überflüssig, Ihre eigene Container-Orchestrierungssoftware zu installieren und zu betreiben, einen Cluster von virtuellen Maschinen zu verwalten und zu skalieren oder Container auf diesen virtuellen Maschinen zu planen. 

  • Mit AWS Fargate können Sie Container ausführen, ohne Server oder Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten zu müssen. Es wird in Verbindung mit Amazon Elastic Container Service (Amazon ECS) verwendet.

  • Docker ist eine Softwareplattform, mit der Sie Anwendungen schnell erstellen, testen und bereitstellen können. Docker packt Software in standardisierte Einheiten, sogenannte Container, die alles enthalten, was die Software zum Ausführen benötigt, einschließlich Bibliotheken, Systemtools, Code und Laufzeit. 

Docker-Code

Das folgende Dockerfile gibt die verwendete Version des Java Development Kit (JDK) an, in der die Java-Archivdatei (JAR) vorhanden ist, die Portnummer, die verfügbar gemacht wird, und den Einstiegspunkt für die Anwendung.

FROM openjdk:11 ADD target/Spring-docker.jar Spring-docker.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","Spring-docker.jar"]

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine Aufgabendefinition.

Für die Ausführung eines Docker-Containers in Amazon ECS ist eine Aufgabendefinition erforderlich. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/, wählen Sie Aufgabendefinitionen und erstellen Sie dann eine neue Aufgabendefinition. Weitere Informationen finden Sie in der Amazon ECS-Dokumentation.

AWS-Systemadministrator, App-Entwickler

Wählen Sie den Starttyp.

Wählen Sie Fargate als Starttyp.

AWS-Systemadministrator, App-Entwickler

Konfigurieren Sie die Aufgabe.

Definieren Sie einen Aufgabennamen und konfigurieren Sie die Anwendung mit der entsprechenden Menge an Aufgabenspeicher und CPU.

AWS-Systemadministrator, App-Entwickler

Definieren Sie den Container.

Geben Sie den Namen des Containers an. Geben Sie für das Image den Namen der Docker-Site, den Repository-Namen und den Tag-Namen des Docker-Images ein ()docker.io/sample-repo/sample-application:sample-tag-name. Legen Sie Speicherlimits für die Anwendung und Portzuordnungen (8080, 80) für die zulässigen Ports fest.

AWS-Systemadministrator, App-Entwickler

Erstellen Sie die Aufgabe.

Wenn die Aufgaben- und Containerkonfigurationen vorhanden sind, erstellen Sie die Aufgabe. Detaillierte Anweisungen finden Sie unter den Links im Abschnitt Verwandte Ressourcen.

AWS-Systemadministrator, App-Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen und konfigurieren Sie einen Cluster.

Wählen Sie als Clustertyp nur Networking aus, konfigurieren Sie den Namen und erstellen Sie dann den Cluster oder verwenden Sie einen vorhandenen Cluster, falls verfügbar. Weitere Informationen finden Sie in der Amazon ECS-Dokumentation.

AWS-Systemadministrator, App-Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine Aufgabe.

Wählen Sie im Cluster die Option Neue Aufgabe ausführen aus.

AWS-Systemadministrator, App-Entwickler

Wählen Sie den Starttyp.

Wählen Sie Fargate als Starttyp.

AWS-Systemadministrator, App-Entwickler

Wählen Sie Aufgabendefinition, Revision und Plattformversion.

Wählen Sie die Aufgabe, die Sie ausführen möchten, die Version der Aufgabendefinition und die Plattformversion aus.

AWS-Systemadministrator, App-Entwickler

Wählen Sie den -Cluster.

Wählen Sie den Cluster aus, von dem aus Sie die Aufgabe ausführen möchten.

AWS-Systemadministrator, App-Entwickler

Geben Sie die Anzahl der Aufgaben an.

Konfigurieren Sie die Anzahl der Aufgaben, die ausgeführt werden sollen. Wenn Sie mit zwei oder mehr Aufgaben starten, ist ein Load Balancer erforderlich, um den Datenverkehr auf die Aufgaben zu verteilen.

AWS-Systemadministrator, App-Entwickler

Geben Sie die Aufgabengruppe an.

(Optional) Geben Sie einen Aufgabengruppennamen an, um eine Gruppe verwandter Aufgaben als Aufgabengruppe zu identifizieren.

AWS-Systemadministrator, App-Entwickler

Konfigurieren Sie die Cluster-VPC, die Subnetze und die Sicherheitsgruppen.

Konfigurieren Sie die Cluster-VPC und die Subnetze, in denen Sie die Anwendung bereitstellen möchten. Erstellen oder aktualisieren Sie Sicherheitsgruppen (HTTP, HTTPS und Port 8080), um den Zugriff auf eingehende und ausgehende Verbindungen zu ermöglichen.

AWS-Systemadministrator, App-Entwickler

Konfigurieren Sie öffentliche IP-Einstellungen.

Aktivieren oder deaktivieren Sie die öffentliche IP, je nachdem, ob Sie eine öffentliche IP-Adresse für Fargate-Aufgaben verwenden möchten. Die empfohlene Standardoption ist Aktiviert.

AWS-Systemadministrator, App-Entwickler

Überprüfen Sie die Einstellungen und erstellen Sie die Aufgabe

Überprüfen Sie Ihre Einstellungen und wählen Sie dann Task ausführen.

AWS-Systemadministrator, App-Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Kopieren Sie die Anwendungs-URL.

Wenn der Aufgabenstatus auf Wird ausgeführt aktualisiert wurde, wählen Sie die Aufgabe aus. Kopieren Sie im Bereich Netzwerk die öffentliche IP.

AWS-Systemadministrator, App-Entwickler

Testen Sie Ihre Anwendung.

Geben Sie in Ihrem Browser die öffentliche IP ein, um die Anwendung zu testen.

AWS-Systemadministrator, App-Entwickler

Zugehörige Ressourcen