AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Wie behebe ich ein Problem mit einem getrennten Amazon ECS-Agenten?
Meine Container-Instances für Amazon Elastic Container Service (Amazon ECS) sind nicht verbunden.
Kurzbeschreibung
Es ist normal, dass der Amazon ECS-Container-Agent im Rahmen des normalen Betriebs mehrmals innerhalb einer Stunde die Verbindung trennt und erneut herstellt. Diese Änderungsereignisse geben keinen Anlass zur Sorge. Verbindungsereignisse, die nur wenige Minuten andauern, deuten möglicherweise nicht auf Probleme mit dem Container-Agenten oder der Container-Instance hin.
Wenn der Container-Agent jedoch länger im getrennten Zustand bleibt, kann die Container-Instance nicht als Teil des Amazon ECS-Clusters betrieben werden. Dieses Problem kann aus einem der folgenden Gründe verursacht werden:
- Netzwerkprobleme verhindern die Kommunikation zwischen der Instance und Amazon ECS.
- Der Container-Agent verfügt nicht über die erforderlichen AWS Identity and Access Management (IAM)-Berechtigungen für die Kommunikation mit Amazon ECS-Endpunkten.
- Es gibt Probleme mit dem Host- oder Docker-Daemon innerhalb der Container-Instance.
- Auf dem zugrunde liegenden Host gibt es einen Ressourcenkonflikt.
Hinweis: Es hat sich bewährt, die neueste Version des Amazon ECS-Container-Agenten zu verwenden.
Lösung
Hinweis: Die folgende Lösung gilt für Amazon ECS-optimierte Amazon Linux 2-AMIs.
Du kannst SSH-Schlüssel verwenden, um eine Verbindung zu den Amazon EC2-Instances herzustellen. Wenn du die SSH-Schlüssel nicht generiert hast, kannst du den Session Manager, eine Funktion von AWS Systems Manager, verwendest, um eine Verbindung zu der Instance herzustellen. Standardmäßig ist Systems Manager Agent auf Amazon Linux 2-AMIs und Amazon Linux 2 ECS-optimierten Basis-AMI installiert.
Sicherstellen, dass der Container-Agent auf der Container-Instance ausgeführt wird
Führe einen der folgenden Befehle auf der Container-Instance aus, um den Status und die Konnektivität des Amazon ECS-Container-Agenten zu überprüfen:
$ sudo systemctl status ecs $ sudo docker ps -f name=ecs-agent
Die Ausgabe gibt Aktiv (wird ausgeführt) an und sieht ähnlich wie folgt aus:
ecs.service - Amazon Elastic Container Service - container agent Loaded: loaded (/usr/lib/systemd/system/ecs.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-02-15 15:51:09 UTC; 37min ago Docs: https://aws.amazon.com/documentation/ecs/ Process: 30039 ExecStopPost=/usr/libexec/amazon-ecs-init post-stop (code=exited, status=0/SUCCESS) Process: 29987 ExecStop=/usr/libexec/amazon-ecs-init stop (code=exited, status=0/SUCCESS) Process: 30077 ExecStartPre=/usr/libexec/amazon-ecs-init pre-start (code=exited, status=0/SUCCESS) Main PID: 30123 (amazon-ecs-init) Tasks: 5 Memory: 3.7M CGroup: /system.slice/ecs.service └─30123 /usr/libexec/amazon-ecs-init start CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb1dc8d4ab3b amazon/amazon-ecs-agent:latest "/agent" 3 days ago Up 3 days (healthy) ecs-agent
Wenn das Problem durch einen getrennten Agenten verursacht wird, führe den folgenden Befehl aus, um den ECS-Agenten neu zu starten:
$ sudo systemctl restart ecs
Hinweis: Nachdem du die vorherigen Befehle ausgeführt hast, wird keine Ausgabe zurückgegeben.
Führe den folgenden Befehl aus, um zu überprüfen, ob der Agent ausgeführt wird:
sudo systemctl status ecs
Sicherstellen, dass der Docker-Service auf der Container-Instance ausgeführt wird
Führe den folgenden Befehl aus, um zu überprüfen, ob der Docker-Service auf der betroffenen Container-Instance ausgeführt wird:
sudo systemctl status docker
Die Ausgabe gibt Aktiv (wird ausgeführt) an und sieht ähnlich wie folgt aus:
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2022-02-11 17:42:32 UTC; 3 days ago Docs: https://docs.docker.com Process: 4307 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS) Process: 4296 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS) Main PID: 4315 (dockerd) Tasks: 24 Memory: 360.5M CGroup: /system.slice/docker.service ├─4315 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536 ├─6010 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.17.0.2 -container-port 80 └─6016 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.17.0.2 -container-port 80
Wenn der Docker-Service inaktiv ist, führe den folgenden Befehl aus, um den Docker-Service neu zu starten:
sudo systemctl restart docker
Hinweis: Nachdem du die vorherigen Befehle ausgeführt hast, wird keine Ausgabe zurückgegeben.
Führe den folgenden Befehl aus, um zu überprüfen, ob der Docker-Service neu gestartet wurde:
sudo systemctl status docker
Die Protokolldateien für den Container-Agenten und Docker überprüfen
Wenn die Container-Instance immer noch nicht verbunden sind, dann überprüfe die Protokolldateien auf dem Container-Host für den Container-Agenten und Docker.
Suche in den folgenden Protokolldateien nach Schlüsselwörtern wie "error", "warn" oder"agent transition state":
- Die neuesten Protokolle des Amazon ECS-Container-Agenten unter /var/log/ecs/ecs-agent.log ansehen Hinweis: Du kannst das rotierte Protokoll anzeigen, indem du nach /var/log/ecs/ecs-agent-log.timestamp filterst
- Das Amazon ECS-Initialisierungsprotokoll unter /var/log/ecs/ecs-init.log ansehen.
- Die Ausführungsprotokolle der Benutzerdaten unter /var/log/cloud-init.log ansehen
- Die Docker-Daemon-Protokolle mit dem Befehl sudo journalctl -u docker ansehen
Wenn du Linux verwendest, kannst du auch den Beendencode überprüfen, um weitere Informationen zum gestoppten Agenten-Container zu erhalten. Weitere Informationen findest du unter Beedencodes auf der GitHub-Website.
Führe den folgenden Befehl aus, um den Beendencode abzurufen:
docker inspect your container ID
Ersetze die Container-ID durch die ID des gestoppten Containers.
Hinweis: Du kannst den Amazon ECS-Protokollsammler verwenden, um allgemeine Betriebssystemprotokolle, Docker-Protokolle und Container-Agent-Protokolle für Amazon ECS zu sammeln.
Sicherstellen, dass das IAM-Instance-Profil über die erforderlichen Berechtigungen verfügt
Wenn der Container-Agent immer noch nicht verbunden ist, stelle sicher, dass das mit der Container-Instance verknüpfte IAM-Instance-Profil über die erforderlichen IAM-Berechtigungen verfügt:
-
Verwende SSH oder Session Manager, um eine Verbindung zur Instance herzustellen.
-
Führe den folgenden Befehl aus, um die Instance-Metadaten im Instance-Profil anzuzeigen, das der Instance zugeordnet ist:
curl http://169.254.169.254/latest/meta-data/iam/infoDie Ausgabe sieht etwa wie folgt aus:
{ "Code" : "Success", "LastUpdated" : "2022-02-16T22:42:17Z", "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole", "InstanceProfileId" : "AIPA4VIZXOFF55F72XIZN" } -
Stelle sicher, dass die IAM-Rolle die richtigen Berechtigungen für die Container-Instances enthält.
-
Um bestimmte Anmeldeinformationsfehler zu überprüfen, führe einen Befehl ähnlich dem folgenden aus, um das Protokoll des Container-Agenten auf eine Liste von ECS-Protokollen zu überprüfen:
cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-##Ersetze YYYY-MM-DD-## durch den entsprechenden Zeitstempel.
Hinweis: Das Protokoll des Container-Agenten wird jede Stunde rotiert. Das Suffix ändert sich automatisch, um das aktuelle Datum und die aktuelle Uhrzeit widerzuspiegeln. Aktualisiere den Befehl, sodass er den Datumsbereich und die Protokoll-ID enthält, wann das Problem aufgetreten ist.
Sicherstellen, dass die Container-Instance über genügend Ressourcen verfügt, um den ECS-Agenten auszuführen
Wenn die Aufgaben eine hohe Speicher-/CPU-Auslastung haben, verfügt die Container-Instance möglicherweise nicht über genügend Ressourcen, um den ECS-Agenten auszuführen.
Der Amazon ECS-Container-Agent verwendet die Docker-Funktion ReadMemInfo(), um die Menge an Speicher abzufragen, die für das Betriebssystem verfügbar ist.
Führe den folgenden Befehl auf der Container-Instance aus, um den Gesamtspeicher anzuzeigen, der vom Betriebssystem erkannt wird:
free -b
Beispielausgabe für eine Instance t2.large, auf der das Amazon ECS-optimierte Amazon Linux AMI ausgeführt wird:
total used free shared buff/cache available Mem: 8361193472 298577920 7325388800 405504 737226752 7844274176 Swap: 0 0 0
Du kannst sich dafür entscheiden, etwas Speicher zu reservieren, für den Amazon ECS-Container-Agenten und andere wichtige Systemprozesse auf den Container-Instances. Wenn du diesen Speicher reservierst, kannst du sicherstellen, dass die Container die Aufgabe nicht um denselben Speicher konkurrieren. Weitere Informationen findest unter Speicher für Amazon ECS Linux-Container-Instances reservieren.
Sicherstellen, dass die Umgebungsvariable ECS_CLUSTER den richtigen Clusternamen hat
Wenn der Amazon ECS-Container-Agent-Konfigurationsparameter ECS_CLUSTER den falschen Clusternamen hat, kann die Container-Instance dem Cluster nicht beitreten. Führe den folgenden Befehl aus, um den Inhalt der Datei /etc/ecs/ecs.config auf diesen Parameter zu überprüfen:
cat /etc/ecs/ecs.config
Sicherstellen, dass der ECS-Agent mit ECS-Endpunkten kommunizieren kann
Um eine Verbindung mit ECS-Endpunkten herzustellen, müssen die Netzwerk-Zugriffssteuerungslisten und die Container-Instance-Sicherheitsgruppe ausgehende Verbindungen auf Port 443 (HTTPS) zulassen.
Um die ausgehenden Verbindungen zu ECS-Endpunkten (ACS/TCS) zu überprüfen, führe einen der folgenden Befehle auf die Container-Instance aus:
sudo yum install telnet -y$ telnet ecs.region.amazonaws.com 443
-oder-
$ curl https://ecs.region.amazonaws.com
Überprüfe die folgenden bewährten Methoden:
- Sofern die Anwendung kein bestimmtes Betriebssystem oder eine andere Docker-Version benötigt, verwende das Amazon ECS-optimierte AMI, um die ECS-Workloads auszuführen.
- Verwende die neueste Version des Amazon ECS-Container-Agenten. Die neueste Version enthält erweiterte Funktionen und bietet wichtige Updates.
- Konfiguriere Aufgaben mit CPU- und Speicherlimits.
Ähnliche Informationen
Problembehandlung bei Amazon ECS
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr