2016-11-03 6 views
3

Je suis en train de tester AWS autoscaling. J'ai créé un haricot élastique simple et édité les paramètres de mise à l'échelle. Voici une capture d'écran des politiques de mise à l'échelle du groupe de mise à l'échelle automatique:AWS - La mise à l'échelle automatique ne lance pas/ne supprime pas les instances comme spécifié

enter image description here

Comme vous pouvez le voir, je suis en train de faire le groupe d'avoir entre 5 et 10 cas en bonne santé en permanence. Le nombre maximal et minimal d'instances a été défini sur 20 et 2.

Je n'ai que 2 instances (le minimum) en cours d'exécution.

Les alarmes sont définies comme:

  • ping-serveur trop sain enter image description here
  • ping-serveur non-assez-santé enter image description here

alarmes de Load Balancer semble pour fonctionner correctement:

enter image description here

Mais le groupe de mise à l'échelle ne démarre pas de nouvelles instances. J'ai essayé les paramètres les alarmes l'inverse (je ne suis pas sûr qu'ils sont déclenchés quand ils vont de vrai à faux ou de faux à vrai) et cela conduit à 20 instances (le maximum)

Répondre

3

Ceci est pas la façon dont vous devriez utiliser Auto Scaling.

Lorsque Elastic Beanstalk crée un environnement «Équilibrage de charge, mise à l'échelle automatique», il crée le groupe Auto Scaling pour vous. Dans le cadre de ces configurations, vous pouvez spécifier le minimum et maximale nombre d'instances pour lancer dans le groupe Auto Scaling:

Elastic Beanstalk auto scaling configuration

Le groupe Auto Scaling alors garder le courant Capacité souhaitée d'instances dans le minimum et le maximum. Si une instance échoue (définition ci-dessous), Auto Scaling remplace automatiquement cette instance par une autre pour conserver la capacité souhaitée.

Les politiques de mise à l'échelle sont ensuite utilisés pour ajuster la capacité souhaitée. Les stratégies de mise à l'échelle doivent utiliser une certaine mesure de «chargement» pour déterminer quand ajouter ou supprimer des instances, telles que l'utilisation du processeur ou la taille d'une file d'attente Amazon SQS. L'intention est d'ajouter des serveurs supplémentaires lorsqu'une plus grande capacité est requise et de supprimer les serveurs lorsque la capacité est trop importante. La métrique HealthyHostCount indique combien de serveurs ont passé le test d'intégrité Elastic Load Balancing . Si une vérification d'intégrité échoue, l'équilibreur de charge arrête de lui envoyer des demandes, mais continue à effectuer une vérification de l'état. Si l'instance redevient saine, Load Balancer recommence à envoyer des demandes à ce serveur.Le bilan de santé Elastic Load Balancing peut être configuré pour vérifier une page particulière sur le serveur pour confirmer que l'application est en bonne santé.

Lorsque Auto Scaling effectue un contrôle de la santé, il est simplement checking the the status of the virtualization environment, de la même manière que la console de gestion de EC2 montre 2/2 status checks. Cependant, il est possible de configurer Auto Scaling pour utiliser le contrôle de santé Elastic Load Balancing. De cette façon, Auto Scaling peut être averti que l'application est malsaine et peut remplacer automatiquement une instance défaillante (ou une instance avec une application ayant échoué).

Vous avez déclaré que votre objectif est "pour que le groupe ait entre 5 et 10 instances saines en permanence". C'est le travail d'Auto Scaling, en particulier lorsqu'il a été configuré pour utiliser les vérifications d'intégrité Elastic Load Balancing. Le travail d'une stratégie de mise à l'échelle consiste à déterminer quand ajouter/supprimer des instances en fonction de la charge de travail. Les stratégies de mise à l'échelle ne doivent pas être utilisées pour remplacer des instances malsaines.

Alors, je recommande:

  • Configurer un Visez santé dans votre équilibreur de charge qui vérifie avec précision la santé de votre application
  • Allumez contrôles de santé ELB dans votre groupe Auto Scaling (ce qui garantira que les instances avec des applications malsaines seront remplacées)
  • Utilisez Stratégies de mise à l'échelle pour ajouter/supprimer des instances en fonction de charge de travail plutôt que basée sur la santé
  • Faites confiance au système. Ça marche!
+0

Merci beaucoup pour votre réponse détaillée. Je pense que vous avez raison sur le mauvais choix de conception détaillé ma question, et que finalement la mise à l'échelle devrait dépendre de la santé de l'application. J'ai mis en place ces stratégies de mise à l'échelle pour tester le comportement de mise à l'échelle, car elles sont plus faciles à tester dans un environnement de transfert intermédiaire que celles basées sur la charge de travail. Cependant, le paramètre actuel ne devrait-il pas conduire à une mise à l'échelle entre 5 et 10 instances? J'aimerais bien comprendre et tester les mécanismes d'alarmes/politiques de mise à l'échelle avant de passer à la confiance dans le système! Et actuellement cela signifie obtenir un groupe de 5-10 instances :) – Guig

+0

Vous pouvez déclencher manuellement les stratégies de mise à l'échelle via la console ("Execute"). Mais si vous voulez un test * réel * du système, vos politiques de mise à l'échelle doivent être basées sur la charge, de sorte que vous devrez générer de la charge en quelque sorte. –

+0

"Execute" est mis à l'échelle vers le haut ou vers le bas, sauf exception. Je ne suis pas sûr que les alarmes fonctionnent correctement puisqu'elles devraient être déclenchées, et déclenchent automatiquement l'échelle de haut en bas. Je pense actuellement qu'il essaie de supprimer des instances, et atteint la limite inférieure. Si je retourne les alarmes, il va à 20 (la limite supérieure) montrant que les alarmes ont déclenché, mais pas avec la bonne logique – Guig