2012-12-28 2 views
2

Je travaille sur une configuration de déploiement WordPress sur Amazon AWS. J'ai WordPress fonctionnant sur Apache sur une instance d'Ubuntu EC2. J'utilise W3 Total Cache pour la mise en cache et pour servir des fichiers multimédia téléchargés par l'utilisateur à partir d'un compartiment S3. Un équilibreur de charge distribue le trafic à deux instances EC2 avec mise à l'échelle automatique pour gérer les charges lourdes.Gestion de fichiers Wordpress sur EC2/S3 avec mise à l'échelle automatique

Le problème est que les fichiers multimédias téléchargés par l'utilisateur sont stockés localement dans wp-content/uploads/ et puis synchronisés dans le seau S3. Cela signifie que les fichiers multimédias sont incohérents entre les instances EC2.

Voici les approches que je songe à me:

  1. Utilisez un plugin WordPress pour télécharger les fichiers multimédia directement sur S3 sans les stocker localement. Le problème est que les seuls plugins que j'ai trouvés (this et this) sont buggés et mal entretenus. Je préfère ne pas passer des heures à en réparer une moi-même. On ne sait pas non plus si elles s'intègrent proprement avec W3 Total Cache (que je veux aussi utiliser pour ses autres outils de mise en cache).
  2. Avoir une instance maître dans laquelle les utilisateurs accèdent à l'interface d'administration et téléchargent les fichiers multimédias. Tous les fichiers multimédias seraient stockés localement sur cette instance (et synchronisés avec S3 via W3 Total Cache). La mise à l'échelle automatique permet de déployer des instances esclaves sans stockage de fichiers local.
  3. Rendez toutes les instances EC2 identiques et pointez wp-content/uploads/ vers un volume EBS distinct. Toutes les instances partageraient des fichiers multimédias.
  4. Utilisez rsync pour copier les fichiers multimédias entre les instances EC2 en cours d'exécution.

Y a-t-il un gagnant clair? Y a-t-il d'autres approches auxquelles je devrais penser?

Répondre

5

Vous pouvez envisager d'utiliser quelque chose comme s3fs (http://code.google.com/p/s3fs/). Cela vous permet de monter votre compartiment S3 en tant que volume sur vos instances de serveur. Vous pouvez simplement avoir le code pour monter le volume exécuté au démarrage de l'instance. S3fs a également la possibilité d'utiliser des répertoires locaux (ephermal) comme cache dans le répertoire s3fs afin d'améliorer les performances.

+0

Bonjour @Mike Brant, dites-vous que l'on peut monter 1 seau S3 à plusieurs instances EC2 en utilisant s3fs? – ericn

+1

@fuzzybee oui, c'est ce que je dis. –

Questions connexes