J'ai implémenté le Job Observer Pattern en utilisant SQS et ECS. Les descriptions de travail sont transmises à la file d'attente SQS pour traitement. Le traitement du travail s'exécute sur un cluster ECS dans un groupe Auto-Scaling exécutant les tâches ECS Docker.Mise à l'échelle automatique du cluster ECS vers/depuis zéro instances
Chaque ECS tâche ne:
- un message Lire la file d'attente SQS
- Exécuter travail sur les données (~ 1 heure)
- message Supprimer
- boucle alors qu'il ya plus de messages
Je voudrais réduire le cluster lorsqu'il n'y a plus de travail pour chaque Instance, éventuellement à zéro instance.
En regardant this similar post, les réponses suggèrent que l'entrée d'échelle devrait être traitée en dehors de l'ASG d'une manière ou d'une autre. Les instances se mettent automatiquement à l'échelle, soit en s'auto-terminant explicitement, soit en désactivant la protection d'instance ASG lorsqu'il n'y a plus de messages. Cela ne gère pas non plus le cas d'exécution de plusieurs tâches ECS sur une seule instance, car une tâche individuelle ne doit pas se terminer si d'autres tâches sont exécutées en parallèle. Suis-je limité à une mise à l'échelle automatique et une seule tâche par instance? Une façon de terminer seulement une fois que toutes les tâches ECS sur une instance ont quitté? Toute autre alternative d'échelle?
Pouvez-vous vérifier si l'instance est en cours d'exécution d'un travail avec une simple application installée sur vos instances? Par exemple en obtenant l'utilisation de la CPU/mémoire? – Mahdi