Journal MySql et HeartBeat

Posté par  .
Étiquettes : aucune
0
28
déc.
2005
Bonjour,

je suis en train de monter un "cluster" mysql, en utilisant la réplication (dual Master) et un lien HeartBeat pour avoir une IP Virtuel qui se balade d'un serveur à l'autre.

Les deux machines sont reliées pas un cable GB Croisé et un petit cable série. La réplication s'effectue via le cable croisé. J'ai donc en permanence les deux serveur à l'identique (les machines étant puissante, la réplication est quasiment instantanée).

Au départ, j'ai commencé par configurer HB sans ajouter de servir dans haresources. L'IP virtuel se balade bien, c'est génial :)

Si je configure mysql comme ressource, le serveur est lancé d'un coté, et éteint de l'autre. Si le master devient indisponible, HB demarre bien MySql sur le slave, et ca repart comme en 40.

Si vous avez bien suivit, et si j'ai bien expliqué, vous comprendrez qu'étant donné que j'ai une configuration dual master, j'aimerais bien que mon mysql reste allumé sur les deux serveurs, mais que le changement d'ip se fasse à la fois sur une indispo du master mais aussi sur un crash de la database du master tout en ayant le deuxieme master (mysql) synchro au niveau des data, c'est a dire en marche sur le slave HB.

Donc ma question est:

est-il possible de dire a HeartBeat de lancer le service, même sur le slave ?? Je n'ai rien trouvé dans la doc, a moins que je sois passé a coté ... Il n'y a pas cette possibilité détaillées :/

Merci d'avance, journal qui sait tout.

Guillaume.
  • # ucarp ?

    Posté par  . Évalué à 3.

    Pour avoir essaye un peu HB, je le trouve tres complique.. Je me suis rabattu sur ucarp. Il s'agit d'un portage de CARP (de OpenBSD), ce protocole fait les memes choses que le protocole proprio VRRP de Cisco.
    Donc dans ton cas, il "bind" une ip virtuelle sans souci. La configuration est extremement simple. Il suffit de faire deux petits scripts qui seront actives lorsque l'IP virtuelle sera activee ou desactivee..
    A toi de voir si ca peut t'interesser..

    lien : www.ucarp.org
  • # Niveau distrib ?

    Posté par  . Évalué à 2.

    Il me semble que ta distrib sait très bien démarrer un service, et si j'ai bien compris, c'est ce que tu veux. Après il faut configurer MySQL pour qu'il écoute sur toutes les interfaces, de telle sorte à ce qu'il soit joignable lorsque le changement d'ip aura eu lieu.
  • # Gère le service sans HB

    Posté par  . Évalué à 2.

    Comme dit dans mon titre... tu n'as pas besoin de HB pour gérer ton service. Dis à HB de ne gérer que l'IP virtuelle, et fais lancer ton service au démarrage de la machine.

    voili voilou
    • [^] # Re: Gère le service sans HB

      Posté par  (site web personnel) . Évalué à 2.

      HB ne sert pas vraiment à monitorer un service, pour ça, il y a mon.
      Tu peux combiner les deux, ça marche parfaitement bien.
      Le principe général est que mon surveille mysql et dans le cas ou le service s'interrompt alors mon tue heartbeat ce qui a pour effet de faire basculer l'ip flottante vers l'autre machine.
      Comme tu peux écrire toi même tes alertes mon (des scripts sh), il est facile de faire ce que tu veux.
      En même temps, dans une config Master-Master, en général, tu as 2 ip flottantes et en mode Master-Slave une seule. Ta config me parait un peu originale ...
      • [^] # Re: Gère le service sans HB

        Posté par  . Évalué à 1.

        Originale je sais pas :)

        Le concept du dual master avec mysql semble etre quelquechose de faisaible, la preuve, ca marche, et on trouve pas mal de doc en parlant. C'est pratique car nous n'avons pas besoin d'avoir les data sur une autre machine avec un montage NFS ou d'autres choses dans le genre, pour avoir les mêmes données sur les deux serveurs.

        La deuxieme machine est la seulement si la premiere tombe, il n'y a pas d'équilibre de charge.

        Donc, j'ai qu'une seule IP, mais une réplication en temps réelle des mysql.

        Est si bizzare ?

        En tout cas, je vais etudier mon, justement, c'est ce que je cherche ^^ (je vais sans doute le coupler a ucarp, car sa simplicité de mise en place me plait beaucoup, et ca a l'air de marcher parfaitement).
  • # Merci ... mais

    Posté par  . Évalué à 1.

    Merci pour vos réponses.

    En fait, j'ai installé et config ucarp. Deconcertant de facilité !!! Ca répond à un de mes besoins, soit monitorer l'accessibilité d'une des machines ... et si ca tombe, hop basculement sur l'autre.

    Mais ca reste au niveau de la machine, et j'aimerais plus descendre aussi au niveau du MySql. ucarp ne semble pas pouvoir tester la dispo du MySql.

    Je pense peut etre à un script ? lancé lors du "up" d'ucarp ? Ou une appli capable de faire ca (test t'intégrité de la bdd) ?

    Si vous avez une idée :)

    En tout cas, je vais essayer de chercher dans cette direction.


    Comme dit dans mon titre... tu n'as pas besoin de HB pour gérer ton service. Dis à HB de ne gérer que l'IP virtuelle, et fais lancer ton service au démarrage de la machine.

    voili voilou


    Justement, HB repond pas du tout a ce que je veux faire, mise a part l'ip virtuel. Théoriquement le MySql est dispo tout le temps, mais ca doit etre une des raison du changement d'ip, en plus de la dispo de la machine. Donc je vais devoir gérer l'intégrité et le bon fonctionnement du mysql.

    La question est comment ^^

    Merci encore.
    • [^] # Et la réplication ?

      Posté par  . Évalué à 1.

      Pourquoi ne pas avoir de la réplication cyclique ?

      A -> B -> A (A se replique sur B qui se replique sur A...)

      ca marche très bien !

      Si un des 2 noeuds du cluster s'arrete, la répliction cyclique s'arrete aussi. Dès que le noeud revient, la réplication reprends la ou elle en était. Attention cependant à la version de Mysql utilisée ! certaines version ne sont pas très stable pour la réplication cyclique!
      • [^] # Re: Et la réplication ?

        Posté par  . Évalué à 1.

        je complète un peu car je me rends compte que je suis allé un peu vite...

        Il faut que chaque noeud du cluster utilise comme serveur mysql 'localhost'
        Ainsi, tes neuds sont configurés en actif/passif mais les serveurs mysql sont en actif/actif. De ce fait, tu n'as pas à gérer la bascule mysql. En effet, tes neuds A et B sont toujours synchro au niveau de tes bases mysql, si le noeud A (actif) tombe, le noeud B prend le relais en utilisant comme serveur mysql 'localhost' (la base est synchro) et dès que le noeud A revient à la vie (mais reste en mode passif) mysql se synchronisera.
        Il faut juste vérifier que les mysql sont bien synchro avant chaque bascule.

        j'espère avoir été plus clair.
    • [^] # Re: Merci ... mais

      Posté par  (site web personnel) . Évalué à 1.

      Avec MON (bis repetita).
      MON est capable de surveiller un service particulier (on peut écrire des `monitors`, beaucoup sont en perl) et sur évènement (up/down) déclencher une alerte particulière (alert ou uplalert, qu'on peut écrire de la même manière, beaucoup sont en bash, enfin, on peut faire du merl aussi ...).
      MON peut surveiller les services sur la machine locale mais aussi à distance, pour des groupes de machines, etc. Évidemment, à distance, le mode de surveillance sera relativement restreint et en général on se contentera de vérifier qu'un port donné est accessible.
      MON ne se charge pas de faire le changement d'adresse par contre, il peut facilement tuer localement HB ou ucarp pour forcer la migration d'ip.
  • # Sinon, pour du vrai cluster actif/ actif...

    Posté par  . Évalué à 1.

    ... y'a Oracle RAC (Real Application Cluster):
    téléchargeable gratuitement sur http://otn.oracle.com

    le lien heartbeat (ou interconnect) sert au cache fusion, c'est à dire à la scalabilité du cluster en tant que tel.
  • # J'ai déjà fait un truc du genre

    Posté par  . Évalué à 1.

    J'ai déjà fait une manip de ce genre.

    Il y a deux problèmes distincts :
    - basculer mySQL lors d'une bascule système (IP virtuelle) : je ne connais pas bien la config doubleMaitre, pour ma part j'ai utilisé une config maitre/esclave (avec réplication), le trip c'est qu'il faut veiller à basculer le statut maitre/esclave de mySQL lors de la bascule système (IP virtuelle) => tu peux configurer facilement HB pour qu'il lance un script de ton choix (c'est à ce niveau que je forcais le bon statut maitre/esclave de mySQL)
    - forcer une bascule HB (complète) lors de tout évennement. Le plus simple est d'utiliser "mon" (suggéré plus haut) qui permet d'implémenter simplement le principe "detection => action" avec des scripts "maison" (un pour la detection que mySQL déconne par exemple, un pour l'action de basculer le cluster (force HB à basculer) => j'avais fait ça pour la saturation d'une partition mais c'est implémentable pour n'importe quoi.

    Bon courage et bienvenue dans le merveilleux monde de heartbeat (ça marche du tonnerre)
  • # Résumé: au final ca donne ca --> :)

    Posté par  . Évalué à 2.

    Tout d'abord, merci pour vos renseignements/propositions.

    Je vais vite fait revenir sur le pourquoi du dualmaster. C'est tout simple. Comme dit plus haut, pas besoin de basculter le slave en master et vise versa. Donc, les datas sont a jours dés deux cotés, c'est parfait.

    J'ai pas tout a fait compris comme en configurant localhost ils pouvaient etre synchro :/ M'enfin, ma config du dual master me convient parfaitement, a l'époque des mes recherches, c'etait la seule solution que j'avais trouvé pour avoir mes datas à jours.

    Ensuite, pour le control des services et le basculement de l'ip virtuel, je suis revenu a HB avec un petit MON de dessous les fagots. Pourquoi HB alors que j'étais super content d'avoir découvert ucarp ? En fait, meme si ucarp est facile a mettre en place, HB est plus facilement utilisable par MON, et puis bon, ca marche vraiment bien donc pourquoi se prendre la tête.

    Donc MON surveille MySQl. HB s'occupe de gérer l'IP Virtuel.

    Ca marche vraiment bien.

    Au passage, un petit lien que j'avais, mais que je n'avais pas prit le temps de lire, sur la mise en place de HA et MON:

    http://www.regit.org/article.php3?id_article=11

    Voili Voilou.

    Merci :)
  • # Et le mode cluster ?

    Posté par  . Évalué à 1.

    Je n'aime pas trop les solutions à base de HB/VRRP/CARP qui utilisent des techniques d'arp-spoofing pour prendre l'ip virtuelle. Elles sont souvent pénibles à configurer, et posent des pb de mise à jour des tables arp sur certains switch et fw lorsqu'il y a basculement.


    Mysql propose depuis la version 5 le mode cluster.
    (http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-overvie(...)
    Quelqu'un a essayé ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.