Aller au contenu

[LOGICIEL] Configuration failover basique mysql


MoiMemePerso

Messages recommandés

Bonjour,

Voila mon problème:

J'ai besoin de faire une configuration basique de réplication et synchronisation de bases de données mysql entre 2 serveurs sous Windows2003 Server, ceci afin d'intégrer une gestion de failover.

Le schéma est simple, j'ai un serveur principal et un serveur de secours

Les 2 sont en réseau local.

Mes applications clientes se connectent par défaut sur le serveur principal. Si le serveur principal ne répond plus, elles se connectent automatique sur le serveur de secours.

Il n'y a pas de load balancing entre les deux serveurs et il n'y en aura jamais. Donc, si mes 2 serveurs sont actifs, mes applications clientes travailleront uniquement sur le serveur principal.

Ce que je souhaite pouvoir configurer:

- une réplication en temps réel entre mon serveur principal et mon serveur de backup

- si mon serveur principal tombe et donc qu'automatiquement mes applications clientes basculent sur mon serveur de backup, comment faire pour synchroniser les données du serveur de backup vers mon serveur principal une fois ce dernier revenu en ligne? Et surtout, comment cela peut-il se faire automatiquement?

- Quelle est la meilleure stratégie à adopter si mon serveur principal revient en ligne après être tombé: tenter de rebasculer mes applications clientes sur mon serveur principal une fois la synchronisation terminée ou bien considérer mon serveur de backup comme serveur principal et inversement? Et surtout, comment mettre cela en place?

Note: si cela doit passer par une solution payante, ce ne sera pas un problème. La seule "contrainte" et de n'avoir que 2 machines, mon serveur principal et celui de secours tournant sous Windows2003.

J'essaie de réaliser cela depuis plusieurs jours déjà, mais tous les tutoriaux de configuration sont orientés backup et failover de serveurs web, avec deux serveurs de base de données (un principal et un secours) et une machine de management entre les 2, choses dont je n'ai pas besoin et qui en plus diminue la sécurité. En effet, si la machine de management tombe et qu’un des 2 serveurs tombe aussi, la gestion ne se fait plus et tout est bloqué. Donc peut être que les probabilités que cela arrive sont très faibles, mais Murphy est un de mes grands amis et c'est donc un cas que je ne peux me permettre d'avoir.

Ma tête allant exploser, je vous demande donc de l'aide.

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est uniquement pour MySQL

Concernant l'outil de réplication, il y a Master et un Slave et d'après ce que j'ai compris, le master enregistre en temps réel un pointeur sur où il en est des données répliquées. Le problème est que si le Master est en panne et que la base de donnée Slave est alors utilisée, lorsque je remettrai en marche le serveur Master, il va reprendre là ou il s'était arrêté mais ne va pas récupérer les nouvelles données de la base Slave car pour répliquer les données il n'analyse pas la base Slave mais se fie à son pointeur.

J'ai aussi vu une version cluster de MySQL mains il faut une machine de management pour que cela fonctionne, ce que je veux éviter.

Lien vers le commentaire
Partager sur d’autres sites

Le problème est que le slave est en lecture seule.

Solution, un peu gourmande en ressources, mais réellement plus efficace.

Tu prends tes 2 serveurs que tu passe sous Windows 2008 R2 + HyperV.

Tu mets, sur chaque hôte, le mysql, et en virtuel, les 2 managers (un à chaque fois pour chaque serveur physique)

Tu clusterise le Mysql en 4 serveurs: 2 nodes managers + 2 node DB.

La virtualisation sous 2008 est réellement bien meilleure que Virtual server 2005 (qui marche quand même pas mal hein), c'est pour ça que je conseille Windows 2008 R2 avec Hyper V. Mais Windows 2003 Server + Virtual Server fonctionne quand même très bien, j'en ai quelques un au boulot qui encaissent une charge folle.

Autre avantage de cette solution: le jour où tu ajoutes un serveur ou que tu en dépanne un, tu as juste à en rajouter un, ou le sortir de la pile Cluster, ce qui te simplifie grandement la maintenance en cas de problème.

Par contre, ça te coutera 2 licence de Windows 2003 Server supplémentaires (sauf si tu as des versions entreprise je crois, ou si tu mets les node managers sous Linux en virtualisé, mais je te déconseillerais de mixer les environnements....) et il faut que tes serveurs supportent la virtualisation....

Sinon, l'alternance temporaire mais c'est à gérer à la main, et me parait compliqué... Si le principal tombe, tu passe sur le secondaire mais en lecture uniquement. A partir de ce moment là, tu le passe en maitre, et tu considère que tu n'as plus d'esclave. Ensuite le principal remonte, tu le définis en slave, tu attends qu'il ai synchronisé la base, puis tu décide à un moment "T" (selon si la société bosse en H24 ou non, c'est plus ou moins simple) de faire machine arrière.

Lien vers le commentaire
Partager sur d’autres sites

Pourquoi ne pas utiliser un SAN pour héberger la BDD, et répliquer la config entre les serveurs MySQL ?

Le premier crash ? Allume le second, qui a la même IP, le même nom, la même conf, et qui, comble du bonheur, se co à la même base !

PS : C'est assez sale ce que je viens de dire tout de même. En théorie, ça peut (ça doit) fonctionner.

Lien vers le commentaire
Partager sur d’autres sites

Le problème est que le slave est en lecture seule.

Solution, un peu gourmande en ressources, mais réellement plus efficace.

Tu prends tes 2 serveurs que tu passe sous Windows 2008 R2 + HyperV.

Tu mets, sur chaque hôte, le mysql, et en virtuel, les 2 managers (un à chaque fois pour chaque serveur physique)

Tu clusterise le Mysql en 4 serveurs: 2 nodes managers + 2 node DB.

La virtualisation sous 2008 est réellement bien meilleure que Virtual server 2005 (qui marche quand même pas mal hein), c'est pour ça que je conseille Windows 2008 R2 avec Hyper V. Mais Windows 2003 Server + Virtual Server fonctionne quand même très bien, j'en ai quelques un au boulot qui encaissent une charge folle.

Autre avantage de cette solution: le jour où tu ajoutes un serveur ou que tu en dépanne un, tu as juste à en rajouter un, ou le sortir de la pile Cluster, ce qui te simplifie grandement la maintenance en cas de problème.

Par contre, ça te coutera 2 licence de Windows 2003 Server supplémentaires (sauf si tu as des versions entreprise je crois, ou si tu mets les node managers sous Linux en virtualisé, mais je te déconseillerais de mixer les environnements....) et il faut que tes serveurs supportent la virtualisation....

Sinon, l'alternance temporaire mais c'est à gérer à la main, et me parait compliqué... Si le principal tombe, tu passe sur le secondaire mais en lecture uniquement. A partir de ce moment là, tu le passe en maitre, et tu considère que tu n'as plus d'esclave. Ensuite le principal remonte, tu le définis en slave, tu attends qu'il ai synchronisé la base, puis tu décide à un moment "T" (selon si la société bosse en H24 ou non, c'est plus ou moins simple) de faire machine arrière.

+1 Mais : toute les bdd ne supportent pas le moteur NDBCLUSTER. Déjà testé et malheureusement certaines tables étaient impossible a convertir du coup le cluster MySQL n'etait pas la solution adaptée.

Lien vers le commentaire
Partager sur d’autres sites

Super, merci pour tous ces conseils.

@Higapeon, si mon SAN tombe en rad pour une quelconque raison (défaillance matérielle ou autre), je suis niqué. Et puis devoir démarrer un autre serveur quand le premier tombe en panne est trop long et ce même si j'arrive à l'allumer automatiquement. De plus, dans le cas où mon serveur principal redémarre, il y aura conflit d'adresse IP, donc on va éviter.

Je suis en train de mettre en place 2 machines avec 2008 serveur R2 pour tenter de configurer cela (merci MS et les licences d'essai de 6 mois).

En parallèle j'ai vu qu'on pouvais aussi faire de la réplication en mode Maitre-Maitre avec les outils de MySQL.

J'ai réussi à trouver une configuration qui à l'air pas mal et mes 2 bases de données se synchronisent entre elles (écrire dans une base met à jour l'autre automatiquement, quelque soit la base dans laquelle j'écris). Sachant que jamais les 2 bases ne seront utilisées simultanément, cela m'a l'air viable. Par contre il faut encore que je teste en conditions réelles dans le cas où mon serveur principal tombe, afin de voir les problèmes éventuels (ça me parait un peu simple à paramétrer, une simple configuration du fichier my.ini, là ou en cluster il y a pas mal de processus bien spécifiques à mettre en place pour faire la même chose).

Donc je vais tester les 2 méthodes et je vous dis ce qu'il en est.

Merci à vous en tout cas :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...