web-dev-qa-db-fra.com

Quelles sont les "instances souhaitées"? Groupe AWS Amazon Webservices AutoScaling

je suis confronté à une situation étrange sur Amazon AWS. Je ne comprends pas pour quoi le numéro d'instances souhaité est utilisé? J'ai un groupe de mise à l'échelle automatique qui contient les actions de montée en puissance et de réduction configurées.

J'ai un fichier personnalisé PHP qui exécute des actions Mise à l'échelle et Réduction en fonction de facteurs externes. Je veux savoir quel numéro je dois écrire dans les instances souhaitées pour ne pas affecter mes actions d'autoscaling.

Par exemple:

  1. Je mets désiré à 2
  2. J'ai 2 instances en cours d'exécution
  3. Je lance l'action Scale Down
  4. Les instances sont 1
  5. Le groupe de mise à l'échelle automatique démarrera automatiquement une autre instance, de sorte que ma réduction n'est pas utile car j'ai fini par avoir 2 en cours d'exécution

Que puis-je faire?

Merci beaucoup!

15
Badulake

Le GSS essayera toujours de maintenir la capacité souhaitée. Si vous augmentez ou réduisez le nombre d'instances et que le nouveau nombre d'instances est différent de la capacité souhaitée, le groupe de sécurité utilisateur ajoutera ou supprimera une instance pour revenir à la capacité souhaitée. 

Si vous utilisez des stratégies de mise à l'échelle et que la condition de la politique est remplie, le groupe de sélection modifie la capacité souhaitée en fonction du résultat de votre stratégie de mise à l'échelle. Par exemple, vous avez une capacité souhaitée de 2 et une stratégie qui dit de passer à la vitesse supérieure si l'utilisation du processeur dépasse un seuil. 

Si cette politique est remplie, la capacité souhaitée passera à 3, et ainsi de suite. 

Si vous augmentez et réduisez manuellement la cadence, votre groupe ASG rétablira le nombre d'instances à la capacité souhaitée. 

Si vous souhaitez augmenter ou réduire manuellement le volume, vous pouvez définir une valeur maximale pour Max et Min et y déplacer la capacité souhaitée. 

Donc, vous pouvez faire Max = 10, Min = 1, Desired = 3. Ensuite, vous pouvez augmenter ou réduire simplement en changeant la capacité souhaitée. (C'est ainsi que nous utilisons Auto Scaling et je pense que je vous ai déjà mal répondu auparavant.)

Si vous souhaitez mettre fin à une instance et modifier la capacité souhaitée en même temps, la CLI peut le faire. 

Voir Terminez l'instance dans ASG , et la documentation CLI ASG plus généralement.

20
Peter

Je pense que la valeur souhaitée est destinée à définir manuellement un nombre d'instances à un moment donné. Je pense que 99% du temps, vous laissez vos valeurs == minimales souhaitées et vous laissez les stratégies ASG faire la mise à l'échelle.

3
Apokai

Ces réponses sont toutes bonnes, mais je voudrais ajouter une situation supplémentaire. 

Supposons que vous effectuez un déploiement bleu/vert et que le trafic soit dense. Votre minute est 1, car dans 50% des cas, vous n'avez qu'une seule instance. Cependant, disons que vous faites du CI/CD et que les déploiements ont lieu toute la journée. Un développeur pourrait envoyer du code en production au beau milieu d'un événement de grande envergure, où les instances ont été étendues à 10. Maintenant, si vous utilisez un outil tel que terraform pour déployer des groupes de mise à l'échelle automatique, etc., il réinitialisera le groupe 1 et vous courez le risque d’une interruption de service. 

Pour cette raison, lors d'un déploiement, nous avons une valeur de substitution terraform que nous fournissons par programme à terraform lors de son invocation. Avant d'appeler terraform, nous utilisons aws cli pour déterminer la capacité actuelle souhaitée pour la mise à l'échelle automatique des instances, et nous transmettons cette valeur à terraform afin que le nouveau groupe de mise à l'échelle automatique affiche le même nombre d'hôtes que le précédent.

2
stobiewankenobi

Pour un déploiement bleu/vert avec Terraform, vous pouvez utiliser votre maximum souhaité de 10 initialement. Après le déploiement, vous pouvez effectuer un suivi et redéfinir la valeur desired_capacity dans Terraform et laisser tous les déclencheurs que vous avez configurés pour ASG afin de le réduire naturellement. (rappelez-vous que "désiré_capacité" est une cible d'instance qui "devrait" être dans le ASG où "min_size" est le montant minimum autorisé dans le ASG)

https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html

resource "aws_autoscaling_group" "example" {
  availability_zones = 
  ["${data.aws_availability_zones.available.names}"]
  max_size = 20
  min_size = 2
  desired_capacity = 10
  launch_configuration = "${aws_launch_configuration.example.name}"
}
1
Adam