J'ai un infra qui utilise Amazon elastic beanstalk pour déployer mon application. Je dois adapter mon application en ajoutant des instances ponctuelles non prises en charge par EB.
Je crée donc une deuxième mise à l'échelle automatique à partir d'une configuration de lancement avec des instances ponctuelles. La mise à l'échelle automatique utilise le même équilibreur de charge créé par beanstalk.
Pour mettre en place des instances avec la dernière version de mon application, je copie les données utilisateur de la configuration de lancement d'origine (créée avec beanstalk) dans la configuration de lancement avec des instances ponctuelles (créées par moi).
Cela fonctionne bien, mais:
comment mettre à jour les instances ponctuelles issues de la deuxième mise à l'échelle automatique lorsque les instances de mise à jour de beanstalk gérées par lui avec une nouvelle version de l'application?
y a-t-il un moyen aussi simple et élégant d'utiliser des instances ponctuelles et de profiter des avantages de beanstalk?
Je posais cette question moi-même et trouvai une solution intégrée dans le beanstalk élastique. Il a été décrit ici comme suit:
- Ajoutez un fichier sous le dossier .ebextensions. Pour notre configuration, nous avons nommé le fichier spot_instance.config (l’extension .config est Importante), collez le contenu disponible ci-dessous dans le fichier https://Gist.github.com/rahulmamgain/93f2ad23c9934a5da5bc878f49c91d64
- La valeur de EC2_SPOT_PRICE peut être définie via la configuration de l'environnement de haricot élastique. Pour désactiver l'utilisation d'instances ponctuelles , Supprimez simplement la variable des paramètres d'environnement.
- Si l'environnement existe déjà et que les paramètres ci-dessus sont des mises à jour, l'ancien groupe de redimensionnement automatique sera détruit et un nouveau Est créé.
- L'environnement soumet ensuite une demande d'instances ponctuelles qui peut être consultée sous l'onglet Instances ponctuelles du tableau de bord EC2.
- Une fois la demande satisfaite, l'instance sera ajoutée au nouveau groupe et au groupe de dimensionnement automatique.
- Vous pouvez utiliser l'outil Spot Advisor pour déterminer le meilleur prix pour les instances utilisées.
- Un prix de 30% du prix initial semble être un niveau décent.
Personnellement, je voudrais simplement utiliser le prix à la demande pour le type d'instance donné, car ce prix est la limite supérieure de ce que vous seriez prêt à payer. Cela réduit la probabilité d'être hors de prix et donc la résiliation de vos instances.
Cette approche n’est peut-être pas la meilleure pour les systèmes de production, car il n’est pas possible de scinder un nombre d’instances à la demande et un nombre supplémentaire d’instances ponctuelles et il est possible qu’il n’y ait aucune chance qu’aucune instance ponctuelle ne soit disponible, acheter tout le marché avec des offres élevées.
Pour les cas d’utilisation en production, je chercherais https://github.com/cristim/autospotting , qui gère activement tous vos groupes de redimensionnement automatique et tente de respecter l’équilibre entre les prix les plus bas et un nombre ou un pourcentage configurable de instances à la demande.
Chez Spotinst, nous avions affaire à ce dilemme pour nos clients.
Elastic Beanstalk crée toute une pile de services (Load Balancers, ASG, Point d’accès Route 53, etc.) liés entre eux, ce n’est pas une tâche facile de gérer les Spots qu’il contient.
Après de nombreuses recherches, nous avons pensé que la suppression du ASG sera toujours sujette aux erreurs, car le maintien de la configuration intacte devient complexe. Au lieu de cela, nous répliquons simplement le groupe ASG et laissons notre groupe Elastigroup et le groupe ASG vivre côte à côte avec toutes les stratégies de dimensionnement n’affectant que les mises à jour de configuration Elastigroup et ASG qui y sont également alimentées.
Avec les instances exécutées dans Elastigroup, vous obtenez des instances Spot gérées avec un contrat de niveau de service complet.
L'exécution de vos instances ponctuelles dans Elastigroup présente certains avantages:
1) Notre algorithme sélectionne en direct les meilleurs marchés au comptant en termes de prix et de disponibilité, chaque fois que de nouvelles instances se multiplient.
2) Lorsqu'une interruption survient, nous la prévoyons environ 15 minutes à l'avance et prenons toutes les mesures nécessaires pour assurer (et assurer) la capacité de votre groupe.
3) Dans le cas extrême où aucun des marchés n’a de disponibilité Spot, nous retombons simplement sur une instance à la demande.