Comment garder toutes les instances du groupe Auto-mise à l'échelle AWS mis à jour après le déploiement nouveau code?

voix
0

Je suis en train de construire un système plus dynamique / évolutive dans AWS . J'ai lancé 2 cas dans un groupe AutoScalingle nombre minimal d'instances est 2 et le maximum est 5 avec un équilibreur de charge devant eux. J'ai permis « Protection de résiliation » sur les deux premiers cas , car ils vont être ceux que j'utilise pour déployer mon Rails application via Capistrano .

Le problème est que je ne suis pas sûr quelle est la meilleure façon de garder tous les cas dans mon groupe autoscaling mise à jour afin qu'ils exécutent la même version de l'application.

J'ai cherché de nombreuses techniques, ci-dessous sont celles que je trouve applicable, mais ne savent toujours pas quelle serait la meilleure.

1- AWS CodeDeploy: On dirait plutôt cool, en utilisant le déploiement bleu / vert semble que ce serait faire le travail assez solide avec aucun temps d' arrêt. Je ne sais pas s'il y a une règle de base pour cela , mais à mon avis, le temps de déploiement est un peu long , je suis pas sûr si elle serait applicable quand je dois sortir un correctif .

2- Via Script: Je ne suis pas sûr de savoir comment mettre en œuvre ce en utilisant AWS mais soit, l'idée est quand téléchargé , un nouveau code à mon 2 « maître (?) » Instances,

  1. Je vais créer une nouvelle configuration de lancement en utilisant la nouvelle AMI
  2. Mettre à jour le groupe autoscaling d'utiliser cette nouvelle configuration de lancement
  3. Une petite échelle mon groupe autoscaling pour mettre fin aux instances qui sont en cours d' exécution l'ancienne configuration
  4. Si tout va bien, les politiques vont à l' échelle automatique créer de nouvelles instances en utilisant la nouvelle configuration de lancement

Le problème avec cette approche est qu'elle nécessite une opération manuelle que je ne veux pas compter sur beaucoup.

3- Utilisation des données de l' utilisateur: de nouvelles instances en cours avec des données d'utilisateur qui tire la nouvelle version du code. Je ne pense pas que ce soit une bonne façon car il y aura probablement d' autres cas qui sont déjà en cours d' exécution de l'ancien code.

Ce sont donc les solutions que je l'ai vu jusqu'à présent, que l'on serait la meilleure solution?

À votre santé!

Créé 19/09/2018 à 13:36
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Je me suis retrouvé à l' aide d' un petit bijou d'extension (mon application est écrit en Ruby sur rails) pour le déploiement. J'utilisais déjà Capistranopour le déploiement, puis j'ai découvert la pierre précieuse elbasqui fait en interne ce qui suit:

  • Déployez votre code à chaque instance en cours d'exécution connecté à un groupe donné AutoScale
  • Après le déploiement, créez un AMI d'une des instances de fonctionnement
  • Fixez l'AMI avec le nouveau code à une nouvelle configuration de lancement AWS
  • Mettez à jour votre groupe AutoScale d'utiliser la nouvelle configuration de lancement
  • Supprimez toutes les anciennes AMIs créées par ELBAS
  • Supprimez toutes les anciennes configurations de lancement créées par ELBAS

Ceci est essentiellement la 2ème option (via l'option de script), et de trouver un petit bijou qui fait cela pour moi, enlève le défi de gérer manuellement les choses.

Espérons que cela aide, cheers!

Créé 23/09/2018 à 07:30
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more