Comportement de mise à l’échelle gérée par Amazon ECS - 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.

Comportement de mise à l’échelle gérée par Amazon ECS

Lorsque vous disposez de fournisseurs de capacité de groupe Auto Scaling qui utilisent la mise à l’échelle gérée, Amazon ECS estime le nombre optimal d’instances à ajouter à votre cluster et utilise cette valeur pour déterminer le nombre d’instances à demander ou à libérer.

Comportement de montée en puissance gérée

Amazon ECS sélectionne un fournisseur de capacité pour chaque tâche en appliquant la stratégie du fournisseur de capacité définie par le service, la tâche autonome ou le cluster par défaut. Amazon ECS suit le reste de ces étapes pour un seul fournisseur de capacité.

Les tâches dépourvues de stratégie de fournisseur de capacité sont ignorées par les fournisseurs de capacité. Une tâche en attente qui n'est pas associée à une stratégie de fournisseur de capacité n'entraînera pas la montée en puissance d'un fournisseur de capacité. Les tâches ou les services ne peuvent pas définir de stratégie de fournisseur de capacité si elles définissent un type de lancement.

Le comportement de montée en puissance est décrit plus en détail ci-dessous.

  • Regroupez toutes les tâches de provisionnement pour ce fournisseur de capacité de façon à ce chaque groupe ait exactement les mêmes besoins en ressources.

  • Lorsque vous utilisez plusieurs types d'instances dans un groupe Auto Scaling, les types d'instances du groupe Auto Scaling sont triés par leurs paramètres. Ces paramètres incluent le vCPU, la mémoire, les interfaces réseau élastiques (ENIs), les ports et. GPUs Les types d'instance les plus petits et les plus grands pour chaque paramètre sont sélectionnés. Pour plus d’informations sur la façon de choisir le type d’instances, consultez la section Instances de EC2 conteneur Amazon pour Amazon ECS.

    Important

    Si les besoins en ressources d'un groupe de tâches sont supérieurs à ceux du plus petit type d'instance du groupe Auto Scaling, ce groupe de tâches ne peut pas être exécuté avec ce fournisseur de capacité. Le fournisseur de capacité ne met pas le groupe Auto Scaling à l'échelle. Les tâches restent à l'état PROVISIONING.

    Pour éviter que les tâches ne restent à l'état PROVISIONING, nous vous recommandons de créer des groupes Auto Scaling et des fournisseurs de capacité distincts pour des besoins en ressources minimales différents. Lorsque vous exécutez des tâches ou créez des services, ajoutez uniquement des fournisseurs de capacité à la stratégie de fournisseur de capacité capables d'exécuter la tâche sur le plus petit type d'instance du groupe Auto Scaling. Pour les autres paramètres, vous pouvez utiliser des contraintes de placement.

  • Pour chaque groupe de tâches, Amazon ECS calcule le nombre d'instances requises pour exécuter les tâches non placées. Ce calcul utilise une stratégie binpack. Cette stratégie tient compte du vCPU, de la mémoire, des interfaces réseau élastiques (ENI), des ports et des GPUs exigences des tâches. Il tient également compte de la disponibilité des ressources des EC2 instances Amazon. Les valeurs des types d'instance les plus grands sont traitées comme le nombre maximal d'instances calculé. Les valeurs du plus petit type d'instance sont utilisées comme protection. Si le type d'instance le plus petit ne peut pas exécuter au moins une instance de la tâche, le calcul considère la tâche comme non compatible. Par conséquent, la tâche est exclue du calcul de montée en puissance. Lorsque toutes les tâches ne sont pas compatibles avec le plus petit type d'instance, l'autoscaling du cluster s'arrête et la valeur CapacityProviderReservation reste à targetCapacity.

  • Amazon ECS publie la CapacityProviderReservation métrique CloudWatch par rapport à minimumScalingStepSize si l'une des conditions suivantes est le cas.

    • Le nombre maximal d’instances calculé est inférieur à la taille minimale de l’étape de mise à l’échelle.

    • La plus faible des valeurs entre la maximumScalingStepSize et le nombre maximal d’instances calculé.

  • CloudWatch les alarmes utilisent la CapacityProviderReservation métrique pour les fournisseurs de capacité. Lorsque la métrique CapacityProviderReservation est supérieure à la valeur targetCapacity, les alarmes augmentent également la DesiredCapacity du groupe Auto Scaling. La targetCapacity valeur est un paramètre du fournisseur de capacité envoyé à l' CloudWatch alarme pendant la phase d'activation du dimensionnement automatique du cluster.

    La targetCapacity par défaut est de 100 %.

  • Le groupe Auto Scaling lance des EC2 instances supplémentaires. Pour éviter le surprovisionnement, Auto Scaling s'assure que la capacité des EC2 instances récemment lancées est stabilisée avant de lancer de nouvelles instances. La scalabilité automatique vérifie si toutes les instances existantes ont passé la instanceWarmupPeriod (maintenant moins l'heure de lancement de l'instance). L’augmentation horizontale est bloquée pour les instances en cours de instanceWarmupPeriod.

    Le nombre de secondes par défaut pour qu'une instance nouvellement lancée se prépare est de 300.

Pour plus d'informations, consultez Exploration approfondie de la mise à l'échelle automatique du cluster Amazon ECS.

Considérations relatives aux montées en puissance

Tenez compte des points suivants pour le processus de montée en puissance :

  • Bien qu'il existe plusieurs contraintes de placement, nous vous recommandons d'utiliser uniquement la contrainte de placement des tâches distinctInstance. Celle-ci empêche l'arrêt du processus de montée en puissance, car vous utilisez une contrainte de placement qui n'est pas compatible avec les instances échantillonnées.

  • La mise à l'échelle gérée fonctionne mieux si votre groupe Auto Scaling utilise les mêmes types d'instance ou des types d'instance similaires.

  • Lorsqu'un processus de mise à l'échelle horizontale est requis et qu'aucune instance de conteneur n'est en cours d'exécution, Amazon ECS monte toujours en puissance à deux instances dans un premier temps, puis exécute des processus de mise à l'échelle horizontale ou de montée en puissance supplémentaires. Toute montée en puissance attend la période de préparation de l'instance. Pour la mise à l'échelle horizontale, Amazon ECS attend 15 minutes après une montée en puissance avant de lancer des processus de mise à l'échelle horizontale à tout moment.

  • La deuxième étape de montée en puissance doit attendre l'expiration du délai de la instanceWarmupPeriod, ce qui peut affecter la limite d'échelle globale. Si vous devez réduire ce délai, assurez-vous qu'il instanceWarmupPeriod est suffisamment long pour que l' EC2instance puisse lancer et démarrer l'agent Amazon ECS (afin d'éviter le surprovisionnement).

  • L'autoscaling de cluster prend en charge la configuration du lancement, les modèles de lancement et plusieurs types d'instances dans le groupe Auto Scaling du fournisseur de capacité. Vous pouvez également utiliser la sélection de type d'instance basée sur des attributs sans plusieurs types d'instances.

  • Lorsque vous utilisez un groupe Auto Scaling avec des instances à la demande et plusieurs types d'instance ou instances Spot, placez les types d'instances plus importants plus haut dans la liste des priorités et ne spécifiez pas de pondération. La spécification d'une pondération n'est pas prise en charge pour le moment. Pour plus d'informations, consultez Groupes Auto Scaling avec types d'instance multiples dans le Guide de l'utilisateur AWS Auto Scaling .

  • Amazon ECS lance ensuite la minimumScalingStepSize, si le nombre maximal d'instances calculé est inférieur à la taille minimale de l'étape de mise à l'échelle, ou la plus faible des valeurs entre maximumScalingStepSize et la valeur maximale calculée du nombre d'instances.

  • Si un service Amazon ECS ou run-task lance une tâche et que les instances de conteneur du fournisseur de capacité ne disposent pas de ressources suffisantes pour démarrer la tâche, Amazon ECS limite le nombre de tâches ayant ce statut pour chaque cluster et empêche toute tâche de dépasser cette limite. Pour de plus amples informations, veuillez consulter Quotas de service Amazon ECS service.

Comportement de mise à l'échelle horizontale gérée

Amazon ECS surveille les instances de conteneur pour chaque fournisseur de capacité au sein du cluster. Lorsqu'une instance de conteneur n'exécute aucune tâche, elle est considérée comme vide et Amazon ECS démarre le processus de mise à l'échelle horizontale.

CloudWatch les alarmes scale-in nécessitent 15 points de données (15 minutes) avant que le processus de scale-in ne démarre pour le groupe Auto Scaling. Une fois que le processus de mise à l'échelle horizontale démarre jusqu'à ce qu'Amazon ECS ait besoin de réduire le nombre d'instances de conteneur enregistrées, le groupe Auto Scaling définit la DesireCapacity pour qu'elle soit supérieure à une instance et inférieure à 50 % par minute.

Lorsqu'Amazon ECS demande une montée en puissance (lorsque la CapacityProviderReservation est supérieure à 100) alors qu'un processus de mise à l'échelle horizontale est en cours, le processus de mise à l'échelle horizontale est arrêté et démarre dès le début si nécessaire.

Le comportement de mise à l'échelle horizontale est décrit plus en détail ci-dessous :

  1. Amazon ECS calcule le nombre d'instances de conteneur vides. Une instance de conteneur est considérée comme vide même lorsque les tâches de démon sont exécutées.

  2. Amazon ECS définit la valeur CapacityProviderReservation sur un nombre compris entre 0 et 100 qui utilise la formule suivante pour représenter le ratio entre la taille que doit avoir le groupe Auto Scaling par rapport à sa taille réelle, exprimé en pourcentage. Amazon ECS publie ensuite la métrique sur CloudWatch. Pour plus d'informations sur le calcul de la métrique, veuillez consulter le billet de blog Deep Dive on Amazon ECS Cluster Auto Scaling.

    CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
  3. La CapacityProviderReservation métrique génère une CloudWatch alarme. Cette alarme met à jour la valeur DesiredCapacity pour le groupe Auto Scaling. Ensuite, l'une des actions suivantes se produit :

    • Si vous n'utilisez pas de terminaison gérée par le fournisseur de capacité, le groupe Auto Scaling sélectionne les EC2 instances conformément à la politique de résiliation du groupe Auto Scaling et met fin aux instances jusqu'à ce que le nombre d' EC2 instances atteigne leDesiredCapacity. L'enregistrement des instances de conteneur est ensuite annulé du cluster.

    • Si toutes les instances de conteneur utilisent la protection contre la résiliation gérée, Amazon ECS supprime la protection contre la mise à l'échelle horizontale sur les instances de conteneur qui sont vides. Le groupe Auto Scaling sera alors en mesure de mettre fin aux EC2 instances. L'enregistrement des instances de conteneur est ensuite annulé du cluster.