Last modified: Sun Jan 30 09:14:28 JST 2011
Bienvenue sur la page de pgpool-II |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
pgpool-IIpgpool-II est un middleware qui se place entre les serveurs PostgreSQL et les clients de ces derniers. Voici ses différentes fonctionalités:
pgpool-II maintient les connexions établies aux serveurs PostgreSQL et les réutilise dès qu'une nouvelle connexion partageant les mêmes propriétés (c'est-à -dire même utilisateur, même base de données et même version de protocole) arrive. Il réduit ainsi le coût de la connexion et améliore les performances générales du système. pgpool-II peut gérer plusieurs serveurs PostgreSQL. En activant le mode réplication, il devient possible de créer une sauvegarde continue sur d'autres instances PostgreSQL, afin que le service puisse continuer sans interruption si l'une de ces instances était défaillante. Si une base de données est répliquée, exécuter une requête en SELECT sur n'importe lequel de ceux-ci retournera le même résultat. pgpool-II profite ainsi avantageusement de la réplication pour réduire la charge sur chacun des serveurs PostgreSQL. Il parvient à cela en distribuant les requêtes SELECT entre tous les serveurs disponibles, ce qui qui améliore les performances générales du système. Dans un scénario idéal, les performances en lecture s'améliorent proportionnellement au nombre de serveurs PostgreSQL. La répartition de charge avec pgpool-II fonctionne au mieux dans un scénario où il y a beaucoup d'utilisateurs qui exécutent beaucoup de requêtes en lecture au même moment. Dans PostgreSQL, il y a une limite maximum du nombre de connexions concurrentes au serveur (NDT: paramètre max_connections), et toutes les nouvelles connexions sont rejettées une fois que ce nombre est atteint. Augmenter ce nombre est possible mais accroît la consommation de ressources par le serveur et a un impact négatif sur les performances générales du système. Bien que pgpool-II ait aussi une limite sur le nombre de connexions maximum, il va mettre toute connexion excédentaire dans une file d'attente au lieu de retourner immédiatement une erreur. En utilisant la fonctionalité des requêtes parallèlisées, les données peuvent être réparties sur plusieurs serveurs afin que les requêtes puissent être exécutées sur tous les serveurs à la fois, en réduisant ainsi le temps d'exécution global de la requête. Cette fonctionalité donne les meilleurs résultats lorsqu'on cherche à extraire un très grand ensemble de données. pgpool-II utilise le même protocole que le serveur et les clients PostgreSQL, et relaie les messages entre les deux. Ainsi, une application cliente va prendre pgpool-II pour le serveur, et ce dernier va voir pgpool-II comme une application cliente. Puisque pgpool-II est complètement transparent, il peut-être utilisé pour une application sans pratiquement rien changer de son code source. Il y a cependant quelques restrictions à l'utilisation du SQL via pgpool-II. Veuillez vous reporter à la section Restrictions pour plus de détails. Plates-formes supportéespgpool-II fonctionne sous Linux, Solaris, FreeBSD et la plupart des architectures UNIX. Windows n'est pas supporté. Les versions 6.4 et ultérieures de PostgreSQL sont supportées. Cependant, pour utiliser la fonctionalité de requêtage en parallèle, vous devez avoir un serveur en version 7.4 ou supérieure. Si vous utilisez PostgreSQL en version 7.3 ou inférieure, certaines fonctionnalités de pgpool-II ne seront pas disponibles. Cependant, vous ne devriez pas utiliser une si vieille version de toute façons. Vous devez aussi être certain que vos serveurs PostgreSQL sont tous dans la même version majeure. De plus, les architectures matérielles et logicielles (systèmes d'exploitation) doivent-être identiques si vous voulez utiliser la technologie « online recovery ». Installation de pgpool-IIpgpool-II est téléchargeable sur la page de développement de pgpool. Plusieurs packages sont aussi fournis pour diverses plates-formes incluant CentOS, RedHat Enterprise Linux, Fedora et Debian. Le code source de pgpool-II est téléchargeable sur la page de développement de pgpool. Pour installer pgpool-II depuis son code source, vous aurez besoin de gcc, en version 2.9 ou supérieure, et de GNU make. pgpool-II utilisant la bibliothèque libpq de PostgreSQL, celle-ci doit aussi être installée ainsi que les fichiers d'en-tête sur la machine utilisée pour compiler pgpool-II. Si vous souhaitez activer le support d'OpenSSL dans pgpool-II, il vous faudra aussi avoir cette bibliothèque ainsi que les fichiers d'en-tête relatifs installés sur la machine de compilation.
Configuration de pgpool-IILes fichiers de configuration par défaut de pgpool-II sont
Configuration de
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fonction/Mode | Raw Mode (*3) | Mode réplication | Mode maître/esclave | Mode de requêtage en parallèle |
|---|---|---|---|---|
| Pooling de connexions | X | O | O | O |
| Réplication | X | O | X | (*1) |
| Répartition de charge | X | O | O | (*1) |
| Failover | O | O | O | X |
| Online recovery | X | 0 | (*2) | X |
| Requêtage en parallèle | X | X | X | O |
| Nombre de serveurs requis | 1 ou plus | 2 ou plus | 2 ou plus | 2 ou plus |
| Base de donnée système requise? | non | non | non | oui |
pcp.confUne interface de contrôle est fournie avec pgpool-II et permet Ã
l'administrateur de vérifier l'état de pgpool-II et d'arrêter les processus
de pgpool-II Ã distance. pcp.conf est le fichier contenant
la définition des utilisateurs et de leurs mots de passe pour accéder
à cette interface. Tous les modes d'utilisation de pgpool-II nécessitent
que le fichier pcp.conf soit renseigné. Un fichier d'exemple
$prefix/etc/pcp.conf.sample est créé lors de l'installation
de pgpool-II. Renommez ce fichier en pcp.conf, ajoutez-y votre
nom d'utilisateur ainsi que votre mot de passe.
cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf
Une ligne vide ou commençant par un dièse (#) est traitée comme un
commentaire et sera ignorée. Un nom d'utilisateur et son mot de passe
doivent être écrits sur une seule ligne et respecter le format suivant :
nom_d_utilisateur:[mot de passe crypté en md5]
Le [mot de passe crypté en md5] peut être obtenu avec la
commande $prefix/bin/pg_md5.
pg_md5 -p password: <votre mot de passe>
ou
./pg_md5 foo acbd18db4cc2f85cedef654fccc4a4d8
Le fichier pcp.conf doit être lisible par l'utilisateur qui
exécute pgpool-II.
pgpool.confComme cela a déjà été expliqué, chaque mode de pgpool-II a ses propres
paramètres de configuration dans le fichier pgpool.conf. Un fichier
d'exemple $prefix/etc/pgpool.conf.sample est créé lors de
l'installation de pgpool-II. Renommez ce fichier en pgpool.conf
et éditez son contenu.
cp $prefix/etc/pgpool.conf.sample $prefix/etc/pgpool.conf
Toute ligne vide ou commençant par "#" sera traitée comme un commentaire et sera donc ignorée.
Spécifie le nom de la machine ou son adresse IP, sur laquelle
pgpool-II acceptera les connexions TCP/IP. '*' accepte
toutes les connexions. '' empêchera toute connexion
TCP/IP. La valeur par défaut est 'localhost'. Les connexions
via les sockets UNIX sont toujours acceptées. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Spécifie le numéro de port sur lequel pgpool-II écoute les
connexions. La valeur par défaut est 9999. Ce paramètre
ne peut être modifié qu'au démarrage du serveur.
Répertoire dans lequel sera créé le socket UNIX de pgpool-II
pour les connexions entrantes. La valeur par défaut est
'/tmp'. Faites attention au fait que ce socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
Numéro de port sur lequel le processus PCP accepte les connexions.
La valeur par défaut est 9898. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Chemin du répertoire UNIX où le socket UNIX acceptant les connexions
pour les commandes PCP est créé. La valeur par défaut est
'/tmp'. Faites attention au fait que cet socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
À NE PLUS UTILISER
Ce paramètre n'est présent que pour garantir la cohérence avec la
politique par défaut de la bibliothèque libpq. Reportez-vous à la définition du
paramètre backend_hostname pour adapter votre configuration.
Ce paramètre permettait de définir le répertoire UNIX servant au serveur PostgreSQL.
Délai maximum en secondes pour l'établissement d'une connexion PCP. Si un client ne répond plus au bout de cette valeur en secondes, le processus PCP ferme la connexion avec le client. La valeur par défaut est de 10 secondes. 0 signifie que la vérification du délai est désactivée. Ce paramètre est pris en compte lors du rechargement des fichiers de configuration.
Nombre de processus pré-forkés de pgpool-II. La valeur par défaut
est de 32. num_init_children est aussi la limite du nombre
de connexions clientes concurrentes à pgpool-II. Si plus de
num_init_children clients essaient de se connecter Ã
pgpool-II, ceux-ci sont bloqués (mais pas rejettés), jusqu'à ce qu'une
connexion à l'un des processus de pgpool-II soit fermé. On peut avoir
ansi jusqu'Ã deux fois num_init_children clients
dans la queue de connexion.
Quelques précisions et astuces :
max_connections - superuser_reserved_connectionsPour résumer, max_pool,num_init_children,
max_connections et
superuser_reserved_connections doivent satisfaire
la formule suivante :
max_pool*num_init_children <= (max_connections - superuser_reserved_connections)
max_pool*num_init_children*2 <= (max_connections - superuser_reserved_connections)
Durée de vie en secondes d'un processus fils de pgpool-II. Lorsqu'un
processus fils est sans activité depuis ce nombre de secondes, il se
termine et un nouveau processus fils est créé. Ce paramètre est une
mesure pour prévenir tout problème de mémoire et autres erreurs
inattendues. La valeur par défaut est 300 (5 minutes). Cette
fonctionalité est désactivée si cette option a une valeur de 0. Notez
que cela ne s'applique qu'aux processus qui n'ont
pas encore été utilisés ou qui n'ont pas encore accepté de connexions.
Vous devez recharger le fichier de configuration pgpool.conf
si vous changez cette valeur.
Un processus fils de pgpool-II sera terminé après avoir accepté ce
nombre de connexions clientes. Ce paramètre est
utile sur un serveur à ce point chargé que ni
child_life_time, ni connection_life_time
ne sont déclenchés. Vous devez recharger pgpool-II si vous
changez cette valeur.
Déconnecte un client s'il est resté inactif pendant ce nombre de secondes
après que la dernière requête ne se soit terminée. Ceci est utile pour
empêcher qu'un processus fils de pgpool-II ne soit occupé par un
client inactif ou une connexion TCP/IP rompue entre le client et
pgpool-II. La valeur par défaut de client_idle_limit est
de 0, ce qui signifie que cette fonctionalité est désactivée. Ce paramètre
est ignoré dans la seconde phase d'un online recovery. Vous aurez besoin
de recharger pgpool-II si vous modifiez client_idle_limit.
Spécifie le délai maximum en secondes pour terminer une authentification. 0 désactive cette fonctionnalité. Vous aurez besoin de redémarrer pgpool-II si vous changez cette valeur.
Répertoire utilisé pour les logs. pgpool_status
est écrit dans ce répertoire.
pgpool-II utilise plusieurs méthodes pour écrire les messages du serveur. Cela inclut stderr et syslog. La valeur par défaut est d'envoyer les messages à stderr.
Note: vous aurez besoin de modifier la configuration du serveur syslog de votre système pour que l'écriture des messages vers syslog fonctionne. pgpool-II peut envoyer les traces à syslog en utilisant les niveaux LOCAL0 à LOCAL7 (voir la documentation de syslog), mais la valeur par défaut de syslog sur la plupart des plates-formes ignorera de tels messages. Vous aurez donc besoin d'ajouter quelque-chose comme
local0.* /var/log/pgpool.log
au fichier de configuration de votre démon syslog pour le faire fonctionner.
Lorsque la sortie des messages vers syslog est configurée, ce paramètre détermine le niveau syslog à utiliser. Vous pouvez choisir toute valeur entre LOCAL0 et LOCAL7. La valeur par défaut est LOCAL0. Veillez à vous reporter à la documentation système au sujet de syslog.
Lorsque la sortie vers syslog est configurée, ce paramètre permet de déterminer le nom du programme utilisé pour identifier les messages de pgpool-II dans les traces enregistrées par syslog. La valeur par défaut est pgpool.
Chemin complet vers le fichier qui contient le numéro d'identifiant du processus pgpool. La valeur par défaut est "/var/run/pgpool/pgpool.pid". Vous aurez besoin de redémarrer pgpool-II pour changer cette valeur.
Ajoute un horodatage dans les traces lorsque cette valeur est à true. La valeur par défaut est true. Vous aurez besoin de recharger pgpool-II si vous changez cette valeur afin qu'elle soit prise en compte.
Cache les connexions à PostgreSQL lorsque cette valeur est configurée à true. La valeur par défaut est true.
pgpool-II essaie périodiquement de se connecter à PostgreSQL afin de détecter toute erreur sur les serveurs ou sur le réseau. Cette procédure de vérification d'erreurs est appelée « health check ». Si une erreur est détectée, pgpool-II essaie d'exécuter un failover ou une dégénération. Ce paramètre permet d'empêcher qu'un "health check" n'attende tron8.0 ou supérieur, l'installation des fonctions pgpool_regclass, utiles à pgpool-II, est fortement recommandée. Sans celles-ci, le support de tables homonymes mais figurant dans des schémas différents pourrait ne pas fonctionner correctement (pour les tables temporaires, il n'y a aucun problème).
cd pgpool-II-x.x.x/sql/pgpool-regclass make make install psql -f pgpool-regclass.sql template1
L'exécution du script pgpool-regclass.sql doit être faite sur toutes les bases qui sont accédées via pgpool-II. Vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Si vous utilisez PostgreSQL 9.0 ou supérieur avec le « streaming replication », vous aurez besoin d'installer la fonction pgpool_walrecrunning sur tous les serveurs PostgreSQL accedées par pgpool-II.
cd pgpool-II-x.x.x/sql/pgpool-walrecrunning make make install psql -f pgpool-walrecrunning.sql template1
L'exécution du script pgpool-walrecrunning.sql doit-être faite sur toutes les bases de données accedées par pgpool-II. Comme précedemment, vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Les fichiers de configuration par défaut de pgpool-II sont
/usr/local/etc/pgpool.conf et
/usr/local/etc/pcp.conf. Plusieurs modes de fonctionnement
sont disponibles sous pgpool-II. Chaque mode a des fonctionnalités
associées qui peuvent être activées ou désactivées, mais aussi configurées
pour contrôler leur comportement.
| Fonction/Mode | Raw Mode (*3) | Mode réplication | Mode maître/esclave | Mode de requêtage en parallèle |
|---|---|---|---|---|
| Pooling de connexions | X | O | O | O |
| Réplication | X | O | X | (*1) |
| Répartition de charge | X | O | O | (*1) |
| Failover | O | O | O | X |
| Online recovery | X | 0 | (*2) | X |
| Requêtage en parallèle | X | X | X | O |
| Nombre de serveurs requis | 1 ou plus | 2 ou plus | 2 ou plus | 2 ou plus |
| Base de donnée système requise? | non | non | non | oui |
pcp.confUne interface de contrôle est fournie avec pgpool-II et permet Ã
l'administrateur de vérifier l'état de pgpool-II et d'arrêter les processus
de pgpool-II Ã distance. pcp.conf est le fichier contenant
la définition des utilisateurs et de leurs mots de passe pour accéder
à cette interface. Tous les modes d'utilisation de pgpool-II nécessitent
que le fichier pcp.conf soit renseigné. Un fichier d'exemple
$prefix/etc/pcp.conf.sample est créé lors de l'installation
de pgpool-II. Renommez ce fichier en pcp.conf, ajoutez-y votre
nom d'utilisateur ainsi que votre mot de passe.
cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf
Une ligne vide ou commençant par un dièse (#) est traitée comme un
commentaire et sera ignorée. Un nom d'utilisateur et son mot de passe
doivent être écrits sur une seule ligne et respecter le format suivant :
nom_d_utilisateur:[mot de passe crypté en md5]
Le [mot de passe crypté en md5] peut être obtenu avec la
commande $prefix/bin/pg_md5.
pg_md5 -p password: <votre mot de passe>
ou
./pg_md5 foo acbd18db4cc2f85cedef654fccc4a4d8
Le fichier pcp.conf doit être lisible par l'utilisateur qui
exécute pgpool-II.
pgpool.confComme cela a déjà été expliqué, chaque mode de pgpool-II a ses propres
paramètres de configuration dans le fichier pgpool.conf. Un fichier
d'exemple $prefix/etc/pgpool.conf.sample est créé lors de
l'installation de pgpool-II. Renommez ce fichier en pgpool.conf
et éditez son contenu.
cp $prefix/etc/pgpool.conf.sample $prefix/etc/pgpool.conf
Toute ligne vide ou commençant par "#" sera traitée comme un commentaire et sera donc ignorée.
Spécifie le nom de la machine ou son adresse IP, sur laquelle
pgpool-II acceptera les connexions TCP/IP. '*' accepte
toutes les connexions. '' empêchera toute connexion
TCP/IP. La valeur par défaut est 'localhost'. Les connexions
via les sockets UNIX sont toujours acceptées. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Spécifie le numéro de port sur lequel pgpool-II écoute les
connexions. La valeur par défaut est 9999. Ce paramètre
ne peut être modifié qu'au démarrage du serveur.
Répertoire dans lequel sera créé le socket UNIX de pgpool-II
pour les connexions entrantes. La valeur par défaut est
'/tmp'. Faites attention au fait que ce socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
Numéro de port sur lequel le processus PCP accepte les connexions.
La valeur par défaut est 9898. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Chemin du répertoire UNIX où le socket UNIX acceptant les connexions
pour les commandes PCP est créé. La valeur par défaut est
'/tmp'. Faites attention au fait que cet socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
À NE PLUS UTILISER
Ce paramètre n'est présent que pour garantir la cohérence avec la
politique par défaut de la bibliothèque libpq. Reportez-vous à la définition du
paramètre backend_hostname pour adapter votre configuration.
Ce paramètre permettait de définir le répertoire UNIX servant au serveur PostgreSQL.
Délai maximum en secondes pour l'établissement d'une connexion PCP. Si un client ne répond plus au bout de cette valeur en secondes, le processus PCP ferme la connexion avec le client. La valeur par défaut est de 10 secondes. 0 signifie que la vérification du délai est désactivée. Ce paramètre est pris en compte lors du rechargement des fichiers de configuration.
Nombre de processus pré-forkés de pgpool-II. La valeur par défaut
est de 32. num_init_children est aussi la limite du nombre
de connexions clientes concurrentes à pgpool-II. Si plus de
num_init_children clients essaient de se connecter Ã
pgpool-II, ceux-ci sont bloqués (mais pas rejettés), jusqu'à ce qu'une
connexion à l'un des processus de pgpool-II soit fermé. On peut avoir
ansi jusqu'Ã deux fois num_init_children clients
dans la queue de connexion.
Quelques précisions et astuces :
max_connections - superuser_reserved_connectionsPour résumer, max_pool,num_init_children,
max_connections et
superuser_reserved_connections doivent satisfaire
la formule suivante :
max_pool*num_init_children <= (max_connections - superuser_reserved_connections)
max_pool*num_init_children*2 <= (max_connections - superuser_reserved_connections)
Durée de vie en secondes d'un processus fils de pgpool-II. Lorsqu'un
processus fils est sans activité depuis ce nombre de secondes, il se
termine et un nouveau processus fils est créé. Ce paramètre est une
mesure pour prévenir tout problème de mémoire et autres erreurs
inattendues. La valeur par défaut est 300 (5 minutes). Cette
fonctionalité est désactivée si cette option a une valeur de 0. Notez
que cela ne s'applique qu'aux processus qui n'ont
pas encore été utilisés ou qui n'ont pas encore accepté de connexions.
Vous devez recharger le fichier de configuration pgpool.conf
si vous changez cette valeur.
Un processus fils de pgpool-II sera terminé après avoir accepté ce
nombre de connexions clientes. Ce paramètre est
utile sur un serveur à ce point chargé que ni
child_life_time, ni connection_life_time
ne sont déclenchés. Vous devez recharger pgpool-II si vous
changez cette valeur.
Déconnecte un client s'il est resté inactif pendant ce nombre de secondes
après que la dernière requête ne se soit terminée. Ceci est utile pour
empêcher qu'un processus fils de pgpool-II ne soit occupé par un
client inactif ou une connexion TCP/IP rompue entre le client et
pgpool-II. La valeur par défaut de client_idle_limit est
de 0, ce qui signifie que cette fonctionalité est désactivée. Ce paramètre
est ignoré dans la seconde phase d'un online recovery. Vous aurez besoin
de recharger pgpool-II si vous modifiez client_idle_limit.
Spécifie le délai maximum en secondes pour terminer une authentification. 0 désactive cette fonctionnalité. Vous aurez besoin de redémarrer pgpool-II si vous changez cette valeur.
Répertoire utilisé pour les logs. pgpool_status
est écrit dans ce répertoire.
pgpool-II utilise plusieurs méthodes pour écrire les messages du serveur. Cela inclut stderr et syslog. La valeur par défaut est d'envoyer les messages à stderr.
Note: vous aurez besoin de modifier la configuration du serveur syslog de votre système pour que l'écriture des messages vers syslog fonctionne. pgpool-II peut envoyer les traces à syslog en utilisant les niveaux LOCAL0 à LOCAL7 (voir la documentation de syslog), mais la valeur par défaut de syslog sur la plupart des plates-formes ignorera de tels messages. Vous aurez donc besoin d'ajouter quelque-chose comme
local0.* /var/log/pgpool.log
au fichier de configuration de votre démon syslog pour le faire fonctionner.
Lorsque la sortie des messages vers syslog est configurée, ce paramètre détermine le niveau syslog à utiliser. Vous pouvez choisir toute valeur entre LOCAL0 et LOCAL7. La valeur par défaut est LOCAL0. Veillez à vous reporter à la documentation système au sujet de syslog.
Lorsque la sortie vers syslog est configurée, ce paramètre permet de déterminer le nom du programme utilisé pour identifier les messages de pgpool-II dans les traces enregistrées par syslog. La valeur par défaut est pgpool.
Chemin complet vers le fichier qui contient le numéro d'identifiant du processus pgpool. La valeur par défaut est "/var/run/pgpool/pgpool.pid". Vous aurez besoin de redémarrer pgpool-II pour changer cette valeur.
Ajoute un horodatage dans les traces lorsque cette valeur est à true. La valeur par défaut est true. Vous aurez besoin de recharger pgpool-II si vous changez cette valeur afin qu'elle soit prise en compte.
Cache les connexions à PostgreSQL lorsque cette valeur est configurée à true. La valeur par défaut est true.
pgpool-II essaie périodiquement de se connecter à PostgreSQL afin de détecter toute erreur sur les serveurs ou sur le réseau. Cette procédure de vérification d'erreurs est appelée « health check ». Si une erreur est détectée, pgpool-II essaie d'exécuter un failover ou une dégénération. Ce paramètre permet d'empêcher qu'un "health check" n'attende tron8.0 ou supérieur, l'installation des fonctions pgpool_regclass, utiles à pgpool-II, est fortement recommandée. Sans celles-ci, le support de tables homonymes mais figurant dans des schémas différents pourrait ne pas fonctionner correctement (pour les tables temporaires, il n'y a aucun problème).
cd pgpool-II-x.x.x/sql/pgpool-regclass make make install psql -f pgpool-regclass.sql template1
L'exécution du script pgpool-regclass.sql doit être faite sur toutes les bases qui sont accédées via pgpool-II. Vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Si vous utilisez PostgreSQL 9.0 ou supérieur avec le « streaming replication », vous aurez besoin d'installer la fonction pgpool_walrecrunning sur tous les serveurs PostgreSQL accedées par pgpool-II.
cd pgpool-II-x.x.x/sql/pgpool-walrecrunning make make install psql -f pgpool-walrecrunning.sql template1
L'exécution du script pgpool-walrecrunning.sql doit-être faite sur toutes les bases de données accedées par pgpool-II. Comme précedemment, vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Les fichiers de configuration par défaut de pgpool-II sont
/usr/local/etc/pgpool.conf et
/usr/local/etc/pcp.conf. Plusieurs modes de fonctionnement
sont disponibles sous pgpool-II. Chaque mode a des fonctionnalités
associées qui peuvent être activées ou désactivées, mais aussi configurées
pour contrôler leur comportement.
| Fonction/Mode | Raw Mode (*3) | Mode réplication | Mode maître/esclave | Mode de requêtage en parallèle |
|---|---|---|---|---|
| Pooling de connexions | X | O | O | O |
| Réplication | X | O | X | (*1) |
| Répartition de charge | X | O | O | (*1) |
| Failover | O | O | O | X |
| Online recovery | X | 0 | (*2) | X |
| Requêtage en parallèle | X | X | X | O |
| Nombre de serveurs requis | 1 ou plus | 2 ou plus | 2 ou plus | 2 ou plus |
| Base de donnée système requise? | non | non | non | oui |
pcp.confUne interface de contrôle est fournie avec pgpool-II et permet Ã
l'administrateur de vérifier l'état de pgpool-II et d'arrêter les processus
de pgpool-II Ã distance. pcp.conf est le fichier contenant
la définition des utilisateurs et de leurs mots de passe pour accéder
à cette interface. Tous les modes d'utilisation de pgpool-II nécessitent
que le fichier pcp.conf soit renseigné. Un fichier d'exemple
$prefix/etc/pcp.conf.sample est créé lors de l'installation
de pgpool-II. Renommez ce fichier en pcp.conf, ajoutez-y votre
nom d'utilisateur ainsi que votre mot de passe.
cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf
Une ligne vide ou commençant par un dièse (#) est traitée comme un
commentaire et sera ignorée. Un nom d'utilisateur et son mot de passe
doivent être écrits sur une seule ligne et respecter le format suivant :
nom_d_utilisateur:[mot de passe crypté en md5]
Le [mot de passe crypté en md5] peut être obtenu avec la
commande $prefix/bin/pg_md5.
pg_md5 -p password: <votre mot de passe>
ou
./pg_md5 foo acbd18db4cc2f85cedef654fccc4a4d8
Le fichier pcp.conf doit être lisible par l'utilisateur qui
exécute pgpool-II.
pgpool.confComme cela a déjà été expliqué, chaque mode de pgpool-II a ses propres
paramètres de configuration dans le fichier pgpool.conf. Un fichier
d'exemple $prefix/etc/pgpool.conf.sample est créé lors de
l'installation de pgpool-II. Renommez ce fichier en pgpool.conf
et éditez son contenu.
cp $prefix/etc/pgpool.conf.sample $prefix/etc/pgpool.conf
Toute ligne vide ou commençant par "#" sera traitée comme un commentaire et sera donc ignorée.
Spécifie le nom de la machine ou son adresse IP, sur laquelle
pgpool-II acceptera les connexions TCP/IP. '*' accepte
toutes les connexions. '' empêchera toute connexion
TCP/IP. La valeur par défaut est 'localhost'. Les connexions
via les sockets UNIX sont toujours acceptées. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Spécifie le numéro de port sur lequel pgpool-II écoute les
connexions. La valeur par défaut est 9999. Ce paramètre
ne peut être modifié qu'au démarrage du serveur.
Répertoire dans lequel sera créé le socket UNIX de pgpool-II
pour les connexions entrantes. La valeur par défaut est
'/tmp'. Faites attention au fait que ce socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
Numéro de port sur lequel le processus PCP accepte les connexions.
La valeur par défaut est 9898. Ce paramètre ne peut être
modifié qu'au démarrage du serveur.
Chemin du répertoire UNIX où le socket UNIX acceptant les connexions
pour les commandes PCP est créé. La valeur par défaut est
'/tmp'. Faites attention au fait que cet socket
pourrait être effacé par une tâche programmée en cron.
Aussi, nous vous recommandons de configurer cette valeur Ã
'/var/run' ou un répertoire de ce type. Ce paramètre ne
peut être modifié qu'au démarrage du serveur.
À NE PLUS UTILISER
Ce paramètre n'est présent que pour garantir la cohérence avec la
politique par défaut de la bibliothèque libpq. Reportez-vous à la définition du
paramètre backend_hostname pour adapter votre configuration.
Ce paramètre permettait de définir le répertoire UNIX servant au serveur PostgreSQL.
Délai maximum en secondes pour l'établissement d'une connexion PCP. Si un client ne répond plus au bout de cette valeur en secondes, le processus PCP ferme la connexion avec le client. La valeur par défaut est de 10 secondes. 0 signifie que la vérification du délai est désactivée. Ce paramètre est pris en compte lors du rechargement des fichiers de configuration.
Nombre de processus pré-forkés de pgpool-II. La valeur par défaut
est de 32. num_init_children est aussi la limite du nombre
de connexions clientes concurrentes à pgpool-II. Si plus de
num_init_children clients essaient de se connecter Ã
pgpool-II, ceux-ci sont bloqués (mais pas rejettés), jusqu'à ce qu'une
connexion à l'un des processus de pgpool-II soit fermé. On peut avoir
ansi jusqu'Ã deux fois num_init_children clients
dans la queue de connexion.
Quelques précisions et astuces :
max_connections - superuser_reserved_connectionsPour résumer, max_pool,num_init_children,
max_connections et
superuser_reserved_connections doivent satisfaire
la formule suivante :
max_pool*num_init_children <= (max_connections - superuser_reserved_connections)
max_pool*num_init_children*2 <= (max_connections - superuser_reserved_connections)
Durée de vie en secondes d'un processus fils de pgpool-II. Lorsqu'un
processus fils est sans activité depuis ce nombre de secondes, il se
termine et un nouveau processus fils est créé. Ce paramètre est une
mesure pour prévenir tout problème de mémoire et autres erreurs
inattendues. La valeur par défaut est 300 (5 minutes). Cette
fonctionalité est désactivée si cette option a une valeur de 0. Notez
que cela ne s'applique qu'aux processus qui n'ont
pas encore été utilisés ou qui n'ont pas encore accepté de connexions.
Vous devez recharger le fichier de configuration pgpool.conf
si vous changez cette valeur.
Un processus fils de pgpool-II sera terminé après avoir accepté ce
nombre de connexions clientes. Ce paramètre est
utile sur un serveur à ce point chargé que ni
child_life_time, ni connection_life_time
ne sont déclenchés. Vous devez recharger pgpool-II si vous
changez cette valeur.
Déconnecte un client s'il est resté inactif pendant ce nombre de secondes
après que la dernière requête ne se soit terminée. Ceci est utile pour
empêcher qu'un processus fils de pgpool-II ne soit occupé par un
client inactif ou une connexion TCP/IP rompue entre le client et
pgpool-II. La valeur par défaut de client_idle_limit est
de 0, ce qui signifie que cette fonctionalité est désactivée. Ce paramètre
est ignoré dans la seconde phase d'un online recovery. Vous aurez besoin
de recharger pgpool-II si vous modifiez client_idle_limit.
Spécifie le délai maximum en secondes pour terminer une authentification. 0 désactive cette fonctionnalité. Vous aurez besoin de redémarrer pgpool-II si vous changez cette valeur.
Répertoire utilisé pour les logs. pgpool_status
est écrit dans ce répertoire.
pgpool-II utilise plusieurs méthodes pour écrire les messages du serveur. Cela inclut stderr et syslog. La valeur par défaut est d'envoyer les messages à stderr.
Note: vous aurez besoin de modifier la configuration du serveur syslog de votre système pour que l'écriture des messages vers syslog fonctionne. pgpool-II peut envoyer les traces à syslog en utilisant les niveaux LOCAL0 à LOCAL7 (voir la documentation de syslog), mais la valeur par défaut de syslog sur la plupart des plates-formes ignorera de tels messages. Vous aurez donc besoin d'ajouter quelque-chose comme
local0.* /var/log/pgpool.log
au fichier de configuration de votre démon syslog pour le faire fonctionner.
Lorsque la sortie des messages vers syslog est configurée, ce paramètre détermine le niveau syslog à utiliser. Vous pouvez choisir toute valeur entre LOCAL0 et LOCAL7. La valeur par défaut est LOCAL0. Veillez à vous reporter à la documentation système au sujet de syslog.
Lorsque la sortie vers syslog est configurée, ce paramètre permet de déterminer le nom du programme utilisé pour identifier les messages de pgpool-II dans les traces enregistrées par syslog. La valeur par défaut est pgpool.
Chemin complet vers le fichier qui contient le numéro d'identifiant du processus pgpool. La valeur par défaut est "/var/run/pgpool/pgpool.pid". Vous aurez besoin de redémarrer pgpool-II pour changer cette valeur.
Ajoute un horodatage dans les traces lorsque cette valeur est à true. La valeur par défaut est true. Vous aurez besoin de recharger pgpool-II si vous changez cette valeur afin qu'elle soit prise en compte.
Cache les connexions à PostgreSQL lorsque cette valeur est configurée à true. La valeur par défaut est true.
pgpool-II essaie périodiquement de se connecter à PostgreSQL afin de détecter toute erreur sur les serveurs ou sur le réseau. Cette procédure de vérification d'erreurs est appelée « health check ». Si une erreur est détectée, pgpool-II essaie d'exécuter un failover ou une dégénération. Ce paramètre permet d'empêcher qu'un "health check" n'attende tron8.0 ou supérieur, l'installation des fonctions pgpool_regclass, utiles à pgpool-II, est fortement recommandée. Sans celles-ci, le support de tables homonymes mais figurant dans des schémas différents pourrait ne pas fonctionner correctement (pour les tables temporaires, il n'y a aucun problème).
cd pgpool-II-x.x.x/sql/pgpool-regclass make make install psql -f pgpool-regclass.sql template1
L'exécution du script pgpool-regclass.sql doit être faite sur toutes les bases qui sont accédées via pgpool-II. Vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Si vous utilisez PostgreSQL 9.0 ou supérieur avec le « streaming replication », vous aurez besoin d'installer la fonction pgpool_walrecrunning sur tous les serveurs PostgreSQL accedées par pgpool-II.
cd pgpool-II-x.x.x/sql/pgpool-walrecrunning make make install psql -f pgpool-walrecrunning.sql template1
L'exécution du script pgpool-walrecrunning.sql doit-être faite sur toutes les bases de données accedées par pgpool-II. Comme précedemment, vous n'avez pas besoin de le faire pour toutes les bases de données créées après l'exécution des commandes ci-dessus car la base template1 est la base utilisée comme modèle par défaut pour les nouvelles bases de données sous PostgreSQL.
Les fichiers de configuration par défaut de pgpool-II sont
/usr/local/etc/pgpool.conf et
/usr/local/etc/pcp.conf. Plusieurs modes de fonctionnement
sont disponibles sous pgpool-II. Chaque mode a des fonctionnalités
associées qui peuvent être activées ou désactivées, mais aussi configurées
pour contrôler leur comportement.
| Fonction/Mode | Raw Mode (*3) | Mode réplication | Mode maître/esclave | Mode de requêtage en parallèle |
|---|---|---|---|---|
| Pooling de connexions | X | O | O | O |
| Réplication | X | O | X | (*1) |
| Répartition de charge | X | O | O | (*1) |
| Failover | O | O | O | X |
| Online recovery | X | 0 | (*2) | X |
| Requêtage en parallèle | X | X | X | O |
| Nombre de serveurs requis | 1 ou plus | 2 ou plus | 2 ou plus | 2 ou plus |
| Base de donnée système requise? | non | non | non | oui |
pcp.confUne interface de contrôle est fournie avec pgpool-II et permet Ã
l'administrateur de vérifier l'état de pgpool-II et d'arrêter les processus
de pgpool-II Ã distance. pcp.conf est le fichier contenant
la définition des utilisateurs et de leurs mots de passe pour accéder
à cette interface. Tous les modes d'utilisation de pgpool-II nécessitent
que le fichier pcp.conf soit renseigné. Un fichier d'exemple
$prefix/etc/pcp.conf.sample est créé lors de l'installation
de pgpool-II. Renommez ce fichier en pcp.conf, ajoutez-y votre
nom d'utilisateur ainsi que votre mot de passe.
cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf
Une ligne vide ou commençant par un dièse (#) est traitée comme un
commentaire et sera ignorée. Un nom d'utilisateur et son mot de passe
doivent être écrits sur une seule ligne et respecter le format suivant :
nom_d_utilisateur:[mot de passe crypté en md5]
Le [mot de passe crypté en md5] peut être obtenu avec la
commande $prefix/bin/pg_md5.
pg_md5 -p password: <votre mot de passe>
ou
./pg_md5 foo acbd18db4cc2f85cedef654fccc4a4d8
Le fichier pcp.conf doit être lisible par l'utilisateur qui
exécute pgpool-II.
pgpool.confComme cela a déjÃ