ECSServices Amazon - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

ECSServices Amazon

Vous pouvez utiliser un ECS service Amazon pour exécuter et gérer simultanément un nombre spécifié d'instances d'une définition de tâche dans un ECS cluster Amazon. Si l'une de vos tâches échoue ou s'arrête, le planificateur de ECS services Amazon lance une autre instance de votre définition de tâche pour la remplacer. Cela permet de maintenir le nombre de tâches souhaité dans le service.

Le cas échéant, vous pouvez également exécuter votre service derrière un équilibreur de charge. Cet équilibreur de charge répartit le trafic sur les tâches associées au service.

Nous vous recommandons d'utiliser le planificateur de service pour les services et applications sans état de longue durée. Le planificateur de service garantit que la stratégie de planification que vous spécifiez est suivie et replanifie les tâches en cas d'échec de l'une d'elles. Par exemple, si l'infrastructure sous-jacente échoue, le planificateur de services replanifie une tâche. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont le planificateur place et résilie les tâches. Si une tâche d'un service s'arrête, le planificateur lance une nouvelle tâche pour la remplacer. Ce processus se poursuit jusqu'à ce que votre service atteigne le nombre de tâches souhaité en fonction de la stratégie de planification que le service utilise. La stratégie de planification du service est également appelée type de service.

Le planificateur de services remplace également les tâches jugées défectueuses après l'échec d'une surveillance de l'état du conteneur ou du groupe cible de l'équilibreur de charge. Ce remplacement dépend des paramètres de définition du service maximumPercent et desiredCount. Si une tâche est marquée comme défectueuse, le planificateur de services lance d'abord une tâche de remplacement. Ensuite, ce qui suit se produit.

  • Si l'état de santé de la tâche de remplacement est égal àHEALTHY, le planificateur de services arrête la tâche défectueuse

  • Si l'état de santé de la tâche de remplacement est UNHEALTHY, le planificateur arrête soit la tâche de remplacement défectueuse, soit la tâche défectueuse existante pour que le nombre total de tâches soit égal à desiredCount.

Si le paramètre maximumPercent empêche le planificateur de démarrer d'abord une tâche de remplacement, le planificateur arrête une par une les tâches défectueuses au hasard pour libérer de la capacité, puis lance une tâche de remplacement. Le processus de démarrage et d'arrêt se poursuit jusqu'à ce que toutes les tâches défectueuses soient remplacées par des tâches saines. Une fois que toutes les tâches défectueuses ont été remplacées et que seules les tâches saines sont en cours d'exécution, si le nombre total de tâches dépasse le desiredCount, les tâches saines sont arrêtées au hasard jusqu'à ce que le nombre total de tâches soit égal à desiredCount. Pour plus d'informations sur maximumPercent et desiredCount, veuillez consulter Paramètres de définition de service (langue française non garantie).

Le planificateur de service inclut une logique qui limite la fréquence de redémarrage des tâches en cas d'échec de démarrage répété. Si une tâche est arrêtée sans avoir saisi d'état RUNNING, le planificateur de service commence à réduire les tentatives de lancement et envoie un message d'événement de service. Ce comportement évite d'utiliser inutilement les ressources pour des tâches qui ont échoué avant que vous puissiez résoudre le problème. Une fois le service mis à jour, le planificateur de service se comporte de nouveau normalement. Pour plus d’informations, consultez Logique d'accélération des ECS services Amazon et Afficher les messages relatifs ECS aux événements du service Amazon.

Deux stratégies de planificateur de service sont disponibles :

  • REPLICA – La stratégie de planification des réplicas place et gère le nombre de tâches souhaité dans votre cluster. Par défaut, le planificateur de service répartit les tâches entre les zones de disponibilité. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont les tâches sont placées. Pour de plus amples informations, veuillez consulter Stratégie de réplication.

  • DAEMON – La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Lors de l'utilisation de cette stratégie, il n'est pas nécessaire de spécifier un nombre de tâches souhaité, une stratégie de placement des tâches ou d'utiliser les politiques Service Auto Scaling. Pour de plus amples informations, veuillez consulter Stratégie Daemon.

    Note

    Les tâches Fargate ne prennent pas en charge la stratégie de planification DAEMON.

Stratégie Daemon

La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Le planificateur de services évalue les contraintes de placement des tâches pour les tâches en cours d'exécution et arrête les tâches qui ne répondent pas aux contraintes de placement. Lorsque vous utilisez cette stratégie, vous n'avez pas besoin de spécifier le nombre de tâches souhaité, de stratégie de placement des tâches ou d'utiliser les politiques de Service Auto Scaling.

Amazon ECS réserve les ressources de calcul des instances de conteneurCPU, notamment la mémoire et les interfaces réseau, pour les tâches du démon. Lorsque vous lancez un service daemon sur un cluster avec d'autres services de réplication, Amazon ECS donne la priorité à la tâche du démon. Cela signifie que la tâche daemon est la première tâche à être lancée sur les instances et la dernière à s'arrêter une fois que toutes les tâches de réplication ont été arrêtées. Cette stratégie garantit que les ressources ne sont pas utilisées par les tâches de réplica en attente et sont disponibles pour les tâches de démon.

Le planificateur de service du démon ne place aucune tâche sur les instances qui ont un statut DRAINING. Si une instance de conteneur passe au statut DRAINING, les tâches du démon sont arrêtées. Le planificateur de service surveille également l'ajout de nouvelles instances de conteneur à votre cluster et leur ajoute les tâches du démon.

Lorsque vous spécifiez une configuration de déploiement, la valeur du maximumPercent paramètre doit être 100 (spécifiée sous forme de pourcentage), qui est la valeur par défaut utilisée si elle n'est pas définie. La valeur par défaut du minimumHealthyPercent paramètre est 0 (spécifiée sous forme de pourcentage).

Vous devez redémarrer le service lorsque vous modifiez les contraintes de placement pour le service de démon. Amazon met à jour de ECS manière dynamique les ressources réservées sur les instances éligibles pour la tâche daemon. Pour les instances existantes, le planificateur tente de placer la tâche sur l'instance.

Un nouveau déploiement démarre lorsqu'il existe une modification de la taille de la tâche ou de la réservation de ressource de conteneur dans la définition de tâche. Amazon ECS récupère les mises à jour CPU et les réservations de mémoire pour le démon, puis bloque cette capacité pour la tâche du démon.

Si les ressources sont insuffisantes pour l'un ou l'autre des cas ci-dessus, l'une des situations suivantes se produit :

  • Le placement de la tâche échoue.

  • Un CloudWatch événement est généré.

  • Amazon ECS continue d'essayer de planifier la tâche sur l'instance en attendant que les ressources soient disponibles.

  • Amazon ECS libère toutes les instances réservées qui ne répondent plus aux critères de contrainte de placement et arrête les tâches daemon correspondantes.

La stratégie de planification de démon peut être utilisée dans les cas suivants :

  • Exécution de conteneurs d'applications

  • Exécution de conteneurs de support pour les tâches de journalisation, de surveillance et de suivi

Les tâches qui utilisent le type de lancement Fargate ou les types de contrôleur de déploiement CODE_DEPLOY ou EXTERNAL ne prennent pas en charge la stratégie de planification de démon.

Lorsque le planificateur de service arrête d'exécuter les tâches, il tente de conserver un équilibre entre les zones de disponibilité de votre cluster. Le planificateur utilise la logique suivante :

  • Si une stratégie de placement est définie, utilisez cette stratégie pour sélectionner les tâches à résilier. Par exemple, si une stratégie de répartition par zone de disponibilité est définie pour un service, une tâche est sélectionnée, laissant ainsi aux tâches restantes la meilleure répartition.

  • Si aucune stratégie de placement n'est définie, maintenez l'équilibre entre les zones de disponibilité de votre cluster selon la logique suivante :

    • Triez les instances de conteneur valides. Accordez la priorité aux instances ayant le plus grand nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C en ont chacune deux tâches de service en cours d'exécution, les instances de conteneur des zones B ou C sont considérées comme optimales pour la mise hors service.

    • Arrêtez la tâche sur une instance de conteneur dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégier les instances de conteneur ayant le plus grand nombre de tâches en cours d'exécution pour ce service.

Stratégie de réplication

La stratégie de planification de réplica place et gère le nombre de tâches souhaité dans votre cluster.

Pour un service qui exécute des tâches sur Fargate, lorsque le planificateur de service lance de nouvelles tâches ou cesse l'exécution des tâches, le planificateur de service tente de maintenir un équilibre entre les zones de disponibilité de votre service. Vous n'avez pas besoin de préciser les stratégies ou les contraintes de placement des tâches.

Lorsque vous créez un service qui exécute des tâches sur des EC2 instances, vous pouvez éventuellement définir des stratégies et des contraintes de placement des tâches afin de personnaliser les décisions relatives au placement des tâches. Si aucune stratégie ou contrainte de placement de tâche n'est spécifiée, le planificateur de service répartit les tâches entre les zones de disponibilité par défaut. Le planificateur de service utilise la logique suivante :

  • Détermine les instances de conteneur de votre cluster qui peuvent prendre en charge la définition des tâches de votre service (par exemple, les exigencesCPU, la mémoire, les ports et les attributs des instances de conteneur).

  • Détermine les instances de conteneur qui respectent les contraintes de placement éventuellement définies pour le service.

  • Lorsqu'un service de réplication dépend d'un service démon (par exemple, une tâche daemon log router qui doit être exécutée avant que les tâches puissent utiliser la journalisation), créez une contrainte de placement des tâches qui garantit que les tâches du service daemon sont placées sur l'EC2instance avant les tâches du service de réplique. Pour de plus amples informations, veuillez consulter Exemple de contraintes de placement de ECS tâches Amazon.

  • Lorsqu'une stratégie de placement est définie, utilisez-la pour sélectionner une instance parmi les candidats restants.

  • Lorsqu'aucune stratégie de placement n'est définie, utilisez la logique suivante pour équilibrer les tâches entre les zones de disponibilité (Availability Zones) de votre cluster :

    • Trie les instances de conteneur valides. Accorde la priorité aux instances ayant le plus petit nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C n'en ont pas, les instances de conteneur valides des zones B ou C sont considérées comme optimales pour le placement.

    • Place la nouvelle tâche de service sur une instance de conteneur valide dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégie les instances de conteneur ayant le plus petit nombre de tâches en cours d'exécution pour ce service.