Cluster Haute Disponibilité MySQL

Cluster Haute Disponibilité MySQL - Logiciels - Linux et OS Alternatifs

Marsh Posté le 05-03-2007 à 18:06:19    

Bonjour,
 
Je suis en train de préparer la mise en place d'un cluster haute disponibilité pour du mysql.
 
D'autres avant moi avaient mis en place un linux-ha (heartbeat) qui a le mérite de bien fonctionner mais qui ne correspond plus à nos besoins. Nous souhaiterions faire évoluer notre solution (en gardant heartbeat ou non) vers un système capable de garder les connexions TCP/UDP à la base de données en cas de crash d'un des serveurs (node).
 
Pour expliquer un peu plus ce que je souhaiterais faire prenons un exemple. Un client X ouvre une transaction sur le serveur mysql Y (à travers les serveurs frontaux heartbeat). Le serveur heartbeat crash. Le serveur de backup prend le relai et reprend (ou continue ! on peut toujours rêver) la transaction avec le client X et le serveur Y AUTOMATIQUEMENT.
 
Pourquoi vouloir mettre en place une telle solution ? Tout simplement car notre système gère 10000 requêtes (essentiellement des insert) par minute et ce 24/7 ! Perdre des dizaines de transaction en cas de crash ou d'indisponibilité temporaire d'un des serveurs nous fait perdre des milliers de données :s :s :s
 
J'ai lu en long en large et en travers la documentation sur NDB, la gestion cluster intégrée à mysql, mais quand je vois le besoin en RAM que la solution nécessite c'est même pas la peine d'y penser (même si nos serveurs sont capables de gérer 32Gb de RAM les barrettes de 8Go existent pas :D (on à des serveurs HP :p))
 
Bref... J'ai trouvé une solution qui a l'air intéressante et qui se nomme sequoia (http://www.continuent.org) qui se base essentiellement sur C-JDBC (Cluster JDBC : http://c-jdbc.objectweb.org/).
 
Cette solution intègre la mise en place d'un middleware (ou plusieurs pour la redondance !) en front des serveurs mysql qui se charge de monter un controller qui mappe une base de données virtuelle qui permet de gérer (entre autre) : l'authentification, le load balancing entre les différents serveurs mysql, les transactions, les répliquent avec les autres controller, le failover etc...
 
Vous allez me dire... Bah la voila ta solution ! Certes... Mais le hic dans l'histoire c'est que le "programme" est écrit en Java. J'ai rien contre java mais c'est pas reconnu pour être un language léger :p Alors j'aimerais savoir si quelqu'un a déjà utilisé cette solution et pourrait me faire un rapide feedback sur les capacités machines nécessaires pour les controller tout en sachant que j'ai besoin de gérer des millions de transactions par jour...
 
 
Si quelqu'un à une autre solution à proposer je suis preneur ^^ Je suis essentiellement en phase de recherche actuellement donc je suis ouvert à toute proposition qui pourrait correspondre à mes besoins ;)
 
 
Merci d'avance :)
 
A+

Reply

Marsh Posté le 05-03-2007 à 18:06:19   

Reply

Marsh Posté le 23-03-2007 à 14:20:32    

Bonjour,
 
J'ai beaucoup moins de contrainte que toi et je suis en train de réfléchir à la mise en place d'une solution heartbeat pour mon serveur WEB + MySQL.
Si tu pouvais me faire part de documentation et/ou script permettant la synchronisation des bases ce serait super sympa  :jap:  
 
 

Spoiler :

mais non ch'uis pas flemmard, c'est juste que c'est bête de re-inventer la roue :whistle:


Message édité par lexdu le 23-03-2007 à 14:20:51

---------------
Asus U80v (WX016V) (Debian 64bits) + Asus 1015PEM (Ubuntu 64bits) + Freebox v6 + Synology DS211
Reply

Marsh Posté le 23-03-2007 à 15:21:32    

"chrooter" tous les services dont tu as besoin dans un /repertoire
 
ensuite rsync régulier de l'ensemble :??:  /repertoire  et /home
 
faire un dns 1aire avec machine1 et 2aire avec machine2

Reply

Marsh Posté le 23-03-2007 à 15:38:37    

memaster a écrit :

"chrooter" tous les services dont tu as besoin dans un /repertoire

ensuite rsync régulier de l'ensemble :??:  /repertoire  et /home

 

faire un dns 1aire avec machine1 et 2aire avec machine2


hmmmm... autant je sais chrooter mon environnement (genre install de gentoo depuis un liveCD) et je vois ce que ça donne, autant "chrooter les services (et données associées, genre BD MySQL) dans un /repertoire" ça je ne vois pas du tout  :o  :sweat: (ou alors c'est juste une question de vocabulaire que je n'associe à aucune action très claire dans ma petite tête :o )

Message cité 1 fois
Message édité par lexdu le 23-03-2007 à 15:39:35

---------------
Asus U80v (WX016V) (Debian 64bits) + Asus 1015PEM (Ubuntu 64bits) + Freebox v6 + Synology DS211
Reply

Marsh Posté le 23-03-2007 à 15:55:59    

Pour "chrooter" des services je vois pas comment faire à part utiliser des isolateurs (containers) tel que OpenVZ ou VServer... :??:
 
Sinon conernant ma problématique du départ je suis en train de créer un script de bench pour tester la solution en java donc j'essaierais de vous faire un feedback d'ici 10-15 jours (ouais ouais je sais c'est long mais nos scripts de bench durent 1 semaine :p)
 
@ lexdu : pour la documentation un tour sur www.linux-ha.org et tu auras tout ce qu'il faut. C'est le site de référence en la matière et il n'existe malheureusement pas beaucoup d'howto sur le net :s
 
A+

Reply

Marsh Posté le 23-03-2007 à 16:17:04    

cyberben a écrit :

@ lexdu : pour la documentation un tour sur www.linux-ha.org et tu auras tout ce qu'il faut. C'est le site de référence en la matière et il n'existe malheureusement pas beaucoup d'howto sur le net :s
 
A+


Je file voir ça ;)
Merci  :jap:


---------------
Asus U80v (WX016V) (Debian 64bits) + Asus 1015PEM (Ubuntu 64bits) + Freebox v6 + Synology DS211
Reply

Marsh Posté le 04-04-2007 à 13:06:19    

Y'a des fonctions de failovers et de réplication de bases dans les produits mysql si je ne me trompe (je pense à mysql cluster).

Reply

Marsh Posté le 04-04-2007 à 14:01:20    

lexdu a écrit :

hmmmm... autant je sais chrooter mon environnement (genre install de gentoo depuis un liveCD) et je vois ce que ça donne, autant "chrooter les services (et données associées, genre BD MySQL) dans un /repertoire" ça je ne vois pas du tout  :o  :sweat: (ou alors c'est juste une question de vocabulaire que je n'associe à aucune action très claire dans ma petite tête :o )


créer un répertoire racine (avec juste les /bin /etc /sbin qu'il faut) spécialement pour chaque service et qui contient
config+eventuellement datas
qd tu te chroot dans un livecd :
1) tu montes la partition du cd dans un repertoire.
2) tu te chroote dedans ==> redefinir ton / (ex. : ton /mnt/livecd deviens ton / )
pour les services c'est pareil, tu fait tourner ton service dans un nouveau / (un systeme minimum) uniquement pour lui.
c'est plus pratique pour des machines qui sont sensées se synchroniser entre elles, les datas+config
ne sont pas "eparpillées" dans /home /etc /usr ... (que sais je)


Message édité par memaster le 04-04-2007 à 14:02:19
Reply

Marsh Posté le 04-04-2007 à 14:05:53    

non mais faut arrêter la bibine hein :o
 
mysql -> réplication live, c'est 3 à 5 lignes dans la conf
ha -> heartbeat/ucarp, une ip virtuelle et roule.
 
Si en plus tu veux que ce soit un serveur web tu montes ton /sites (ou autre) en NFS sur un filer, et si tu veux rsync-er le /etc/apache* du maitre vers l'esclave.
 
C'est ce que j'ai fait et ça fonctionne parfaitement.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 04-04-2007 à 16:28:34    

réplication live, ça me paraît bien mieux que de la descente/remonte de données dans mysql via un script exécuté périodiquement. A étudier plus précisément, donc ;)
Mon heartbeat fonctionne correctement. C'est juste la synchro des données qui n'est pas encore complètement au point :D


---------------
Asus U80v (WX016V) (Debian 64bits) + Asus 1015PEM (Ubuntu 64bits) + Freebox v6 + Synology DS211
Reply

Marsh Posté le 04-04-2007 à 16:28:34   

Reply

Marsh Posté le 17-08-2011 à 23:41:44    

Reply

Marsh Posté le 17-08-2011 à 23:42:34    

Pour mettre à jour le sujet : http://admincloud.net/24/cluster-m [...] onibilite/


---------------
Pour gagner des € :  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed