version PDF - Flash informatique

publicité
Analyse
MySQL Cluster 5.1
Julia.Paolini@epfl.ch
EPFL - Domaine IT, Responsonable MySQL
This article gives you a brief explanation of what
MySQL Cluster is, in which cases you can use it and
also includes some useful tips.
Cet article va s’intéresser de manière non exhaustive au clustering MySQL en expliquant ce qu’il peut
apporter, dans quel cas l’utiliser et ce à quoi il faut
être attentif.
Lorsque vous souhaitez que votre application soit disponible 7j/7,
24h/24, la notion de cluster est assez rapidement évoquée comme
étant la réponse adéquate au besoin. Mais qu’est ce qu’un cluster ?
Cela peut être vu comme un regroupement de machines communiquant entre elles qui permet d’augmenter la disponibilité (si une
machine tombe, une autre prend le relais), d’absorber une montée
en charge, faciliter la gestion des ressources. Cependant, l’utilisateur extérieur perçoit cet ensemble comme une seule entité.
Cet article va tenter de traiter de la gestion du clustering par MySQL Cluster 5.1. L’actuelle version GA & est la 7.0 mais elle n’a pas
été testée par l’auteure.
MySQL Cluster a été conçu pour le marché des télécommunications qui, pour leurs applications, avait besoin d’une haute disponibilité, avec des bases de données de taille relativement petites,
qui supporte de nombreuses lectures avec peu d’écritures. On voit
tout de suite que cela s’adresse à des applications particulières !
considérés par l’application comme étant les points d’entrée
au cluster, ils traitent les requêtes et récupèrent les données;
z des nœuds appelés nœuds de données qui stockent et traitent
les données;
z un ou plusieurs nœuds d’administration permettant de faire
l’administration du cluster.
Il faut au minimum quatre nœuds afin de garantir la haute disponibilité: un nœud d’administration (qui peut aussi héberger un
nœud API/SQL en backup), un nœud API/SQL (qui peut aussi héberger un nœud d’administration en backup) et deux nœuds de
données.
Configuration minimale d’un cluster MySQL
Ce qu’il permet de faire ?
Haute disponibilité (élimination de SPOF &, redondance et failover &), scalabilité &, haute performance, équilibrage de charge
sont les objectifs mais attention ! l’application doit être pensée
pour le clustering MySQL sinon les objectifs risquent de n’être
partiellement voire pas du tout remplis. Une autre caractéristique
est de pouvoir faire des backups à chaud. Le produit est éprouvé
car il est utilisé en production par des applications grandement
utilisées mais il n’est pas la réponse magique aux problèmes de
performances.
De plus, l’administration d’un cluster MySQL est complètement
différente d’un serveur traditionnel et donc mérite de la formation et du temps.
Afin de garantir le failover, une même donnée se trouve sur au
moins deux nœuds de données différents (selon la configuration
demandée).
Comme un schéma vaut mieux qu’un long discours, en voici un
pour essayer d’expliquer au mieux comment se fait la répartition
des données.
Comment cela fonctionne ?
Un cluster MySQL est composé de:
z un ou plusieurs nœuds nommés nœuds API ou SQL pouvant être
Schématisation du processus de fractionnement d’une table
26 JANVIER 2010 - N°1
13
MySQL Cluster 5.1
Les rectangles NDBD représentent les nœuds de données.
La table est d’abord divisée en plusieurs partitions (P1, P2, P3, P4).
Dans l’exemple, le cluster est configuré pour qu’une donnée existe
à deux endroits différents (nombre de réplicas=2), on appelle
fragment primaire la partition qui est utilisée par les requêtes et
le fragment secondaire la partition qui est utilisée pour le backup.
De cette manière, tant qu’un nœud dans chaque node group est
vivant, le cluster continue de fonctionner car l’entièreté des données sont disponibles.
Par contre si tous les nœuds d’un node group tombent, le cluster
s’arrête de fonctionner.
Le mécanisme de réplication synchrone est utilisé de manière
à garantir la consistance des données entre les différents fragments: lorsque l’on souhaite modifier une donnée, l’ordre est envoyé au serveur MySQL qui détermine quel est le nœud qui stocke
le fragment primaire correspondant à cette donnée et la modifie.
Il est ensuite envoyé aux autres nœuds du même node group afin
que le(s) fragment(s) secondaire(s) soi(en)t modifié(s). Attention
toutefois, plus la donnée est volumineuse et est dupliquée, plus
cela demande du temps pour l’écrire et la modifier !
Ce à quoi il faut faire attention
Sans rentrer dans les détails qui ne vous dirons (peut-être) rien,
voici quelques informations (toujours non exhaustives bien sûr) à
prendre en compte:
z Voici le matériel recommandé par MySQL pour les serveurs
utilisés comme nœuds de stockage dans le cluster:
w Système: Linux (Red Hat, SuSe), Solaris, AIX, HP-UX, Mac
OSX.
w CPU: 2 processeurs: Intel Xeon, Intel Itanium, AMD Opteron, Sun SPARC, IBM PowerPC.
w Mémoire: 16 GB RAM.
w Disque: 4 disques 36GB SCSI (contrôleur RAID 1).
w Réseau: Ethernet gigabit.
z Il faut au minimum quatre nœuds (donc quatre machines)
avec une mémoire conséquente car les données et les index
sont maintenus en mémoire.
z Pour des raisons de performances, les quatre nœuds devraient
être dédiés au clustering.
z S’il y a beaucoup plus d’écritures que de lectures, les performances risquent de chuter.
z Attention au nombre de jointure dans une même requête, plus
il y en a plus les performances vont diminuer.
z Administration différente d’un serveur MySQL classique et
plus complexe.
z Pour l’instant que sur Linux.
z Certains ordres SQL qui fonctionnent avec un MySQL classique produisent une erreur (création de tables temporaires,
limitations sur les index …).
Deux petits tableaux comparatifs, MyISAM et InnoDB étant des
moteurs de stockage de MySQL et NDB étant le (seul) moteur de
MySQL Cluster.
14
MyISAM versus NDB
Caractéristique
MyISAM
NDB
Supporte les transactions multi instructions et les rollback &
Non
Oui
Supporte les index fulltext
Oui
Non
Peut utiliser les recherches hash
Non
Oui
Supporte l’Unicode à partir de la
version
4.1
5.0
Peut compresser le stockage en lecture seule
Oui
Non
Supporte les clés étrangères
Non
Non
Supporte les transactions
Non
Oui
Verrou au niveau
Table
Enregistrement
Utilise beaucoup de RAM et a beaucoup de trafic réseau
Non
Oui
InnoDB
NDB
Supporte les contraintes des clés
étrangères
Oui
Non
Supporte les transactions
Oui
Oui
InnoDB versus NDB
Caractéristique
Verrou au niveau
Enregistre- Enregistrement
ment
Supporte l’Unicode à partir de la
version
4.1.2
5.0
Utilise beaucoup de RAM et a beaucoup de trafic réseau
Non
Oui
Au bout du compte
MySQL Cluster apporte tout ce qui a trait à la notion de disponibilité (99,999%) et de performance mais la scalabilité est réduite
dans le sens où l’on peut rajouter à chaud uniquement des nœuds
d’administration et API/SQL. Il faut faire attention à la notion
d’équilibrage de charge car dans le cas de MySQL Cluster elle se
fait grâce à la répartition des données sur plusieurs nœuds (donc
chaque nœud s’occupe du traitement de ses données) mais pas
parce que la donnée existe à plusieurs endroits. En effet, seul le
fragment primaire est utilisé pour la lecture et l’écriture.
La version 7.0 de MySQL Cluster semble apporter sont lot de
nouveautés intéressantes, comme par exemple l’amélioration de
la scalabilité en donnant la possibilité d’ajouter/supprimer des
nœuds de données à chaud. Elle permet aussi de tirer avantage
du multithreading, ce qui n’était pas possible avant. Cela permettrait, selon MySQL, d’améliorer grandement les temps de réponse.
MySQL s’est aussi intéressé à la plate-forme Windows car la version 7.0 peut dorénavant être installée sur du 2003 Server, XP ou
Vista mais pour le moment uniquement pour du développement.
Certaines limitations ont aussi été repoussées comme par exemple
le nombre de nœuds qu’un cluster pouvait gérer.
26 JANVIER 2010 - N°1
MySQL Cluster 5.1
Dans tous les cas, il n’est pas pensable de prendre une application
existante telle quelle et de la clusteriser. Il faut vraiment prendre
le temps de repenser l’application afin de l’adapter au produit !
Pour toute question concernant MySQL, vous pouvez contacter l’équipe d’administrateurs MySQL via mail: mysql-admin@
groupes.epfl.ch.
GLOSSAIRE
&
Failover: commutation automatique vers
un système redondant ou en attente,
lors d’une panne.
GA (Generally Available): stable pour être en
production.
Pour la formation, vous pouvez joindre l’équipe responsable de la
formation par mail ([email protected]), le matin par téléphone
(021 69 322 44) ou par fax (021 69 322 20).
Sur mysql.epfl.ch vous trouverez un récapitulatif de toutes les
informations concernant MySQL à l’EPFL. n
Jointure: combinaison des enregistrements de deux tables disposant de valeurs correspondantes dans une colonne
donnée de chaque table (souvent ayant
le même nom dans les deux).
SPOF (single point of failure): élément d’un
système qui, dans le cas où il tombe en
panne, empêche le système entier de
fonctionner.
Rollback: annulation d’une transaction.
Scalabilité: possibilité de pouvoir étendre
un système facilement.
À votre service
Doodle@epfl
Pierre.Mellier@epfl.ch
EPFL – Domaine IT – Responsable du KIS
Le succès du service Doodle (www.doodle.com) ne se dément
pas. Il permet très facilement de gérer une prise de rendez-vous
ou de réaliser un petit sondage. L’outil est tellement agréable et
rapide à utiliser que désormais beaucoup de rendez-vous à l’EPFL
se concrétisent au moyen de ce service. Son business plan est
identique à celui de Google, un service gratuit qui se rémunère
à l’aide de publicité plus ou moins discrète. Cette démarche peut
évidemment poser problème à ceux qui considèrent assez justement qu’il n’y a pas de raison d’être envahi par de la publicité sur
son lieu de travail. C’est pourquoi nous avons décidé d’acquérir
une licence d’utilisation spécialement pour l’EPFL qui donne les
avantages suivants:
z suppression de la publicité
z trafic Web sécurisé par HTTPS
z utilisation du bandeau EPFL.
Ainsi, la suppression de la publicité et l’utilisation du bandeau
EPFL permettent encore de renforcer le sérieux de l’outil. De plus,
sa confidentialité est améliorée à l’aide d’un canal de communication crypté (HTTPS) entre le poste de travail et les serveurs Web
de Doodle.
L’accès au service Doodle pour l’EPFL se fait au moyen de l’URL
epfl.doodle.com, le service continuant à être hébergé chez
Doodle. Seules les personnes, identifiées à l’aide d’une adresse
email de l’EPFL ([email protected]), peuvent gérer des prises
de rendez-vous et des sondages. Pour vous connecter à ce service,
vous avez donc besoin de configurer un compte doodle avec votre
adresse email de l’EPFL. Bien sûr, les personnes qui répondent à la
prise de rendez-vous ou au sondage peuvent provenir quant à eux
du monde entier… n
26 JANVIER 2010 - N°1
15
Téléchargement