3 votes

Serveur MySql à forte intensité d'E/S sur Amazon AWS

Nous sommes récemment passés d'un centre de données traditionnel au cloud computing sur AWS. Nous développons un produit en partenariat avec une autre entreprise, et nous devons créer un serveur de base de données pour le produit que nous allons lancer.

J'utilise Amazon Web Services depuis 3 ans, mais c'est la première fois que je reçois une spécification avec cette configuration matérielle très spécifique.

Je sais qu'il y a des compromis à faire et que le matériel réel sera toujours plus rapide que les machines virtuelles. Sachant cela d'avance, que recommanderiez-vous ?

1) Amazon EC2 ? 2) Amazon RDS ? 3) Quelque chose d'autre ? 4) Oublie ça bébé, reste sur le vrai matériel

Voici la configuration matérielle requise

Ce serveur sera axé sur I/O et MySQL pour les statistiques, la taille de la mémoire et l'espace disque pour l'hébergement des images.

Serveur 1

I/O La partie la plus importante de ce serveur sera le traitement des E/S, les cartes FusionIO ont prouvé qu'elles étaient extrêmement efficaces, c'est actuellement le meilleur que l'on puisse avoir dans ce domaine. o Fusion ioDrive2 MLC 365GB ( http://www.fusionio.com/load/-media-/1m66wu/docsLibrary/FIO_ioDrive2_Datasheet.pdf )

CPU MySQL utilisera moins de cœurs de processeur qu'Apache, mais il les utilisera de manière très intensive. La famille E7 dispose d'un cache L3 de 30 millions de pixels pour améliorer les performances : o 1x Intel E7-2870 fera l'affaire.

Stockage SAS sera suffisant en termes de performances, surtout si l'on considère l'espace nécessaire. o RAID 10 de 4 x SAS 10k ou 15k pour un espace total disponible de 512 Go.

Mémoire o 64 Go minimum sont nécessaires sur ce serveur compte tenu de la taille de la base de données des statistiques. Attention : la base de données de statistiques va croître rapidement, si possible pensez à commencer avec 128 Go directement, cela aidera. Ce serveur sera axé sur les I/O et MySQL pour les statistiques, la taille de la mémoire et l'espace disque pour l'hébergement des images.

Serveur 2

I/O La partie la plus importante de ce serveur sera le traitement des E/S, les cartes FusionIO se sont révélées extrêmement efficaces, c'est actuellement le meilleur que l'on puisse avoir dans ce domaine. o Fusion ioDrive2 MLC 365GB ( http://www.fusionio.com/load/-media-/1m66wu/docsLibrary/FIO_ioDrive2_Datasheet.pdf )

CPU MySQL utilisera moins de cœurs de processeur qu'Apache, mais il les utilisera de manière très intensive. La famille E7 dispose d'un cache L3 de 30 millions de pixels pour améliorer les performances : o 1x Intel E7-2870 fera l'affaire.

Stockage SAS sera suffisant en termes de performances, surtout si l'on considère l'espace nécessaire. o RAID 10 de 4 x SAS 10k ou 15k pour un espace total disponible de 512 Go.

Mémoire o 64 Go minimum sont nécessaires sur ce serveur compte tenu de la taille de la base de données des statistiques. Attention : la base de données de statistiques va croître rapidement, si possible envisagez de commencer avec 128 GB directement, cela aidera.

Merci d'avance.

Le meilleur,

3voto

Rob Howard Points 636

Pour obtenir des performances maximales d'une solution en nuage, vous devez concevoir une architecture en nuage. Si vous vous inquiétez du nombre d'IOPS que vous pouvez obtenir d'un service conçu pour être totalement évolutif (à la fois vers le haut et vers le bas), vous pensez à des machines virtuelles et non au cloud computing. En ce qui concerne la quantité d'IOPS disponibles, je pense que cet article sur EBS explique les questions à prendre en compte

3voto

Brad Points 3206

Les problèmes :

  • Les deux serveurs que vous avez énumérés ci-dessus sont absolument identiques.
  • Vous parlez de FusionIO mais vous parlez aussi d'exécuter MySQL et Apache sur la même boîte.
  • Vous n'indiquez pas si les fichiers Apache ou la base de données MySQL (ou des parties de celle-ci, telles que le fichier ib_logfile ) seront sur les disques FusionIO.

L'idée fausse :

Il n'est pas nécessairement vrai que "le matériel réel sera toujours plus rapide que les machines virtuelles". Il est vrai que sur le même matériel la même application sera plus performante si elle n'est pas dans une machine virtuelle, mais comme vous n'avez pas accès au matériel d'Amazon, cette comparaison est discutable.

L'intérêt du nuage est qu'il évolue horizontalement. Ainsi, si vous pouvez servir 100 visiteurs simultanés avec un serveur, vous pouvez servir 1000 visiteurs simultanés avec 10 serveurs et chaque visiteur reçoit la même vitesse de réponse, quel que soit son nombre.

Le nuage :

Il existe quelques différences essentielles entre les fournisseurs de services en nuage et la colocation. Si vous êtes en mesure d'en tirer parti, l'hébergement dans le nuage sera clairement gagnant.

  1. Vous pouvez monter et descendre des instances très rapidement. Si votre trafic est très éclaté (par exemple, vous gérez un site Web de vente de billets), vous pouvez très facilement cloner votre niveau Web, votre niveau de base de données et/ou votre niveau de stockage sur des centaines de machines virtuelles une heure avant la mise en vente des billets pour Justin Bieber et les fermer toutes une heure après pour économiser de l'argent. Les solutions basées sur le matériel prennent généralement des semaines pour augmenter votre capacité et elles continuent à coûter de l'argent lorsqu'elles ne sont pas pleinement utilisées.
  2. Le coût initial peut être beaucoup plus faible. Le matériel que vous mentionnez coûte probablement des dizaines de milliers de dollars en plus de vos autres coûts d'hébergement. Mon serveur Amazon me coûte environ 15 dollars par mois, mais je peux facilement le faire évoluer vers une machine virtuelle beaucoup plus puissante et le faire évoluer vers des dizaines d'instances à charge équilibrée avec un préavis d'une heure.
  3. Ils font une grande partie du travail pour vous. Amazon propose d'autres services tels que DynamoDB, qui s'adapte automatiquement à la charge de travail ou aux besoins de stockage que vous lui confiez. Ils fonctionnent sur des disques SSD pour plus de rapidité et sont répliqués à plusieurs endroits, ce qui vous assure redondance et disponibilité.

Cela dit, votre application doit être capable de s'étendre horizontalement. Vous ne pouvez pas simplement la lancer dans le nuage et vous attendre à ce qu'elle évolue éternellement. Par exemple, les sessions PHP par défaut présentent deux problèmes :

  1. Ils sont stockés sur un disque local, ce qui signifie que vous devez soit utiliser des sessions collantes, soit un disque partagé, ce qui constitue un goulot d'étranglement.
  2. Ils sont ouverts avec flock() qui est un verrou de fichier exclusif et bloquant. Un seul processus PHP peut utiliser un fichier de session à la fois. Cela peut être un sérieux problème lorsque vous commencez à lancer de nombreux appels AJAX.

Il ne s'agit que d'un seul exemple, mais les applications qui n'ont pas été écrites en tenant compte de la mise à l'échelle horizontale sont généralement pleines de ressources exclusives comme celle-ci.

Si vous utilisez une base de données distribuée (ce qui est le cas des services de base de données d'Amazon), votre application doit également être en mesure de gérer les compromis inhérents à l'architecture de la base de données. CAP théorème. Celui-ci stipule que vous pouvez obtenir deux des trois aspects : Cohérence, Disponibilité, Tolérance de partition. Vous devrez savoir lequel de ces trois aspects vous n'avez pas et faire en sorte que votre application le compense.

Si votre application convient au matériel, optez pour le matériel. Si elle convient au cloud, optez pour le cloud.

Remarque : j'ai utilisé Amazon comme exemple ici, mais il existe d'autres fournisseurs d'hébergement en nuage qui ont des capacités similaires de création et de suppression d'instances très rapides et qui ne vous facturent que ce que vous utilisez réellement.

0voto

Soren Points 13

Un autre point qui n'a pas été mentionné est la possibilité de faire évoluer la capacité de la base de données à l'avenir. Les exigences matérielles ne sont pas statiques, elles évolueront au fil du temps en fonction de la croissance de l'application. @rhossi, vous devriez considérer, pour chacune des options matérielles, votre chemin d'évolutivité à l'avenir. En bref : (1) Pour Amazon EC2, pour augmenter l'évolutivité, vous pouvez passer à une instance plus grande [facile], pour augmenter l'évolutivité, vous devrez installer MySQL sur des instances supplémentaires et définir la mise en grappe entre elles [difficile, ainsi que des performances réseau sous-optimales, sauf si vous demandez des instances de grappe spéciales]. (2) Pour Amazon RDS, pour augmenter l'échelle, c'est la même chose [facile], pour la réduire, il faut ajouter des instances RDS et définir un clustering [difficile]. (3) Autre chose : vous pouvez consulter le site Web de Xeround. base de données en nuage sur EC2 qui dispose d'une mise à l'échelle automatique et ne nécessite pas de mise en grappe, mais je pense que la capacité de stockage est limitée et qu'elle ne convient pas. Il peut y avoir d'autres options qui offrent l'auto-scaling et je pense qu'il serait bon de l'étudier. (4) Matériel réel - la mise à l'échelle nécessite une mise à niveau manuelle du matériel [petits tracas + coût initial], la mise à l'échelle nécessite plus de machines et la définition manuelle de la mise en grappe [moyennement difficile], mais cela sera plus facile à réaliser que sur le nuage, car les IP sont statiques et les performances du réseau meilleures. HTH

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X