J'ai la configuration suivante : 1 serveur avec l'application X, qui exécute une crontab une fois par heure. Le crontab se connecte à la base de données, effectue des calculs lourds, exporte les données vers un fichier de données spécial et redémarre l'application. L'exportation peut durer entre 10 et 40 minutes.
Je le veux :
-
Déplacez ce serveur vers AWS et utilisez le groupe d'auto-scaling.
-
La crontab qui s'exécute sur un seul serveur, effectue le calcul, exporte les données et les synchronise avec tous les autres serveurs.
-
Tous les serveurs devraient détecter automatiquement les nouvelles données et se redémarrer en toute sécurité (pas pendant la synchronisation par exemple).
-
Les nouveaux serveurs qui démarrent à partir des groupes d'auto-scaling affichent automatiquement les fichiers de données au démarrage avant de démarrer l'application réelle.
Je n'ai pas d'idée "simple" sur la manière de le faire ou de solution spécifique à AWS.
C'est mon idée :
-
Exécuter un serveur en dehors du groupe d'auto-scaling. Exécutez la crontab uniquement sur ce serveur. Tous les fichiers de données seront téléchargés sur S3.
-
Tous les serveurs d'autoscaling auront une crontab qui s'exécute toutes les minutes et vérifie un fichier unique "please_download_me_TIMESTAMP".
-
Une fois les fichiers téléchargés, le script redémarre le service.
-
Si un nouveau serveur est lancé, il récupérera automatiquement tous les fichiers de S3 au démarrage.
Pensez-vous que cela pourrait fonctionner ?