Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
J'ai installé PGPool II afin de faire de la HA, Répartition de charges et de la réplication en suivant ce tuto : http://www.synbioz.com/blog/postgresql_ … on_pgpool2
Et au final cela à l'air de fonctionné, même si je n'ai toujours pas compris comment ça se passe si mon node 2 tombe et que des modifications continue de s'effectué sur le node 1, une fois mon node 2 réparer comment re synchroniser les données ?
Mais mon autre problème c'est que je me suis connecté avec PGAdmin, j'arrive à créer des bases de données mais lorsque je veux supprimer la base, impossible !! Il me dit qu'une connexion est déjà en cours sur la base... Ce qui est vrai car en regardant dans les connexions active dans les processus j'ai bien cela : pgpool: postgres bddtest 10.1.10.12(60746) idle. Le truc c'est dans PGAdmin pour supprimer une base, il faut cliquez sur la base, mais si l'on clique on est connecté à la base donc il ne veut pas supprimé !
Le seul moyen que j'ai trouver c'est de faire un clic droit sur la base -> se déconnecter de la base (Croix rouge sur la base) puis de lancer la console et executé la commande : "drop database bddtest;"
Mais comment cela ce fait il ? Y a t-il un paramètre à modifier dans PGPool pour que cela soit possible ? Car je n'ai pas l'impression que lorsque je suis connecté en direct sur les nodes, cela le fait...
Merci d'avance pour votre réponse.
Hors ligne
Bonjour,
Il semblerait que cet article préconise la mise en place d'une réplication par rejeu des ordres SQL. C'est bien évidemment une très mauvaise idée, car dans ce cas la réplication a toutes les chances de ne pas être cohérentes, aucun moyen de resynchroniser les données tout en étant extrêmement lent.
Si vous souhaitez mettre en place de la haute disponibilité, je vous conseille de regarder du côté de pacemaker et des resource agent associés (https://github.com/dalibo/pgsql-resource-agent par exemple). Pour la répartition de charge, il n'y a pas non plus de solution magique. Si vous voulez vraiment gagner en performance, gérez 2 connexions dans votre appli (requêtes en écriture + requêtes en lecture seules ne pouvant pas voir des données en retard, et tout le reste), et utilisez un outil comme haproxy par dessus.
Julien.
https://rjuju.github.io/
Hors ligne
Merci pour votre réponse.
Du coup j'ai repris de zero ma configuration, j'ai donc installé 2VMs HA Proxy pour éviter d'avoir un Single Point Of Failure, avec heartbeat d'installé dessus afin d'avoir une IP virtuelle, puis j'ai ensuite installé 2 VMs PostgreSQL.
Mon HA Proxy les vois bien comme en témoigne l'écran ci-dessous :
Maintenant là où je coince un peu c'est pour la réplication, ce que j'aimerais c'est pouvoir faire de la réplication Master/Master et pouvoir me connecter via PGadmin à PostgreSQL en passant par mon IP Virtuelle, je me connecte donc sur un des serveurs aléatoirement et si une modification est faite sur l'un (imaginons création d'une base de donnée), elle est automatiquement répliqué sur le second comme ça si un serveur tombe le second prend le relais...
Mais d'après ce que j'ai pu lire c'est impossible nativement avec PostgreSQL donc je suis un peu perdu...
Je suis tombé sur ce tuto :
http://www.y-note.cm/postgresql-replica … synchrone/
Il m'a l'air intéressant pour faire de la réplication mais j'ai pas l'impression que c'est compatible avec mon HA Proxy qui redirigera les requêtes en Roundrobin sur les serveurs, si le second est en lecture seule et qu'une requête d'écriture est envoyé sur celui ci, ça ne fonctionnera pas ! Puis si le Master tombe, il faudra intervenir manuellement pour passer le Slave en Master, j'aimerais bien que cela devienne automatique...
Si vous avez des conseils ou si je suis complètement à coté de la plaque n'hésitez pas à me le dire... Merci
Hors ligne
Il faut distinguer la balance de charge de la haute disponibilité, ce sont vraiment deux sujets bien distincts.
Haproxy ne gère que la balance de charge. Il faut donc y faire passer uniquement les requête en lecture seule et qui peuvent voir des données "en retard" (avec un serveur secondaire, les données ne seront jamais aussi à jour sur sur un serveur primaire). Tout le reste doit passer en direct sur le serveur primaire (ou un pooler de connexion au besoin).
Pour gérer le serveur primaire, avec notamment des bascule automatiques, vous avez pacemaker avec notamment le resource agent fourni plus haut, ainsi que le resource agent ipAddr2 standard qui permet d'attacher une vIP sur le serveur primaire. Le sujet de la haute disponibilité est suffisamment complexe et sensible pour qu'il mérite que vous y le temps nécessaire à comprendre toutes les problématiques etc. Une solution de haute disponibilité mal maîtrisée est toujours pire que pas de solution de haute disponibilité.
Si votre besoin se limite à deux nœuds, vous pouvez également regarder du côté de http://www.repmgr.org/ .
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1