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/