Quelle est la manière la plus pratique de créer des instances EC2 avec des volumes EBS qui devront bientôt être très volumineux?

Lors du lancement d'instances EC2, il semble que la plupart des AMI de la communauté viennent avec un volume EBS de 8 Go fixé en tant que lecteur racine. Nous aurons certainement besoin de plus de 8 Go à mesure que notre taille de database augmentera. Quelle est la manière recommandée de concevoir notre système? Les options que je vois sont:

  1. Utilisez le stockage de 8 Go jusqu'à ce qu'il soit nécessaire de développer, puis suivez l'un des nombreux longs didacticiels en ligne pour étendre la taille du lecteur racine.

  2. Joignez un deuxième volume EBS à l'instance qui est plus grande (par exemple, 60 Go) et enregistrez toutes datatables sur ce volume. Si je veux utiliser MongoDB ou MySQL comme database, est-il facile d'installer les files d'application de la database sur le volume racine, mais stocker datatables sur un autre volume?

Quelle est la meilleure solution pratique?

Je pense qu'il existe en fait 3 options:

  1. Il est assez facile d'étendre un volume EBS – instantané, créer un volume EBS de la taille souhaitée, détacher l'original, joindre un nouveau système de files redimensionnés, il peut certainement être fait sur un volume racine, mais je suggère qu'il vaut mieux aller avec Option 2.
  2. 2ème volume EBS – c'est ma preference personnelle (je ne peux pas garantir que ce soit une «meilleure pratique»). Je garde les bases de données sur un volume (et montez-le sur / var / data) et les files Web sur un autre (et montez vers / var / www / html) et bien sur mon volume racine. L'avantage est que a) vous pouvez resize et extraire chaque lecteur indépendamment, b) vous avez des lectures / écritures assez indépendantes (toujours contraintes par le réseau), c) même si, hypothétiquement, le volume de la racine est endommagé (c.-à-d. Mauvaise mise à jour du logiciel, etc), datatables sont facilement transférées vers une nouvelle instance (même avec des instantanés, la même chose n'est pas vraie si tout était sur le volume racine).
  3. Un système de files de cluster (par exemple, gluster) qui vous permet de dissortingbuer vos files sur plusieurs volumes et d'append plus de volumes au besoin. Essentiellement, vous choisissez une taille (par exemple, 10 Go) et, comme vous vous en supprimez de l'espace, ajoutez un autre volume de 10 Go, etc. Gluster dissortingbuera les files sur vos volumes – cela fonctionnerait pour une seule instance (c'est-à-dire plusieurs volumes attachés à une instance) ou à travers plusieurs instances (c'est-à-dire plusieurs volumes partagés entre plusieurs instances). Il existe cependant une certaine complexité (et surcoûts de performance) dans cette configuration, même si elle offre théoriquement la meilleure polyvalence.

(Il y a une 4ème option, mais ce n'est vraiment pas pratique pour quelque chose comme une database – vous pouvez monter S3 comme un système de files fusibles – et comme vous n'avez pas à pré-allouer de l'espace sur S3, vous auriez un stockage qui grandit avec vos besoins. Cependant, il est assez lent par rapport à EBS ou à un stockage éphémère, et sa fiabilité est peut-être douteuse au mieux.)

Sauf si vous utilisez une instance E2 EC2, l'image AMI est extraite sur une image de lecteur de 10 Go qui est recréée lorsque l'instance est démarrée. J'utilise les instances EC2 stockées par instance à la place des applications sauvegardées par EBS pour toutes les instances de mon server. Ensuite, je fais simplement les volumes EBS quel que soit le côté dont j'ai besoin et montez-les en tant que lecteurs secondaires.

Avec les volumes EBS, j'ai constaté que l'utilisation du système de files xfs et l'utilisation de tout le volume EBS sans partition était le meilleur moyen d'action. Pour augmenter le volume quand il était nécessaire, j'effectuerais un instantané du volume EBS existant, puis créerais un nouveau volume plus grand construit à partir de l'instantané. Vous détachez simplement le volume EBS existant et joignez le nouveau. Une fois que le nouveau volume est monté, il apparaîtra comme la taille de volume actuelle jusqu'à ce que vous exécutiez la command d'utilité xfs expand qui doit être exécutée pendant que le système de files est en direct. Vérifier la capacité après cela est fait affichera la nouvelle taille plus grande.

Maintenant, si vous utilisez un Ubuntu AMI, vous pouvez installer le package ebsmount et créer un directory caché sur le volume EBS et configurer le système en tant qu'user en utilisant udev lorsque le volume EBS est attaché à l'instance EC2.

Il est généralement préférable que votre lecteur de démarrage et votre lecteur de données soient des filesystems différents de toute façon, de sorte que, par exemple, un file journal excessif qui remplit le lecteur de démarrage ne peut pas lier la capacité de votre client à download du contenu (ou vice versa ). Je n'ai jamais installé Mondo, mais avec MySQL, il est assez facile de désigner où vous souhaitez stocker datatables. Il est même facile de déplacer datatables plus tard dans la ligne avec un rsync, un changement de configuration et seulement quelques minutes de time d'arrêt si vous devez étendre les lecteurs à nouveau.

Si vous parlez de la route mysql, il convient de mentionner que le service de database relationnelle d'Amazon est très bon pour créer une database évolutive sans tous les maux de tête de la gestion de votre choix.

Mettez vos données importantes sur (au less un) volume EBS externe. Pour tout ce dont vous avez besoin pour la performance, utilisez Linux MD RAID-10 sur beaucoup de volumes EBS.