Playboy slot reviewhttp://playboyslotreview.com/

1st European collaborative IT BtoB webmagazine

La haute disponibilité des bases de données avec PostgreSQL

publié le mardi 22/07/2014

Beaucoup d’entreprises ont
aujourd’hui des contraintes de haute disponibilité. Que ce soit dans le secteur
bancaire, financier, industriel ou e-commerce, les services proposés aux clients
doivent être disponibles 24h/24 et 7j/7 sans interruption.

 

Tous les grands éditeurs, comme
Oracle, Microsoft ou IBM, proposent de telles solutions. Si les produits
proposés par ces géants de l’informatique sont performants et éprouvés, il faut
prévoir d’investir plusieurs centaines de milliers (voire plusieurs millions)
d’euros pour se les offrir.

 

Or, des solutions toutes aussi
performantes et fiables existent dans le monde du libre. Certains  spécialistes
des bases de données PostgreSQL proposent désormais d’utiliser l’une
des meilleures solutions existante autour de PostgreSQL : Pgpool II.

 

La haute disponibilité facile et gratuite

Pgpool II est un middleware qui
se place entre les serveurs PostgreSQL et les clients. C’est un outil open source que l’on peut utiliser
gratuitement et sans aucune restriction. Son installation est simple et l’outil
complet pèse moins de 8 Mo.

 

Il offre de nombreuses
fonctionnalités :

 

Pooling de connexions

Pgpool II pré-connecte les
sessions dans les bases PostgreSQL et ne les déconnecte jamais. Elles sont donc
réutilisées dès qu'une nouvelle demande de connexion arrive. On élimine le coût
de la reconnexion ce qui permet d’augmenter les performances globales des
applications.

 

Répartition de charge (load
balancing)

Pgpool organise la distribution des requêtes Select entre tous les
serveurs disponibles, ce qui améliore les performances générales du système.
Les performances en lecture s'améliorent proportionnellement au nombre de
serveurs PostgreSQL et au niveau de disponibilité proposé par votre hébergeur
de base de données.

 

Limitation des connexions
excédentaires

PostgreSQL interdit de dépasser un certain nombre de connexions
simultanées (grâce au paramètre max_connections). Au-delà de ce nombre les connexions
sont impossibles et le client reçoit alors un message d’erreur. La solution
immédiate est d’augmenter la valeur de ce paramètre mais cela implique une
consommation plus importante voire excessive des ressources du serveur. Avec
Pgpool toutes les connexions au-delà de max_connections seront mises dans une
file d'attente sans générer d’erreur pour le client.

 

Requêtes parallélisées

Les données peuvent être distribuées dans plusieurs clusters PostgreSQL.
Les requêtes SQL iront donc chercher les données sur plusieurs serveurs, ce qui
améliore de manière importante les performances surtout si les données
demandées par la requête sont volumineuses.

 

Réplication

Voici la principale
fonctionnalité de Pgpool II. Il s’agit de créer une sauvegarde continue sur
d'autres instances PostgreSQL, afin que le service puisse continuer sans
interruption si l'une de ses instances était défaillante. Pgpool propose 2
modes de réplication : le mode réplication et le mode master/slave.

 

Mode réplication

La réplication est gérée par Pgpool :
elle est symétrique et synchrone donc multi-maitres. Les serveurs PostgreSQL
sont identiques et tous accessibles en lecture/écriture. Pgpool envoie toutes
les requêtes SQL aux 2 serveurs (ou plus) en même temps. La possibilité d’avoir
plusieurs maîtres a un coût : des performances en écriture globales
dégradées d’environ 30% et des risques d’erreur dans les séquences, les fonctions
d’horodatage et de random (décalage possible).

 

Mode master/slave

C’est un mode de réplication
asymétrique et asynchrone géré par PostgreSQL (ou tout autre outil de
réplication externe). Les serveurs PostgreSQL sont identiques (streaming
replication ou hot standby) mais seul le master est accessible en  lecture/écriture (les slaves sont en lecture
seule). Pgpool envoie les requêtes de modification (update, create, insert, etc…)
au master seulement et fait du load balancing sur tous les nœuds pour les
requêtes SELECT.

 

Nous conseillons ce mode car la
réplication PostgreSQL a fait ses preuves surtout depuis la version 9.3. Il est
donc préférable de laisser PostgreSQL faire ce qu’il sait bien faire plutôt que
de déléguer cette tâche à Pgpool.

 

La haute disponibilité sans modifier le code de vos applications

Inutile de modifier le code de
vos applications. Il suffit d’indiquer à votre application de se connecter au
serveur qui héberge Pgpool et celui-ci redirigera automatiquement les
connexions vers les serveurs PostgreSQL.

 

Evidemment si on veut encore plus
de sécurité et de disponibilité, il faut prévoir un Pgpool de secours en cas de
défaillance du premier serveur Pgpool. Un mécanisme interne à Pgpool assure la
bascule automatique de l’un vers l’autre : watchdog.

 

Une bascule automatique en cas d’incident : le failover

Lorsque le serveur master
s’arrête, Pgpool le détecte et déclenche automatiquement la procédure de
failover (c’est-à-dire que le serveur slave devient le serveur master). Il n’y
a aucune incidence pour les applications puisque Pgpool redirige
automatiquement les connexions sur le nouveau master. Le failover ne nécessite
aucune intervention humaine pendant l’incident.

 

Ajouter des esclaves ou reconstruire un système répliqué sans
interruption de service : c’est possible grâce à Online Recovery

Online recovery est un mécanisme
qui permet de manière transparente de créer un nouveau slave ou de recréer un
slave défaillant sans perte de données, sans interruption de service et sans
arrêter Pgpool. Online recovery permet également de faire des montées de
version des moteurs PostgreSQL de manière transparente et sans interruption de
service.

 

A tout moment Pgpool contrôle la disponibilité de vos données avec
Health check

Pgpool essaye périodiquement de
se connecter au serveur master PostgreSQL. S’il ne détecte pas le processus
principal (postmaster), il déclenche le failover. Health check n’est pas
sensible aux coupures réseau (sauf si un délai configuré à l’avance est
dépassé), ce qui empêche un failover intempestif. Health check détecte
automatiquement les décalages pendant la réplication. S’il y a un décalage, Pgpool
redirige toutes les requêtes SELECT sur le master jusqu’à ce que le retard soit
rattrapé (load balancing à l’issue).

 

Que demander de plus ?

Pgpool II est donc une solution
complète pour mettre en place un système de haute disponibilité
24h/24 et 7j/7. Facile à mettre en place et couplé
à une architecture Linux/PostgreSQL, il vous assurera une sécurité et une
grande disponibilité de vos données. Vos clients n’auront pas à subir les
incidents de production ou les périodes plus ou moins longues de maintenance.
Et tout cela à moindre coût comparé aux offres des mastodontes du marché.

 

Qu’attendez-vous ?

 

Sébastien Ruiz, consultant
bases de données chez Ingensi

Autres articles sur le même sujet :

Mots clefs :

Trouver un partenaire dans votre région

tory burch glasses https://eyeweardock.com/shop/brand/tory-burch/