2009-05-08 3 views
115

Nous utilisons actuellement plusieurs serveurs Web accédant à un serveur mysql et à un serveur de fichiers. En regardant le passage au cloud, puis-je utiliser cette même configuration et attacher l'EBS à plusieurs instances de machine ou quelle est une autre solution?Pouvez-vous attacher Amazon EBS à plusieurs instances?

Répondre

4

Je suis assez sûr que vous ne pouvez pas, mais vous pouvez cloner un EBS et l'attacher à une autre instance.

Ceci est utile pour les jeux de données fixes, ou pour les tests sur des données « réelles », mais ce n'est allow plus de 1 instance de ne pas fonctionner sur un seul bloc magasin

69

Non, à l'aide d'un disque dur en deux des ordinateurs.

Si vous souhaitez partager des données, vous pouvez configurer un serveur auquel toutes vos instances peuvent accéder. Si vous souhaitez disposer d'une zone de stockage simple pour toutes vos instances, vous pouvez utiliser le service de stockage S3 d'Amazon pour stocker des données distribuées et évolutives. Si vous vous déplacez vers le cloud, vous pouvez effectuer exactement la même configuration, mais vous pouvez éventuellement remplacer le serveur de fichiers par S3 ou vous connecter à votre serveur de fichiers.

Vous avez beaucoup d'options, mais le partage d'un disque dur entre les instances n'est probablement pas la meilleure option.

+6

Qu'en est-il de lecture/seulement? – alexus

13

Non, selon les documents EBS: "Un volume ne peut être attaché qu'à une instance à la fois".

Comment utilisez-vous actuellement le stockage partagé? Si c'est juste pour servir des fichiers à partir du serveur de fichiers, avez-vous envisagé de configurer un système afin que vous puissiez envoyer certaines demandes à un processus sur le serveur de fichiers plutôt que d'avoir les serveurs Web à servir ces fichiers?

+2

Voici un lien pour cette citation: https://aws.amazon.com/articles/1667. Voir FAQ au bas de l'article.Je me demande pourquoi aws ec2 describe-volumes renvoie un tableau de pièces jointes. –

110

UPDATE (Avril 2015): Pour ce cas d'utilisation, vous devriez commencer à regarder la nouvelle Amazon Elastic File System (EFS), qui est conçu pour être attaché à multiplier exactement la façon dont vous avez envie. La principale différence entre EFS et EBS est qu'ils fournissent différentes abstractions: EFS expose le protocole NFSv4, tandis que EBS fournit un accès IO de bloc brut.

Ci-dessous vous trouverez mon explication originale expliquant pourquoi il n'est pas possible de monter en toute sécurité un périphérique bloc brut sur plusieurs machines.


POST ORIGINAL (2011):

Même si vous étiez en mesure d'obtenir un volume EBS attaché à plus d'une instance, ce serait une _REALLY_BAD_IDEA_. Pour citer Kekoa, "c'est comme utiliser un disque dur dans deux ordinateurs à la fois"

Pourquoi est-ce une mauvaise idée? ... La raison pour laquelle vous ne pouvez pas associer un volume à plusieurs instances est que EBS fournit une abstraction de "stockage en bloc" sur laquelle les clients exécutent un système de fichiers tel que ext2/ext3/etc. La plupart de ces systèmes de fichiers (par exemple, ext2/3, FAT, NTFS, etc) sont écrits en supposant qu'ils ont un accès exclusif au périphérique de bloc. Deux instances accédant au même système de fichiers se termineraient presque certainement en larmes et en corruption de données. En d'autres termes, le double montage d'un volume EBS ne fonctionnerait que si vous utilisiez un système de fichiers en cluster conçu pour partager un périphérique bloc entre plusieurs machines. De plus, même cela ne suffirait pas. EBS devrait être testé pour ce scénario et s'assurer qu'il offre les mêmes garanties de cohérence que les autres solutions de blocs partagés ...c'est-à-dire que les blocs ne sont pas mis en cache à des niveaux intermédiaires non partagés tels que le noyau Dom0, la couche Xen et le noyau DomU. Et puis, il y a les considérations de performance de la synchronisation des blocs entre plusieurs clients - la plupart des systèmes de fichiers en cluster sont conçus pour fonctionner sur des SAN dédiés à haut débit, et non sur un réseau Ethernet. Cela semble si simple, mais ce que vous demandez est une chose très non-triviale. Sinon, vérifiez si votre scénario de partage de données peut être NFS, SMB/CIFS, SimpleDB ou S3. Ces solutions utilisent toutes des protocoles de couche supérieure destinés à partager des fichiers sans avoir de sous-système de bloc partagé. Plusieurs fois, une telle solution est réellement plus efficace.

Dans votre cas, vous pouvez toujours avoir une seule instance MySQL/serveur de fichiers accessible par plusieurs frontaux Web. Ce serveur de fichiers peut ensuite stocker ses données sur un volume EBS, ce qui vous permet de prendre des sauvegardes de clichés nocturnes. Si l'instance exécutant le serveur de fichiers est perdue, vous pouvez détacher le volume EBS et le rattacher à une nouvelle instance de serveur de fichiers et être de nouveau opérationnel en quelques minutes.

"Y at-il quelque chose comme S3 en tant que système de fichiers?" - oui et non. Oui, il existe des solutions tierces comme s3fs qui fonctionnent "ok", mais sous le capot, ils doivent encore faire des appels de service Web relativement coûteux pour chaque lecture/écriture. Pour un répertoire d'outils partagés, fonctionne très bien. Pour le type d'utilisation de FS en cluster que vous voyez dans le monde HPC, pas une chance. Pour faire mieux, vous auriez besoin d'un nouveau service qui fournit un protocole orienté connexion binaire, comme NFS. Offrir un tel système de fichiers multi-monté avec des performances et un comportement raisonnables serait un excellent complément pour EC2. J'ai longtemps été un défenseur d'Amazon pour construire quelque chose comme ça.

+1

Le problème avec NFS (et les approches similaires SMB) est qu'une machine agira comme un serveur (auquel le système de fichiers sera physiquement monté). Cette machine qui descend va causer le volume EBS (ou le disque à descendre aussi). Existe-t-il quelque chose comme S3 en tant que système de fichiers? – sheki

+1

Juste pour clarifier - Si un volume EBS est attaché à une instance et que l'instance meurt de façon catastrophique, le volume EBS sera parfait. Il ne fera que "descendre" dans le sens où pour y accéder, vous devrez le détacher de l'instance en bas et le rattacher à une nouvelle instance. –

+0

"... se terminerait presque certainement en larmes et la corruption de données." Classique. @DaveDopson – Beachhouse

1

Il y a quelque chose dans le monde informatique connu sous le nom en cluster Filesystem, Redhat GFS, Oracle OCFS2, Veritas CSA ...

+0

cochez les commentaires pour la réponse de ddopson – sheki

+0

@sheki Je pense que votre commentaire à la réponse de ddopson est complètement hors de propos pour les systèmes de fichiers en cluster. Les systèmes de fichiers en cluster sont conçus pour être montés simultanément par plusieurs serveurs. Le but d'un clusteredfs est d'éviter les points de défaillance uniques. – Ryan

1

Pourquoi ne vous créer une instance avec un volume et sshfs à ce volume dans d'autres cas?

3

Plusieurs serveurs Web accédant au serveur MySQL & Le serveur de fichiers est normal dans AWS. Certaines des meilleures pratiques à suivre pour l'architecture mentionnée ci-dessus sont:

Point 1) MySQL sur EC2 peut être configuré comme maître-esclave en mode asynchrone/semi-synchrone dans AWS. EBS-OPT + PIOPS en RAID 0 est recommandé pour le DB haute performance

Point 2) Vous pouvez également utiliser le mode Amazon RDS + Multi-AZ. Pour la mise à l'échelle de lecture Plusieurs réplicas de lecture RDS peuvent être attachés à MySQL RDS. Point 3) Le volume EBS ne peut pas être attaché simultanément à plusieurs EC2. Vous pouvez créer un serveur de fichiers basé sur GlusterFS sur Amazon EC2 à l'aide d'EBS. Plusieurs serveurs Web peuvent parler simultanément à un seul GlusterFS sur AWS infra. Point 4) Dans le cas où votre application peut être intégrée à S3 en tant que banque de fichiers, elle est préférée en raison de la stabilité qu'elle apporte à l'architecture. Vous pouvez également accéder à S3 en utilisant des outils comme S3fuse ainsi que votre application.

-2

Vous pouvez totalement utiliser un lecteur sur plusieurs serveurs dans AWS. J'utilise sshfs pour monter un disque externe et le partager avec plusieurs serveurs dans EC2.

La raison pour laquelle je devais connecter un seul lecteur à plusieurs serveurs est d'avoir un seul endroit pour mettre toutes mes sauvegardes avant de les mettre en local.

Questions connexes