Amazon EFS En tant que référentiel de code pour une évolutive automatique EC2

tl; dr: J'ai besoin de configurer une synchronisation automatique rapide de EFS pour un peu EC2

J'ai créé un groupe de mise à l'échelle automatique EC2 dans AWS, Et je cherche la meilleure façon de gérer le déploiement de code dans mes copies avec une interruption minimale (de préférence sans) et risque minimal d'erreur humaine. (de préférence aucun, hahaha) ...

C'est pour un site web Magento. Initialement, j'ai considéré la possibilité de stocker tout le contenu Web dans EFS (Système de fichiers élastique) et montez-le lors du chargement de mon EC2, Il n'y avait donc qu'une seule base centralisée du code, à laquelle chacun d'entre eux avait accès. J'ai vite découvert que c'était une très mauvaise idée - Taille du service de contenu Web Site avec Magento à travers une ressource réseau générale est principalement inopérante et avec un retard dans EFS C'est encore pire que la ressource moyenne partagée NFS.

Maintenant, j'essaie d'atteindre un code de code centralisé dans EFS Avec la synchronisation de là dans "local" (EBS) Répertoire dans chaque instance en mode proche de temps réel.

J'ai essayé

rsync

, Utilisation de l'approche "Tirant", Lorsque chaque instance transmet des fichiers rsync de EFS en toi. Au début, il avait l'air bien, mais il semble que, progressivement ralentit avec chaque balayage (Plus d'une heure avec le dernier chèque).

J'ai essayé

find

, Un résultat similaire.

J'ai expérimenté par S.
https://github.com/wimleers/fileconveyor
de

symlink_or_copy

convoyeur, mais cela semble encore lent - peut-être parce que pour une raison ou une autre, il ne peut pas utiliser

inotify

Détecter les changements et retourner à une enquête.

En fin de compte, l'objectif est de permettre au développeur de déployer des fichiers nouveaux et modifiés au même endroit et ces fichiers se répliquent rapidement et automatiquement dans toutes les instances d'exécution. Le développeur n'a pas besoin de savoir ou de prendre soin de combien d'instances lancées - Cela changera probablement toutes les heures.

https://serverfault.com/a/497040/306525
assez bon, et c'est l'approche que j'utilise actuellement - Mise à jour d'une instance protégée EC2, Nouveau AMI, Les instances restantes sont détruites et remplacées sont chargées sur la base d'une nouvelle image. EFS Devient essentiellement redondant.

Mais l'intervention manuelle est en effet beaucoup plus difficile et plus susceptible aux erreurs humaines que je ne peux adhérer à long terme. Je ne veux pas créer de nouveau AMI et configuration du groupe de mise en service et de mise à jour automatique pour utiliser ce nouveau LC Chaque fois que j'effectue un déploiement.

alors ... Comment je synchronise rapidement et automatiquement EFS Avec plusieurs EC2?

Si j'obtiens fileconveyor, tandem avec inotify, Ce problème va-t-il résoudre? Ou est-ce la chasse à des oies sauvages, quelqu'un sait-il?
Invité:

Agathe

Confirmation de:

C'est ce que j'ai fait:

Créer une "image dorée" AMI, Dans lequel au moment où tout est en place. Idéalement, il pourrait être configuré à l'aide d'une combinaison
https://aws.amazon.com/cloudformation/
et
https://aws.amazon.com/opsworks/
.

Régler
https://aws.amazon.com/codecommit/
Pour stocker le code source

Régler
https://aws.amazon.com/codedeploy/
Pour déployer un code source mis à jour dans vos copies. Cela signifie que vous n'avez pas besoin de reconstruire AMI Pour chaque changement de code source, c'est un simple déploiement. En utilisant l'image Golden au lieu de bâtir à partir de zéro, vous obtenez l'avantage de créer rapidement une nouvelle instance avec un petit délai pour mettre à jour le code. Ceci est une mise à jour assez triviale, il est donc susceptible d'être fait avec
https://docs.aws.amazon.com/AW ... .html
Si vous voulez le faire rapidement.

Si vous voulez automatiser la création de test / Médias préliminaires, déploiement de tests et de production (avec une approbation supplémentaire manuellement), tu peux voir
https://aws.amazon.com/codepipeline/
.

Vous pouvez effectuer bleu-vert (graduel) Déployer avec Route53 / Nginx / HAProxy ou rouge / Noir (Transitoire) Déployer en utilisant diverses méthodes.

Ce n'est pas un bâtiment de fusée pour faire du travail, mais peut prendre un certain temps si vous ne connaissez pas avec lui. Dès que vous le faites, l'automatisation peut économiser beaucoup de temps de test et de déploiement.

Agathe

Confirmation de:

https://aws.amazon.com/codedeploy/
Peut-être l'option pour cela. Vous pouvez créer un artefact à partir d'une seule copie. EC2, Envoyez-le à S3 Et le déployer.
https://docs.aws.amazon.com/co ... rview
. Citation:

Enfin, l'agent AWS CodeDeploy Chaque instance récupère l'audit cible du panier spécifié Amazon S3 ou référentiel GitHub et en utilisant les instructions du fichier AppSpec, Affiche le contenu dans l'instance.

CodeDeploy Prend en charge le déploiement Blue / Green Et vous permet d'apporter des modifications et des rebonds, ce qui peut être utile dans votre cas.

Pour répondre aux questions, connectez-vous ou registre