Je souhaite configurer la mise à l'échelle automatique dans AWS. Je ne veux pas utiliser Elastic Load Balancer.
La numérotation automatique dans Amazon crée des instances EC2 de manière transparente pendant les pics de demande pour maintenir les performances et diminue automatiquement pendant les accalmies de demande pour minimiser les coûts.
Étant donné que ces instances EC2 sont créées automatiquement, leurs noms d'hôte sont inconnus de NGINX.
Je sais et j'ai déjà une configuration en amont dans nginx à 10 instances EC2.
Je veux pouvoir ajouter / mettre à jour / supprimer automatiquement les noms de serveur à ma configuration nginx en amont, lorsque la mise à l'échelle automatique ajoute / met à jour / supprime des instances EC2.
nginx
amazon-ec2
amazon-web-services
autoscaling
Luis Lobo Borobia
la source
la source
Réponses:
Cela peut être réalisé en utilisant Amazon SDK (j'en ai presque fini, je le mettrai sur github), en utilisant le service SNS, EC2 et Autoscaling.
J'ai suivi les étapes ci-dessous pour y parvenir:
Veuillez trouver le script ici https://github.com/singhupendra/aws-autoscale
la source
Merci @talonx, j'ai fait quelques recherches, Amazon Autoscale a une API pour interroger le statut actuel du groupe de mise à l'échelle automatique et énumère ses membres. Il renvoie l'ID d'instance ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), puis vous pouvez utiliser les outils de description pour obtenir le nom du serveur ( http: // docs .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) et enfin recréer le fichier include en amont. Je pouvais sentir les notifications de mise à l'échelle automatique pour lancer un processus qui effectue ces tâches.
Je ne l'ai toujours pas implémenté mais c'est un chemin à parcourir.
On peut également utiliser Autocaling avec SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html
la source
Je ne l'ai pas encore implémenté moi-même, mais je cherche à utiliser la reconfiguration à la volée de NGiNX Plus . Je pense que l'AMI, ou la gestion de la configuration (Puppet, Salt, ou autre) qui met en place une instance Auto Scaling Group, pourrait atteindre l'API de reconfiguration NGiNX (peut-être, via un nom de domaine Route53 interne afin qu'aucune IP fixe ne le fasse doivent être utilisés) et s’ajouter au cluster en amont pour le proxy inverse. Après cela, le contrôle de santé intégré de NGiNX prendrait alors le relais pour cette instance [ajoutée] et la supprimerait au cas où elle deviendrait indisponible. Cela semble la solution la plus propre et il n'y a aucun délai pour ajouter l'instance, et pratiquement aucun délai pour la supprimer, car NGiNX Plus propose un contrôle d'intégrité hors bande.
Cette approche évite d'avoir à mettre en place un système de détection automatique (Consul, Serf, ou autre) qui, pour les configurations plus petites, semble souvent être une surcharge, tant en termes de configuration / administration que d'instances EC2 requises. Consul, par exemple, nécessite un minimum de trois instances pour être stable. Serf pourrait peut-être s'exécuter sur les instances ASG elles-mêmes, mais il reste la charge de le maintenir, et si l'ASG se réduit à une ou deux instances, vous perdriez le quorum.
Enfin, cela pourrait être combiné avec une notification automatique des modifications du groupe Auto Scaling, peut-être sur le (s) serveur (s) NGiNX utilisé (s) pour l'équilibrage de charge. Un auditeur déclenché par une telle notification (c'est peut-être ce à quoi Upendra a également fait référence) pourrait alors ajouter instantanément la nouvelle instance à NGiNX via l'API de modification à la volée. Outre le coût de NGiNX Plus, cela fait que l'on se demande pourquoi quelqu'un utiliserait Elastic Load Balancer avec ses nombreux problèmes en premier lieu.
Edit 2015-12-07 : ngx_openresty 's balancer-by-lua ( voir ce fil GitHub ) offre une autre solution open source possible pour ajouter / supprimer des serveurs à chaud du groupe en amont NGiNX. Je n'ai pas encore expérimenté cela moi-même, mais je voulais ajouter une mention ici pour quiconque tombe sur ce post.
la source