Service Discovery - Amazon ECS

Service Discovery

Amazon-ECS-Services können für die Verwendung von Service Discovery konfiguriert werden. Services Discovery verwendet AWS Cloud Map-API-Aktionen zur Verwaltung von HTTP- und DNS-Namespaces für Ihre Amazon-ECS-Services. Weitere Informationen finden Sie unter Was ist AWS Cloud Map? im AWS Cloud Map Entwicklerhandbuch.

Wenn Sie einen privaten Namespace in AWS Cloud Map erstellen, erstellen wir automatisch eine von Route 53 gehostete Zone. Der Amazon-ECS-Service kann sich mit einem freundlichen und vorhersehbaren DNS-Namen in Route 53 registrieren. Die gehosteten Zonen werden automatisch aktualisiert, wenn Ihre Amazon-ECS-Services nach oben oder unten skaliert werden. Andere Services führen eine DNS-Suche durch, um festzustellen, ob eine Verbindung zum Service hergestellt werden soll.

Service Discovery ist in den folgenden AWS-Regionen verfügbar:

Name der Region Region

US East (N. Virginia)

us-east-1

USA Ost (Ohio)

us-east-2

US West (N. California)

us-west-1

US West (Oregon)

us-west-2

Afrika (Kapstadt)

af-south-1

Asia Pacific (Hongkong)

ap-east-1

Asien-Pazifik (Mumbai)

ap-south-1

Asien-Pazifik (Tokyo)

ap-northeast-1

Asien-Pazifik (Seoul)

ap-northeast-2

Asia Pacific (Singapore)

ap-southeast-1

Asia Pacific (Sydney)

ap-southeast-2

Asien-Pazifik (Jakarta)

ap-southeast-3

Kanada (Zentral)

ca-central-1

China (Beijing)

cn-north-1

China (Ningxia)

cn-northwest-1

Europe (Frankfurt)

eu-central-1

Europe (Ireland)

eu-west-1

Europe (London)

eu-west-2

Europe (Paris)

eu-west-3

Europa (Mailand)

eu-south-1

Europa (Stockholm)

eu-north-1

Naher Osten (Bahrain)

me-south-1

South America (São Paulo)

sa-east-1

AWS GovCloud (USA-Ost)

us-gov-east-1

AWS GovCloud (USA-West)

us-gov-west-1

Konzepte für Service Discovery

Die Serviceerkennung umfasst folgende Komponenten:

  • Service Discovery-Namespace: Eine logische Gruppe von Service Discovery-Services, die den gleichen Domain-Namen haben, zum Beispiel example.com. Dies ist der Domänenname, an den Sie den Datenverkehr weiterleiten möchten. Sie können einen Namespace mit einem Aufruf des aws servicediscovery create-private-dns-namespace-Befehls oder in der klassischen Amazon-ECS-Konsole erstellen. Sie können den aws servicediscovery list-namespaces-Befehl zum Anzeigen der zusammenfassenden Informationen über die Namespaces, die vom aktuellen Konto erstellt wurden, verwenden. Weitere Informationen zu den Service-Discovery-Befehlen finden Sie unter create-private-dns-namespace und list-namespaces im Referenzhandbuch zu AWS Cloud Map (Service-Discovery) AWS CLI.

  • Service-Discovery Service: Ist im Service Discover-Namespace vorhanden und besteht aus dem Servicenamen und der DNS-Konfiguration für den Namespace. Er stellt die folgende Kernkomponente bereit:

    • Service Registry: Ermöglicht es Ihnen, einen Service über DNS- oder AWS Cloud Map-API-Aktionen nachzuschlagen und einen oder mehrere verfügbare Endpunkte zu ermitteln, die zur Verbindung mit dem Service verwendet werden können.

  • Service-Discovery-Instance: Existiert innerhalb des Service zur Service Discovery und besteht aus den Attributen, die mit jedem Amazon-ECS-Service im Serviceverzeichnis zugeordnet sind.

    • Instance-Attribute: Die folgenden Metadaten werden als benutzerdefinierte Attribute für jeden Amazon-ECS-Service hinzugefügt, der für die Verwendung von Service Discovery konfiguriert ist:

      • AWS_INSTANCE_IPV4: Für einen A-Datensatz die IPv4-Adresse, die Route 53 als Antwort auf DNS-Anfragen und AWS Cloud Map als Antwort bei Entdeckungen von Instance-Details zurückgibt, z. B. 192.0.2.44.

      • AWS_INSTANCE_PORT – Der Port-Wert, der dem Service zur Service Discovery zugeordnet ist.

      • AVAILABILITY_ZONE – Die Availability Zone, in der die Aufgabe gestartet wurde. Bei Aufgaben, die den EC2-Starttyp verwenden, ist dies die Availability Zone, in der sich die Container-Instance befindet. Bei Aufgaben, die den Starttyp Fargate verwenden, ist dies die Availability Zone, in der sich die Elastic-Network-Schnittstelle befindet.

      • REGION – Die Region, in der sich die Aufgabe befindet.

      • ECS_SERVICE_NAME – Der Name des Amazon-ECS-Services, zu dem die Aufgabe gehört.

      • ECS_CLUSTER_NAME – Der Name des Amazon-ECS-Clusters, zu dem die Aufgabe gehört.

      • EC2_INSTANCE_ID: Die ID der Container-Instance, in der die Aufgabe platziert wurde. Dieses benutzerdefinierte Attribut wird nicht hinzugefügt, wenn die Aufgabe den Starttyp Fargate verwendet.

      • ECS_TASK_DEFINITION_FAMILY: Die Aufgabendefinitionsfamilie, die die Aufgabe verwendet.

      • ECS_TASK_SET_EXTERNAL_ID – Wenn eine Aufgabe für eine externe Bereitstellung erstellt und einer Service-Discovery-Registrierung zugeordnet wird, dann enthält das Attribut ECS_TASK_SET_EXTERNAL_ID die externe ID des Aufgabensatzes.

  • Amazon ECS-Zustandsprüfungen: Amazon ECS führt regelmäßige Zustandsprüfungen auf Container-Ebene durch. Wenn ein Endpunkt die Zustandsprüfung nicht besteht, wird er aus dem DNS-Routing entfernt und als fehlerhaft markiert.

Überlegungen zu Service Discovery

Bei der Verwendung der Serviceerkennung sollte Folgendes berücksichtigt werden:

  • Service Discovery wird für Aufgaben auf Fargate unterstützt, die Plattform-Version v1.1.0 oder höher verwenden. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

  • Services, die für die Verwendung von Service Discovery konfiguriert sind, haben ein Limit von 1 000 Aufgaben für jedes Service. Dies ist auf eine Service-Quote der Route 53 zurückzuführen.

  • Der Create Service-Workflow in der klassischen Amazon-ECS-Konsole unterstützt nur die Registrierung von Services in private DNS-Namespaces. Wenn ein privater DNS-Namespace AWS Cloud Map erstellt wird, wird automatisch eine private gehostete Zone Route 53 erstellt.

  • Die VPC DNS-Attribute müssen für eine erfolgreiche DNS-Auflösung konfiguriert werden. Weitere Informationen zum Konfigurieren der Attribute finden Sie unter DNS-Support für Ihre VPC im Amazon VPC-Benutzerhandbuch.

  • Die für einen Service Discovery-Service erstellten DNS-Datensätze werden auch bei Verwendung von öffentlichen Namespaces immer mit der privaten IP-Adresse für die Aufgabe anstelle der öffentlichen IP-Adresse registriert.

  • Service Discovery erfordert, dass Aufgaben entweder Netzwerkmodus awsvpc, bridge oder host angeben (none wird nicht unterstützt).

  • Wenn die Service-Aufgabendefinition den awsvpc-Netzwerkmodus verwendet, können Sie für jede Service-Aufgabe eine beliebige Kombination aus A- oder SRV-Datensätzen erstellen. Wenn Sie SRV-Datensätze verwenden, ist ein Port erforderlich.

  • Wenn die Service-Aufgabendefinition den Netzwerkmodus bridge oder host verwendet, wird nur der SRV-Datensatz als DNS-Datensatztyp unterstützt. Erstellen Sie einen SRV-Datensatz für jede Serviceaufgabe. Der SRV-Datensatz muss eine Kombination aus Containername und Container-Port aus der Aufgabendefinition angeben.

  • DNS-Datensätze für einen Service zur Serviceerkennung können innerhalb Ihrer VPC abgefragt werden. Sie verwenden das folgende Format: <service discovery service name>.<service discovery namespace>.

  • Wenn Sie eine DNS-Abfrage nach dem Namen des Services durchführen, geben A-Datensätze eine Reihe von IP-Adressen zurück, die Ihren Aufgaben entsprechen. SRV-Datensätze geben einen Satz von IP-Adressen und Ports für jede Aufgabe zurück.

  • Wenn Sie über acht oder weniger fehlerfreie Datensätze verfügen, beantwortet Route 53 alle DNS-Abfragen mit allen fehlerfreien Datensätzen.

  • Wenn alle Datensätze fehlerhaft sind, beantwortet Route 53 DNS-Abfragen mit bis zu acht fehlerhaften Datensätzen.

  • Sie können Service Discovery für einen ECS-Service konfigurieren, der sich hinter einem Load Balancer befindet, aber der Datenverkehr zur Service Discovery wird immer an die Aufgabe und nicht an den Load Balancer weitergeleitet.

  • Service Discovery unterstützt die Verwendung von Classic Load Balancers nicht.

  • Wir empfehlen Ihnen, Zustandsprüfungen auf Containerebene zu verwenden, die von Amazon ECS für Ihren Service zur Service Discovery verwaltet werden.

    • HealthCheckCustomConfig: Amazon ECS verwaltet Zustandsprüfungen für Sie. Amazon ECS verwendet Informationen aus Container- und Zustandsprüfungen sowie Ihren Aufgabenstatus, um den Zustand mit AWS Cloud Map zu aktualisieren. Dies wird beim Erstellen Ihres Service Discovery-Service mit dem Parameter --health-check-custom-config festgelegt. Weitere Informationen finden Sie unter HealthCheckCustomConfig in der AWS Cloud Map-API-Referenz.

  • Wenn Sie die klassische Amazon-ECS-Konsole verwenden, erstellt der Workflow einen Service zur Service Discovery für jeden ECS-Service. Er bildet alle IP-Adressen der Aufgaben als A-Einträge oder IP-Adressen und Port der Aufgaben als SRV-Einträge ab.

  • Service Discovery kann nur beim erstmaligen Erstellen eines Service konfiguriert werden. Die Aktualisierung vorhandener Services zur erstmaligen Konfiguration der Service Discovery oder zur Änderung der aktuellen Konfiguration wird nicht unterstützt.

  • Die AWS Cloud Map-Ressourcen, die bei Verwendung von Service Discovery erstellt werden, müssen manuell bereinigt werden.

Amazon ESC klassische Konsolenerfahrung

Der Workflow zum Erstellen eines Service in der klassischen Amazon-ECS-Konsole unterstützt Service Discovery. Service Discovery kann nur beim erstmaligen Erstellen eines Service konfiguriert werden. Die Aktualisierung vorhandener Services zur erstmaligen Konfiguration der Service Discovery oder zur Änderung der aktuellen Konfiguration wird nicht unterstützt.

Weitere Informationen zum Erstellen eines neuen Amazon-ECS-Service, der Service Discovery verwendet, finden Sie unter Erstellen eines Amazon-ECS-Services.

Service Discovery-Preisgestaltung

Den Kunden, die Amazon ECS-Service Discovery nutzen, werden die Route 53-Ressourcen und die AWS Cloud Map-Discovery API-Operationen berechnet. Dies umfasst die Kosten für das Erstellen der von Route 53 gehosteten Zonen und Abfragen der Service-Registry. Weitere Informationen finden Sie unter AWS Cloud Map-Preisgestaltung im AWS Cloud Map-Entwicklerhandbuch.

Amazon ECS führt Zustandsüberprüfungen auf Containerebene durch und stellt sie für benutzerdefinierte AWS Cloud Map-API-Operationen zur Zustandsüberprüfung bereit. Dies wird den Kunden derzeit ohne Mehrkosten zur Verfügung gestellt. Wenn Sie zusätzliche Zustandsprüfungen für öffentlich zugängliche Aufgaben konfigurieren, werden Ihnen diese Zustandsprüfungen in Rechnung gestellt.