Load balancing sous Ubuntu
Résolu/Fermé
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
-
2 avril 2012 à 17:51
mamiemando Messages postés 33611 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 mars 2025 - 13 avril 2012 à 20:46
mamiemando Messages postés 33611 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 mars 2025 - 13 avril 2012 à 20:46
Bonjour,
Je viens de configurer mes serveur avec MySQL cluster et c'est fonctionnel. Par contre la je bloque sur comment installer Heartbeat et comment faire la répartition des charges...
En bref, avec Heatbeat je veux créer un IP virtuelle qui pourra me permettre de faire la répartition des charges vers mes 2 serveurs MySQL.. Ça fait déjà quelques jours que j'essaie des tutoriels et recherche sur internet comment faire... Je ne trouve pas beaucoup d'information là dessus pour Ubuntu...
Quelqu'un pourrait m'aider ou m'indiquer de bon tutoriels ?
Je viens de configurer mes serveur avec MySQL cluster et c'est fonctionnel. Par contre la je bloque sur comment installer Heartbeat et comment faire la répartition des charges...
En bref, avec Heatbeat je veux créer un IP virtuelle qui pourra me permettre de faire la répartition des charges vers mes 2 serveurs MySQL.. Ça fait déjà quelques jours que j'essaie des tutoriels et recherche sur internet comment faire... Je ne trouve pas beaucoup d'information là dessus pour Ubuntu...
Quelqu'un pourrait m'aider ou m'indiquer de bon tutoriels ?
A voir également:
- Load balancing ubuntu
- Ubuntu iso - Télécharger - Systèmes d'exploitation
- Ubuntu 24.04 - Accueil - Ubuntu
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Ubuntu sans interface graphique ✓ - Forum Linux / Unix
- Load optimized defaults - Forum Windows
5 réponses
mamiemando
Messages postés
33611
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mars 2025
7 836
2 avril 2012 à 20:12
2 avril 2012 à 20:12
Pour la répartition de charge, personnellement j'utilisais dans ma jeunesse mysql-proxy et ça marchait plutôt pas mal. Dans mon cas j'avais 1 serveur maître et n serveurs esclaves. Le serveur maître servait principalement à gérer les opérations en écriture (insert, update...) et les esclaves les requêtes en lecture (select ...).
L'idée c'est que le(s) client(s) se connectent au proxy comme si c'était une base, et en fonction de la nature de la requête (par exemple en lecture ou en écriture quand tu utilises le script rw-splitting.lua), tu peux envoyer la requête vers le serveur maître ou un de ses esclaves.
Cet article explique ce qu'il faut faire
http://www.dsivolant.com/articles/2010/07/22/configurer-mysql-proxy/
En gros tu installes mysql-proxy sur la machine qui va héberger le proxy (ce peut être une machine hébergeant un esclave, le maître ou une autre, c'est toi qui voit, il faut juste que tes clients s'y connectent) :
Ensuite tu configures /etc/default/mysql-proxy comme indiqué dans le lien et en veillant à ne pas utiliser le même port que ton serveur mysql s'il y en un sur cette machine. Tu peux vérifier le port en regardant dans /etc/mysql/my.cnf (par défaut 3306, si tu le corriges pense à relancer mysql) et avec la commande suivante si mysql tourne :
Dans /etc/default/mysql-proxy tu références notamment les IPs/ports du maître et du (des) esclave(s). Enfin il faut lancer mysql-proxy :
... et vérifier qu'il écoute bien sur le port configuré dans /etc/default/mysql-proxy :
Enfin il ne reste plus qu'à faire un test en te connectant à ton proxy avec une commande du genre :
Bonne chance
L'idée c'est que le(s) client(s) se connectent au proxy comme si c'était une base, et en fonction de la nature de la requête (par exemple en lecture ou en écriture quand tu utilises le script rw-splitting.lua), tu peux envoyer la requête vers le serveur maître ou un de ses esclaves.
Cet article explique ce qu'il faut faire
http://www.dsivolant.com/articles/2010/07/22/configurer-mysql-proxy/
En gros tu installes mysql-proxy sur la machine qui va héberger le proxy (ce peut être une machine hébergeant un esclave, le maître ou une autre, c'est toi qui voit, il faut juste que tes clients s'y connectent) :
sudo apt-get update sudo apt-get upgrade sudo apt-get install mysql-proxy
Ensuite tu configures /etc/default/mysql-proxy comme indiqué dans le lien et en veillant à ne pas utiliser le même port que ton serveur mysql s'il y en un sur cette machine. Tu peux vérifier le port en regardant dans /etc/mysql/my.cnf (par défaut 3306, si tu le corriges pense à relancer mysql) et avec la commande suivante si mysql tourne :
sudo netstat -ntlp
Dans /etc/default/mysql-proxy tu références notamment les IPs/ports du maître et du (des) esclave(s). Enfin il faut lancer mysql-proxy :
sudo service mysql-proxy restart
... et vérifier qu'il écoute bien sur le port configuré dans /etc/default/mysql-proxy :
sudo netstat -ntlp
Enfin il ne reste plus qu'à faire un test en te connectant à ton proxy avec une commande du genre :
mysql -u root -p -h ip_du_proxy -P port_du_proxy
Bonne chance
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
Modifié par enyrix le 2/04/2012 à 20:50
Modifié par enyrix le 2/04/2012 à 20:50
Merci, mais présentement je suis encore à configurer l'IP virtuelle... j'ai suivi ce tuto: http://blogs.dixcart.com/public/technology/2011/01/load-balancing-and-failover-for-replicated-mysql.html et jusqu'à présent c'est la première fois que je réussi a faire fonctionner heartbeat sans erreurs... là ou ça coince c'est dans la configuration de pacepaker...
Voici la configuration de heartbeat qui fonctionne correctement:
fichier /etc/heartbeat/ha.cf
fichier /etc/heartbeat/haresources
fichier /etc/heartbeat/authkeys
Mon IP virtuelle voulu etant 192.168.0.111 et le host du serveur étant r415-2 et j'utilise la carte réseau eth1:
Ça me fait une erreur lorsque je valide la dernière ligne ci-dessous:
une idée là dessus ?
d'ailleurs je me demande aussi si faut absolument avoir pacemaker avec heartbeat pour créer l'IP virtuelle.... d'après ce que je comprend ensuite on fait la répartition des charger avec mysql-proxy ou haproxy... je suis un peut perdu là...
Voici la configuration de heartbeat qui fonctionne correctement:
fichier /etc/heartbeat/ha.cf
autojoin none logfacility daemon keepalive 2 deadtime 15 warntime 5 initdead 120 ucast eth1 192.168.0.201 node r415-2 node r415-3 use_logd yes crm respawn
fichier /etc/heartbeat/haresources
r415-2 IPaddr:192.168.0.111/24/eth1
fichier /etc/heartbeat/authkeys
1 sha1 heartbeatpassok
Mon IP virtuelle voulu etant 192.168.0.111 et le host du serveur étant r415-2 et j'utilise la carte réseau eth1:
primitive shared_ip_one IPaddr params ip=192.168.0.111 cidr_netmask="255.255.255.0" nic="eth1" property stonith-enabled="false" location share_ip_one_master shared_ip_one 100: r415-2
Ça me fait une erreur lorsque je valide la dernière ligne ci-dessous:
WARNING: share_ip_one_master: referenced node r415-2 does not exist
une idée là dessus ?
d'ailleurs je me demande aussi si faut absolument avoir pacemaker avec heartbeat pour créer l'IP virtuelle.... d'après ce que je comprend ensuite on fait la répartition des charger avec mysql-proxy ou haproxy... je suis un peut perdu là...
mamiemando
Messages postés
33611
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mars 2025
7 836
3 avril 2012 à 09:49
3 avril 2012 à 09:49
Par IP virtuelle je suppose que tu veux parler plutôt d'IP locale ? Ou tu parles d'une IP associée à une interface virtuelle ?
Dans ton cas je pense que r415-2 doit désigner un hostname qui peut être résolu par DNS ou /etc/hosts, est-ce le cas ?
Quel est le résultat des commandess "uname -a" sur les deux machines ?
Bon sinon là tu pars sur une approche différente de celle dont j'ai parlé (et que je n'ai jamais testé) donc je ne sais pas si je pourrai vraiment t'aider, je découvre en même temps que je lis ton article :p
Dans ton cas je pense que r415-2 doit désigner un hostname qui peut être résolu par DNS ou /etc/hosts, est-ce le cas ?
nslookup r415-2
Quel est le résultat des commandess "uname -a" sur les deux machines ?
Bon sinon là tu pars sur une approche différente de celle dont j'ai parlé (et que je n'ai jamais testé) donc je ne sais pas si je pourrai vraiment t'aider, je découvre en même temps que je lis ton article :p
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
3 avril 2012 à 15:48
3 avril 2012 à 15:48
Il s'agit d'un IP virtuelle localement... Si je fait un ping en local vers le hostname ça fonctionne bien. Malgré l'erreur ça fonctionne tout de même. Il me reste plus que la partie de la répartition des charges avec MySQL proxy... Merci pour les infos!
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
3 avril 2012 à 19:21
3 avril 2012 à 19:21
Peut-être qu'on peut m'aider sur cela:
Je bloque sur la configuration de haproxy...
192.168.0.111 est mon IP virtuelle qui est ouvert sur le port 3306 pour mysql
J'essaye de configurer haproxy pour la répartition des charges:
Lorsque je le redémarre voila le message qui apparait:
Mon fichier de configuration /etc/haproxy/haproxy.cfg:
J'aimerais avoir votre avis sur l'erreur ou comment le résoudre, merci!
Je bloque sur la configuration de haproxy...
192.168.0.111 est mon IP virtuelle qui est ouvert sur le port 3306 pour mysql
J'essaye de configurer haproxy pour la répartition des charges:
Lorsque je le redémarre voila le message qui apparait:
root@r415-2:/etc/haproxy# /etc/init.d/haproxy restart * Restarting haproxy haproxy [WARNING] 093/131348 (26457) : config : 'option httplog' not usable with proxy 'mysql' (needs 'mode http'). Falling back to 'option tcplog'. [ALERT] 093/131348 (26457) : Starting proxy mysql: cannot bind socket
Mon fichier de configuration /etc/haproxy/haproxy.cfg:
# this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy user haproxy group haproxy daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen mysql 192.168.0.111:3306 mode tcp balance roundrobin server r415-2 192.168.0.200:3306 check server r415-3 192.168.0.201:3306 check
J'aimerais avoir votre avis sur l'erreur ou comment le résoudre, merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33611
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mars 2025
7 836
3 avril 2012 à 19:40
3 avril 2012 à 19:40
[WARNING] 093/131348 (26457) : config : 'option httplog' not usable with proxy 'mysql' (needs 'mode http'). Falling back to 'option tcplog'.
Vu le message, j'ai l'impression que tu as une option (httplog) dans ta configuration qui ne marche pas, et où il devrait plutôt y avoir http (cf ligne option)
[ALERT] 093/131348 (26457) : Starting proxy mysql: cannot bind socket
Pour moi ton proxy mysql écoute sur le port 3306 (pour ne pas avoir à modifier le port sur lequel les clients se connectent). As-tu vérifier (1) que ton proxy mysql était installé (2) était lancé (3) écoutait sur le port 3306 ?
Du coup, si tu as un proxy mysql il faut corriger le port sur lequel le serveur mysql présent sur cette machine (s'il y en a un) écoute sur un autre port. Mais bon, j'ai l'impression que chez toi il s'agit de 3 machines différentes (192.168.0.111, 192.168.0.200, et 192.168.0.201) ? En tout cas, si sur la machine sur laquelle tu mets le proxy il y a déjà un serveur mysql, veille à ce que ce dernier écoute sur le port 3307 (en corrigeant au besoin /etc/mysql/my.cnf) et relance ce serveur mysql :
service mysql restart
Ensuite pour revenir à ton erreur, tu références dans ton fichier 3 couples (ip, port). Vu que la connexion échoue vers l'un des 3 (je dirais 192.168.0.111 au feeling), tu devrais tester depuis la machine sur laquelle tu configures /etc/haproxy/haproxy.cfg si tu parviens à te connecter avec un client mysql vers chacun de ces 3 serveurs (ou proxies) :
mysql -u root -p -h 192.168.0.111 -P 3306 mysql -u root -p -h 192.168.0.200 -P 3306 mysql -u root -p -h 192.168.0.201 -P 3306
Bonne chance
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
3 avril 2012 à 20:13
3 avril 2012 à 20:13
Oui la connexion se fait sur les trois ip. 192.168.0.111 c'est l'IP (geré par heatbeat et pacemaker) virtuelle qui redirige vers les deux machines réelle soit 192.168.0.200 et 192.168.0.201
Il me restait juste la répartition des charges en se connectant sur l'IP virtuelle... Pour suivre la logique du tutoriel j'ai installer haproxy (j'avais essayer mysql-proxy mais je l'ai enlever avec un apt-get remove mysql-proxy)
Pour l'erreur de http c'est réglé en commentant les options qui causait problème mais là reste le problème de port apparemment...
Si faut changer un port je préfèrais changer le port de haproxy, d'ailleurs je sais pas quel port il utilise...
Il me restait juste la répartition des charges en se connectant sur l'IP virtuelle... Pour suivre la logique du tutoriel j'ai installer haproxy (j'avais essayer mysql-proxy mais je l'ai enlever avec un apt-get remove mysql-proxy)
Pour l'erreur de http c'est réglé en commentant les options qui causait problème mais là reste le problème de port apparemment...
Si faut changer un port je préfèrais changer le port de haproxy, d'ailleurs je sais pas quel port il utilise...
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
Modifié par enyrix le 3/04/2012 à 20:23
Modifié par enyrix le 3/04/2012 à 20:23
Si je change la ligne pour
Mais on but c'est de pouvoir me connecter avec ce même ip (virtuelle) sur mysql avec un robin hood donc le but de haproxy... mais apparemment je comprend pas comment bien le configurer... et comment fonctionne exactement haproxy...
listen mysql 192.168.0.111:3307ça passe et ça ouvre le port :
Port Scanning host: 192.168.0.111 Open TCP Port: 3306 mysql Open TCP Port: 3307 opsession-prxy
Mais on but c'est de pouvoir me connecter avec ce même ip (virtuelle) sur mysql avec un robin hood donc le but de haproxy... mais apparemment je comprend pas comment bien le configurer... et comment fonctionne exactement haproxy...
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
Modifié par enyrix le 3/04/2012 à 21:07
Modifié par enyrix le 3/04/2012 à 21:07
Je ne suis pas sûr de ce que je doit mettre après le mot listen ... je crois que c'est le nom du service qui est ouvert sur l'ipvirtuelle que je spécifie... Une idée la dessus ?
Si je met listen mysql 192.168.0.111:3307
lorsque je tente de me connecter a mysql ça me dit:
J'ai essayer la commande indiqué mais sans succès.
Si je met listen mysql 192.168.0.111:3307
lorsque je tente de me connecter a mysql ça me dit:
Host '192.168.0.200' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
J'ai essayer la commande indiqué mais sans succès.
mamiemando
Messages postés
33611
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mars 2025
7 836
3 avril 2012 à 22:12
3 avril 2012 à 22:12
Aucune, jamais utilisé :-) Comme je t'ai dit, il faut déjà commencer par voir si tu arrives à ta connecter à tes différents serveur avec un bon vieux client mysql.
enyrix
Messages postés
144
Date d'inscription
vendredi 11 novembre 2011
Statut
Membre
Dernière intervention
7 avril 2021
8
13 avril 2012 à 19:09
13 avril 2012 à 19:09
Mon IP virtuelle était en conflit avec l'ip de la machine... J'ai résolue le problème installant le répartiteur de charge (haproxy) sur le serveur maître...