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.
Comment résoudre les problèmes liés à la déconnexion d'un agent Amazon ECS ?
Mes instances de conteneur pour Amazon Elastic Container Service (Amazon ECS) sont déconnectées.
Brève description
Il est normal que votre agent de conteneur Amazon ECS se déconnecte et se reconnecte plusieurs fois par heure dans le cadre de son fonctionnement normal. Ces événements de changement ne sont pas préoccupants. Les événements de connexion qui ne durent que quelques minutes peuvent ne pas indiquer de problèmes avec l'agent de conteneur ou votre instance de conteneur.
Toutefois, si l'agent de conteneur reste déconnecté pendant plus longtemps, l'instance de conteneur ne peut pas fonctionner dans le cadre de votre cluster Amazon ECS. Ce problème peut être dû à l'une des raisons suivantes :
- Des problèmes de réseau empêchent la communication entre l'instance et Amazon ECS.
- L'agent de conteneur ne dispose pas des autorisations Gestion des identités et des accès AWS (AWS IAM) requises pour communiquer avec les points de terminaison Amazon ECS.
- L'hôte ou le démon Docker à l'intérieur de l'instance de conteneur présente des problèmes.
- Il existe un conflit de ressources dans l'hôte sous-jacent.
Remarque : Il est recommandé d'utiliser la dernière version de l'agent de conteneur Amazon ECS.
Résolution
Remarque : La résolution suivante s'applique aux AMI Amazon Linux 2 optimisées pour Amazon ECS.
Vous pouvez utiliser des clés SSH pour vous connecter à vos instances Amazon EC2. Si les clés SSH ne sont pas générées, vous pouvez utiliser Session Manager, une fonctionnalité d'AWS Systems Manager, pour vous connecter à votre instance. Par défaut, l'agent Systems Manager est installé sur les AMI Amazon Linux 2 et sur les AMI de base optimisées pour Amazon Linux 2 ECS.
Vérifier que l'agent de conteneur s'exécute sur l'instance de conteneur
Pour vérifier l'état et la connectivité de l'agent de conteneur Amazon ECS, exécutez l'une des commandes suivantes sur votre instance de conteneur :
$ sudo systemctl status ecs $ sudo docker ps -f name=ecs-agent
La sortie indique qu'elle est active (en cours d'exécution) et ressemble à ce qui suit :
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
Si le problème est dû à la déconnexion d'un agent, exécutez la commande suivante pour redémarrer l'agent ECS :
$ sudo systemctl restart ecs
Remarque : Aucune sortie n'est renvoyée après avoir exécuté les commandes précédentes.
Pour vérifier que l'agent est en cours d'exécution, exécutez la commande suivante :
sudo systemctl status ecs
Vérifier que le service Docker s'exécute sur l'instance de conteneur
Pour vérifier que le service Docker est en cours d'exécution sur l'instance de conteneur concernée, exécutez la commande suivante :
sudo systemctl status docker
La sortie indique qu'elle est active (en cours d'exécution) et ressemble à ce qui suit :
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
Si le service Docker est inactif, exécutez la commande suivante pour redémarrer le service Docker :
sudo systemctl restart docker
Remarque : Aucune sortie n'est renvoyée après avoir exécuté les commandes précédentes.
Pour vérifier que le service Docker a redémarré, exécutez la commande suivante :
sudo systemctl status docker
Consulter les fichiers journaux de l'agent de conteneur et de Docker
Si votre instance de conteneur est toujours déconnectée, consultez les fichiers journaux sur l'hôte du conteneur pour l'agent de conteneur et Docker.
Consultez les fichiers journaux suivants pour les mots-clés, tels que "error", "warn" ou "agent transition state" :
- Consulter les derniers journaux de l'agent de conteneur Amazon ECS à l'adresse /var/log/ecs/ecs-agent.log
Remarque : Vous pouvez consulter le journal renouvelé en filtrant sur /var/log/ecs/ecs-agent-log.timestamp - Consultez le journal d’initialisation Amazon ECS dans le fichier /var/log/ecs/ecs-init.log.
- Consulter les journaux d'exécution des données utilisateur sur /var/log/cloud-init.log
- Afficher les journaux du démon Docker à l'aide de la commande sudo journalctl -u docker
Si vous utilisez Linux, vous pouvez également vérifier le code de sortie pour plus d'informations sur le conteneur d'agent arrêté. Pour en savoir plus, consultez la page exitcodes sur le site Web de GitHub.
Pour obtenir le code de sortie, exécutez la commande suivante :
docker inspect your container ID
Remplacez votre ID de conteneur par l'ID du conteneur arrêté.
Remarque : Vous pouvez utiliser le collecteur de journaux Amazon ECS pour collecter les journaux généraux du système d'exploitation, les journaux Docker et les journaux de l’agent de conteneur Amazon ECS.
Vérifier que le profil d'instance IAM dispose des autorisations nécessaires
Si l'agent de conteneur est toujours déconnecté, vérifiez que le profil d'instance IAM associé à l'instance de conteneur dispose des autorisations IAM nécessaires :
-
Utilisez SSH ou Session Manager pour vous connecter à l'instance.
-
Pour afficher les métadonnées de l'instance sur le profil d'instance associé à l'instance, exécutez la commande suivante :
curl http://169.254.169.254/latest/meta-data/iam/infoVous obtiendrez une sortie de ce type :
{ "Code" : "Success", "LastUpdated" : "2022-02-16T22:42:17Z", "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole", "InstanceProfileId" : "AIPA4VIZXOFF55F72XIZN" } -
Vérifiez que le rôle IAM contient les autorisations appropriées pour vos instances de conteneur.
-
Pour vérifier des erreurs d'identification spécifiques, exécutez une commande similaire à la suivante pour rechercher la liste des journaux ECS dans le journal de l'agent de conteneur :
cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-##Remplacez YYYY-MM-DD-## par l'horodatage pertinent.
Remarque : Le journal de l’agent de conteneur est renouvelé toutes les heures. Le suffixe change automatiquement pour refléter la date et l'heure courantes. Mettez à jour la commande pour inclure la plage de dates et l'ID de journal correspondant à la date à laquelle le problème s'est produit.
Vérifier que votre instance de conteneur dispose d’une quantité suffisante de ressources pour exécuter l'agent ECS
Si vos tâches nécessitent une utilisation élevée de la mémoire/du processeur, il est possible que votre instance de conteneur ne dispose pas d’une quantité suffisante de ressources pour exécuter l'agent ECS.
L'agent de conteneur Amazon ECS utilise la fonction ReadMemInfo() de Docker pour interroger la quantité de mémoire disponible pour le système d'exploitation.
Exécutez la commande suivante sur votre instance de conteneur pour afficher la mémoire totale reconnue par le système d'exploitation :
free -b
Exemple de sortie pour une instance t2.large exécutant l'AMI Amazon Linux optimisée pour Amazon ECS :
total used free shared buff/cache available Mem: 8361193472 298577920 7325388800 405504 737226752 7844274176 Swap: 0 0 0
Vous pouvez, si vous le souhaitez, réserver de la mémoire pour l'agent de conteneur Amazon ECS et d'autres processus système critiques sur vos instances de conteneur. La réservation de cette mémoire permet de s'assurer que les conteneurs de votre tâche ne se disputent pas la même mémoire. Pour plus d'informations, consultez la section Réservation de la mémoire d'une instance de conteneur Amazon ECS Linux.
Vérifier que le nom de cluster de la variable d'environnement ECS_CLUSTER est correct
Si le paramètre de configuration de l'agent de conteneur Amazon ECS ECS_CLUSTER a un nom de cluster incorrect, l'instance de conteneur ne peut pas rejoindre le cluster. Pour vérifier le contenu du fichier /etc/ecs/ecs.config afin de vérifier ce paramètre, exécutez la commande suivante :
cat /etc/ecs/ecs.config
Vérifier que l'agent ECS peut communiquer avec les points de terminaison ECS
Pour se connecter aux points de terminaison ECS, les listes de contrôle d'accès au réseau et le groupe de sécurité de l'instance de conteneur doivent autoriser les connexions sortantes sur le port 443 (HTTPS).
Pour vérifier les connexions sortantes aux points de terminaison ECS (ACS/TCS), exécutez l'une des commandes suivantes sur votre instance de conteneur :
sudo yum install telnet -y$ telnet ecs.region.amazonaws.com 443
-ou-
$ curl https://ecs.region.amazonaws.com
Examinez les bonnes pratiques suivantes :
- À moins que votre application ne nécessite un système d'exploitation spécifique ou une version de Docker qui n'est pas prise en charge, utilisez l'AMI optimisée pour Amazon ECS pour exécuter vos charges de travail ECS.
- Utilisez la dernière version de l'agent de conteneur Amazon ECS. La dernière version inclut des fonctionnalités améliorées et fournit des mises à jour importantes.
- Configurez les tâches avec des limites de processeur et de mémoire.
Informations connexes
Résolution de problèmes liés à Amazon ECS
Créer le rôle d'instance de conteneur
Consultation des journaux des agents de conteneur Amazon ECS
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- demandé il y a 4 mois
- demandé il y a 4 mois
- demandé il y a 3 ans
- demandé il y a un an