2011-09-09 9 views
0

Pour gérer le trafic élevé, je prévois d'étendre mon application Web (basée sur WordPress) sur certaines instances EC2 (je suis très nouveau sur AWS). Les instances doivent travailler sur les mêmes données (images, vidéos ...).Données partagées pour les instances Amazon EC2

Je songe à utiliser S3 comme stockage pour ces données partagées.

Mes questions sont les suivantes:

  • Si j'utilise S3, ai-je besoin d'écrire des codes supplémentaires pour mon application à télécharger et obtenir des données vers/depuis S3? Ou il y a un moyen magique de monter des instances EC2 sur S3, et après que les instances EC2 peuvent accéder à S3 pour accéder au stockage local? J'ai entendu dire que S3 est un peu lent car il est accessible via les services Web (si les utilisateurs téléchargent des fichiers et qu'il faut du temps pour télécharger les fichiers sur S3). Alors, existe-t-il un meilleur moyen de stocker les données partagées?

J'ai lu quelques documents sur la capacité de mise à l'échelle d'Amazon EC2. Mais aucun d'entre eux ne mentionne comment gérer les données partagées. Toute aide est grandement appréciée. Merci.

Répondre

0

Il n'existe aucune fonctionnalité native pour 'monter' un compartiment S3 en tant que stockage vers une instance EC2, bien qu'il existe plusieurs applications tierces qui offrent des mécanismes pour rendre le stockage S3 disponible en tant que lecteur ou référentiel virtuel. La plupart d'entre eux offrent une quantité prédéfinie de stockage gratuit, puis un mécanisme de facturation à plusieurs niveaux pour de plus grandes quantités - Google pour 'l'interface de stockage S3' et jetez un oeil. Que vous écriviez du code pour utiliser S3 via l'API ou que vous utilisiez une couche d'interface, il y aura toujours un temps de latence entre votre application et le stockage. C'est un fait de physique et il n'y a rien que vous pouvez faire pour éliminer le retard, parce que le dépôt S3 n'est pas local au cluster EC2 - ainsi vous n'obtiendrez jamais des vitesses d'accès au stockage 'locales'.

Une alternative pourrait consister à utiliser EBS qui est locale à votre instance EC2 - il a des propriétés différentes à S3 (par exemple, il ne propose pas des emplacements de pointe pour un accès régional localisé), mais est beaucoup plus rapide pour l'utilisation des applications car il se trouve dans le cluster EC2 et est monté en tant que stockage local.

+0

Merci pour la réponse. Mais si j'utilise EBS comme stockage, le stockage maximum d'un dossier est de 1 To (ne peut monter que 1 EBS dans ce dossier). Et d'autres instances ne peuvent pas accéder à cette EBS. Savez-vous normalement ce que les gens font dans mon cas? Comment stockent-ils des données énormes, tout en utilisant des instances EC2? – Jack

0

Vous pouvez monter un compartiment S3 sur toutes vos instances EC2. C'est un montage bidirectionnel donc tous vos fichiers seront synchronisés. Vous pouvez utiliser s3f3 pour effectuer le montage.

J'ai utilisé ce guide et mis en place le mien assez rapide: Mount S3 onto EC2

Si vous êtes alors préoccupé par la vitesse, vous pouvez utiliser Amazon ElastiCache ou même utiliser EBS comme un lecteur de cache.

0

Pour commencer votre question manque de détails sur l'architecture de votre application, mais il y a quelques possibilités.

Tout d'abord, si votre projet est de taille moyenne, vous pouvez utiliser GlusterFS sur vos nœuds principaux que les serveurs et les clients en même temps (en utilisant le protocole natif ou NFS), RDS * Multi-AZ MySQL instance pour DataBase. CloudFront comme CDN avec CDN linker ou des plugins W3TC. Aussi, mettez un ELB devant. Dans ce cas particulier, je recommanderais un couple c3.grandes instances au moins. Deuxièmement, lorsque votre projet se développerait, vous devriez créer l'AMI de l'instance et créer un groupe de mise à l'échelle automatique qui se connecterait à vos instances principales de stockage et de calcul. (Envisagez également de lever la charge de calcul de ces instances plutôt petites).

choses à considérer en outre: