PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/09/2010 08:55:07

TTinvent
Membre

Load balancing Postgres!

Bonjour,
Je suis en quatrième année de formation d'ingénieur en informatique, et ben comme à chaque fin de notre année universitaire on devra établir un projet de trois mois et comme thème on nous a demandé de trouver une solution open source pour load balancing de SGBD comme postgres.Et ben je voudrais savoir si il y a un tutoriel ou quelqu'un qui a déjà traité de tel thème ou équivalent!
Merci d'avance!!!

Hors ligne

#2 24/09/2010 09:21:51

gleu
Administrateur

Re : Load balancing Postgres!

La seule solution de load balancing pour PostgreSQL, à ma connaissance, est pgpool-II. Deux articles pour commencer : http://www.dalibo.org/hs44_pgpool_le_pooler_multitache et http://www.dalibo.org/hs44_pgpoolii_la_ … s_requetes


Guillaume.

Hors ligne

#3 27/09/2010 07:39:34

TTinvent
Membre

Re : Load balancing Postgres!

Merci beaucoup.Je vais consulter ce que vous m'avez indiquer et en cas de besoin d'aide je vais vous signaler.
Merci

Hors ligne

#4 29/09/2010 10:22:21

TTinvent
Membre

Re : Load balancing Postgres!

Bonjour,
j'ai bien lu les deux articles que vous m'avez indiqué et vraiment cela répond parfaitement à nos besoins et je vais me procéder à la réalisation maintenant mais j'ai une petite question a propos de la première config; Est-ce que sur les 2 machines debian1(maitre) et debian2(esclave) on installe et configure postgres et pg-pool ou seulement sur le maître?
Merci

Hors ligne

#5 29/09/2010 18:41:04

gleu
Administrateur

Re : Load balancing Postgres!

PostgreSQL doit être installé sur les deux postes. pgPool-II s'installe indistinctement sur le maître, sur l'esclave, voire sur une autre machine. D'ailleurs, généralement on préférera le mettre sur une autre machine.


Guillaume.

Hors ligne

#6 01/10/2010 08:01:01

TTinvent
Membre

Re : Load balancing Postgres!

Et ben qu-est ce qui différencie alors qui est le maître et les esclaves, parce que j'ai pensé quand j'ai lu la config de réplication et la répartition des charges que seul sur le maître qu'on config pgpool.conf?ou partout sur les noeuds qu'on config le réplication et la répartition de poids.
Merci

Hors ligne

#7 01/10/2010 08:47:37

Marc Cousin
Membre

Re : Load balancing Postgres!

On peut très bien avoir pgpool sur tous les noeuds. De toutes façons, pgpool ne répondra que quand on s'adressera à lui (il n'a pas de répartiteur de charge devant lui, c'est lui le répartiteur de charge).

L'intérêt d'avoir pgpool déjà démarré sur plusieurs machines, c'est simplement de pouvoir basculer sur un pgpool de secours, déjà prêt, si la machine hébergeant le pgpool de départ a un incident. On peut aussi imaginer faire de la répartition sur plusieurs pgpool, si un seul n'était pas capable de tenir la charge.


Marc.

Hors ligne

#8 05/10/2010 16:51:01

TTinvent
Membre

Re : Load balancing Postgres!

Je suis maintenant au coeur de la realisation et tout se passe bien jusau'au premier lancememt de /opt/pgpool/bin/./pgpool -n auand je valide il m'affiche l'erreur suivante : ERROR : pid 3378 : bind(0.0.0.0:postgresql) failed. reason: addres already in use
Et j'ai pense que c'est une confusion de port parceque j'ai deja change le port 9999  sur pgpool.conf en 5432 comme vous avez indique et ce qui m'a fait pense que il y a un conflit de port ou je sais pas!
Merci

Hors ligne

#9 05/10/2010 18:09:42

gleu
Administrateur

Re : Load balancing Postgres!

Si vous avez installé pgpool et PostgreSQL sur le même serveur, pgpool et PostgreSQL ne peuvent pas utiliser tous les deux le port 5432. Le plus simple est de mettre le 5432 sur pgpool et un autre (par exemple 5433) sur PostgreSQL.


Guillaume.

Hors ligne

#10 06/10/2010 09:11:28

TTinvent
Membre

Re : Load balancing Postgres!

ca demarre maintenant pgppol, j'ai change le port de postgres en 5433 et quand j'essai de se connecter sur psql -p 5432 b1 (b1 la base d'essai) il ne repond plus et il est toujours coince la sans afficher d'erreur!

Hors ligne

#11 06/10/2010 09:14:44

TTinvent
Membre

Re : Load balancing Postgres!

dans votre article vous avez fait psql -p 9999 b1 et si je me trompe pas 9999 c'est le num de port de pgpool n'est ce pas?C'est pour cela que j'ai mis le mien 5432 parceaue je l'ai deja change le port 9999 en  5432 pendant la config. Merci

Hors ligne

#12 06/10/2010 10:06:10

gleu
Administrateur

Re : Load balancing Postgres!

Si vous voulez que pgpool réponde sur le 5432 et que PostgreSQL réponde sur le 5433, il faut configurer pgpool pour qu'il écoute sur le 5432 et se connecte à PostgreSQL sur le 5433 (donc deux configurations à faire dans le fichier de config de pgpool). Ensuite il faut modifier le postgresql.conf pour que PostgreSQL écoute sur le port 5433.


Guillaume.

Hors ligne

#13 06/10/2010 10:14:07

TTinvent
Membre

Re : Load balancing Postgres!

Je viens de recevoir l'erreur suivante psql : server closed the connection unexpectidly This probably mee server terminatted abnormally before or while processing the request!

Hors ligne

#14 06/10/2010 11:04:42

gleu
Administrateur

Re : Load balancing Postgres!

Certainement un problème de configuration quelque part mais difficile de le dire à partir de ce message d'erreur.


Guillaume.

Hors ligne

#15 07/10/2010 07:57:42

TTinvent
Membre

Re : Load balancing Postgres!

si je comprend bien dans votre article vous n'avez pas change le port par defaut 9999 de pgpool parceque vous avez fait <psql -p 9999 b1> ?A ce moment la dans la config du premier nosud qu-est ce qu'on met backend_port=9999 ou 5432 parceque je commece a confondre maintenant, au debut vous avez indique qu'il faut change le port de pgppol en 5432 et en bas je vois encore le psql -p 9999.

Hors ligne

#16 07/10/2010 15:34:17

TTinvent
Membre

Re : Load balancing Postgres!

J'ai bien verifie tous les config et ca marche maintenat comme vous avez explique.On va proceder maintenat a la replication.Merci

Hors ligne

#17 07/10/2010 17:11:44

gleu
Administrateur

Re : Load balancing Postgres!

Peu importe ce que vous mettez. Il faut surtout respecter cette règle : dans le pgpool.conf port doit être différent de backend_portX.


Guillaume.

Hors ligne

#18 08/10/2010 08:27:56

TTinvent
Membre

Re : Load balancing Postgres!

Merci.Effectivement c'est que j'ai change dans la config de pgpool le port de backend_port je l'ai mis 5433 qui est celle de postgres et ca marche bien!

Hors ligne

#19 08/10/2010 08:47:22

TTinvent
Membre

Re : Load balancing Postgres!

Est-ce qu'il est obligatoire de copier pg_hba.conf en pool_hba.conf.Ensuite ou et-ce qu'on va mettre pool_hba.conf dans /etc/postgres/8.3/main/ comme pg_hba.conf ou on le copie dans /opt/pgpool-II-2.2.4/etc?Expliquez davantage!Merci

Dernière modification par TTinvent (08/10/2010 08:52:01)

Hors ligne

#20 08/10/2010 10:50:44

TTinvent
Membre

Re : Load balancing Postgres!

Desole si je reviens tres souvent mais je fais la replication a ce moment et j'ai bien suivi la config et ca ne marche pas encore et j'ai relu bien le doc et dans l'artcicle pg-pool multitache vous avez indique que c'est pas compatible avec la connexion SSlL, en fait c'est quoi SSL parceque au moment ou ca n'a pas fonctionne j'ai verifie de se connecter sur la base distante et ca marche mais j'ai vu en bas de l'aide pour se deconnecter il y a : " Connexion SSL(chiffrement : DHE-RSA-AES256-SHA, bits 256) " et ben j'ai bien peur que ma machine utilise cette connexion SSL qui l'empeche de fonctionner ou je me trompe!Et comment on desactive ce SSL si c'est bien le cas!
Merci

Dernière modification par TTinvent (08/10/2010 13:22:33)

Hors ligne

#21 08/10/2010 14:20:55

gleu
Administrateur

Re : Load balancing Postgres!

c'est que j'ai change dans la config de pgpool le port de backend_port je l'ai mis 5433 qui est celle de postgres et ca marche bien!

C'est exactement ce qu'il faut faire.

Est-ce qu'il est obligatoire de copier pg_hba.conf en pool_hba.conf.

Non.

Ensuite ou et-ce qu'on va mettre pool_hba.conf dans /etc/postgres/8.3/main/ comme pg_hba.conf ou on le copie dans /opt/pgpool-II-2.2.4/etc?

C'est la config de pgpool, pas celle de PostgreSQL. Donc, si j'interprète bien, dans /opt/pgpool-II-2.2.4/etc.

vous avez indique que c'est pas compatible avec la connexion SSlL

Les versions antérieures à la 2.3 ne savent pas gérer le SSL. Donc vous ne pourrez pas avoir une connexion chiffrée.

j'ai vu en bas de l'aide pour se deconnecter il y a : " Connexion SSL(chiffrement : DHE-RSA-AES256-SHA, bits 256) "

Parce que le SSL est activé par défaut sur certaines distributions Linux. Il vous suffit de le désactiver (paramètre ssl, dans le fichier postgresql.conf).


Guillaume.

Hors ligne

#22 09/10/2010 11:00:40

TTinvent
Membre

Re : Load balancing Postgres!

Merci. J'ai deja desactive le SSL de tous les deux machines dans postgres.conf et je le vois plus quand jconnecte a distance mais ca ne marche pas encore la replication.
1- Et aujourdhui j'ai remarque qu' on peut pas se connecter en meme temps avec une meme base, l'autre est toujour mis en attente alors qu'on a configure max_pool = 4 ou c'est le num_init_children parceque je l'ai laisse =1 au lieu de32 par defaut.
2 - Vous savez depuis le debut de ce projet j'ai fait la config en parallele sur les deux machines et je doute que c'est ca qui bloque la replicqtion peut-etre parceque je repose la question qui sera le maitre et qui sera l'esclave car dans la config des noeuds l'adresse IP de l'autre est le noeud1 de l'une et inversement et en plus j'ai bien peur egalement au niveau de numero de port parceque sur les deux machines pgpool utilise 5432 et postgres 5433 ou ca n'a rien avoir avec.
Merci

Hors ligne

#23 09/10/2010 18:02:24

gleu
Administrateur

Re : Load balancing Postgres!

Pour le 1, si vous mettez 1 au num_init_children, vous ne pourrez jamais être plus que un à vous connecter via pgpool.

Pour le 2, j'ai du mal à comprendre ce que vous dites.


Guillaume.

Hors ligne

#24 11/10/2010 08:31:39

TTinvent
Membre

Re : Load balancing Postgres!

Je veux dire que j'ai fait toutes les config indistinctement en parallele sur deux machines c'est a dire touutes les deux ont les meme numero de port, meme config koi, pour pgpool et postgres, et maintenant je fait la config de la replication et comme ca marche pas je me demande qui est le maitre et qui est l'esclave parceque :
1- sur debian08 (nom de la premiere machine d'adresse IP 172.16.1.45) j'ai comme suit :
backend_hostname0 = 'localhost'
backend_port0 = 5433 (port postgres)
backend_hostname1 = 'debian09' (nom de la deuxieme machine d'IP 172.16.1.146)
backend_port1 = 5433 
2- sur debian 09 j'ai la meme config mais au lieu de debian09 le hostname debian08 mais utilise le meme port.
Et ben je doute que c'est au niveau de cela qui bloque la replication.Merci

Hors ligne

#25 11/10/2010 09:05:00

TTinvent
Membre

Re : Load balancing Postgres!

Je vois maintenant que les deux machines ne se voient pas sur leur noms seulement par l'IP : quand je fais ping debian08 il affiche unknown host debian08 et je vois qu'il ne trouve backend_hostname et je crois que ce genre de choses a besoin d'un serveur DNS ou qu-est-ce que vous proposez?En plus on ne peut pas faire psql -h debian08 il affiche could not translate hostname "debian08" to address : nom ou adresse inconnue.
Merci

Hors ligne

Pied de page des forums