Lorsque j'ai créé un service dans Amazon EC2 Container Service, il y avait 2 options pour le type de service: REPLICA et DAEMON.
Quelle est la différence exacte entre eux?
Les services de réplication placent et gèrent le nombre de tâches souhaité dans votre cluster. Les services démon placent et maintiennent une copie de votre tâche pour chaque instance de conteneur
Votre cluster ECS existe probablement sur plusieurs instances EC2 (= instances de conteneur).
Selon la documentation AWS
Réplique : la stratégie de planification des réplicas place et maintient le nombre souhaité de tâches sur votre cluster. Par défaut, le planificateur de services répartit les tâches entre les zones de disponibilité. Vous pouvez utiliser des stratégies et des contraintes de placement de tâches pour personnaliser les décisions de placement de tâches
Démon : La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui satisfait toutes les contraintes de placement de tâche que vous spécifiez dans votre cluster. Lorsque vous utilisez cette stratégie, il n'est pas nécessaire de spécifier le nombre souhaité de tâches, une stratégie de placement de tâches ou d'utiliser des stratégies Service Auto Scaling.
Cela signifie que si vous disposez d'un cluster ECS avec trois instances EC2 et que vous souhaitez lancer un nouveau service avec quatre tâches, les événements suivants se produisent:
Réplique : Vos quatre tâches démarreront de façon aléatoire réparties sur vos instances de conteneur. Cela peut être les quatre sur une seule instance ou toute autre distribution aléatoire. C'est le cas d'utilisation des micro-services normaux.
Démon : Pour un démon, vous ne spécifiez pas le nombre de tâches que vous souhaitez exécuter. Un service démon évolue automatiquement en fonction du nombre d'instances EC2 dont vous disposez. Dans ce cas, trois. Une tâche démon est un modèle utilisé lors de la création de microservices où une tâche est déployée sur chaque instance d'un cluster pour fournir des fonctionnalités de prise en charge courantes telles que la journalisation, la surveillance ou les sauvegardes des tâches exécutant votre code d'application.