pgPool-II : la réplication par duplication des requêtes
Signature : | Mis en ligne le : 01/01/2012
Catégorie(s) :
  • GNU/Linux Magazine HS
  • | Domaine :
    Commentez creative commons
    Article publié dans :
    Achetez
    Linux Magazine HS 44 :
    Version Papier
    Version PDF
    Page 1/4
    Page suivante »

    Un moyen extrêmement simple, voire simpliste diront certains, de faire de la réplication est d’envoyer toutes les requêtes à tous les serveurs en réplication. Évidemment, cela donnera lieu à des limitations assez fortes, mais le résultat peut être intéressant.

     

     

    1 Installation de pgPool-II

    Comme vu dans l’article sur le mode de pooling de connexions de pgPool-II, l’installation de pgPool-II est très simple. Nous n’allons reprendre ici que les commandes de base :

    debian1:~# aptitude install postgresql-server-dev-8.4

    debian1:~# wget -q http://pgfoundry.org/frs/download.php/2362/pgpool-II-2.2.4.tar.gz

    debian1:~# tar xfz pgpool-II-2.2.4.tar.gz

    debian1:~# cd pgpool-II-2.2.4

    debian1:~/pgpool-II-2.2.4# ./configure â€“prefix=/opt/pgpool-II-2.2

    [... messages de progression â€¦]

    debian1:~/pgpool-II-2.2.4# make

    [... messages de progression ...]

    debian1:~/pgpool-II-2.2.4# make install

    [... messages de progression â€¦]

     

    2 Configuration

    La configuration a toujours lieu dans le fichier pgpool.conf. La première chose à faire est d’activer la réplication. Pour cela, il faut mettre à ‘on’ le paramètre replication_mode.

    replication_mode = true

    Ceci fait, pgPool-II enverra une copie de chaque requête qu’il reçoit à tous les nÅ“uds de bases de données. Néanmoins, par défaut, les SELECT ne sont pas répliqués. Si vous souhaitez faire exécuter les SELECT sur les différents nÅ“uds, c’est possible. Il faut pour cela activer le paramètre replicate_select. Nous n’allons pas le faire dans notre cas. Ensuite, il faut configurer les différents nÅ“uds. Nous avions déjà configuré le nÅ“ud 0 lors du précédent article sur pgPool-II, nous allons maintenant faire le nÅ“ud 1 :

    backend_hostname1 = â€˜debian2’

    backend_port1 = 5432

    pgPool-II va donc se connecter aux deux nÅ“uds. Pour cela, il faut évidemment corriger la configuration des accès sur debian1 et debian2. La première chose à faire est d’autoriser les accès distants. Nous passons donc le paramètre listen_addresses à ‘*’ dans le fichier /etc/postgresql/8.4/main/postgresql.conf. Ensuite, nous devons autoriser les adresses IP des deux serveurs. Cela se fait dans le fichier /etc/postgresql/8.4/main/pg_hba.conf. La configuration retenue est la suivante :

    # Database administrative login by UNIX sockets

    local   all         postgres                          ident

    # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

    # "local" is for Unix domain socket connections only

    local   all         all                               trust

    # IPv4 local connections:

    host    all         all         127.0.0.1/32          trust

    host    all         all         192.168.10.66/32      trust

    host    all         all         192.168.10.67/32      trust

    # IPv6 local connections:

    host    all         all         ::1/128               trust

    De cette façon, nous autorisons les connexions de n’importe quel utilisateur PostgreSQL sur n’importe quelle base de données, à condition qu’elle provienne des adresses IP 192.168.10.66 et 192.168.10.67 (adresses IP des serveurs debian1 et debian2). Remarquez la méthode trust. Seules les méthodes trust, password et pam sont acceptées. password est certainement un peu meilleur que trust, car il est quand même nécessaire d’avoir un mot de passe. Cependant, ce dernier circule en clair sur le réseau. pam est probablement le meilleur choix, à défaut de mieux. Néanmoins, cela vous contraint à créer autant d’utilisateurs Unix que de personnes capables de se connecter à l’instance PostgreSQL. Maintenant que la configuration est faite, nous devons faire en sorte que PostgreSQL la prenne en compte. Si vous avez dû modifier le paramètre listen_addresses, vous devez redémarrer PostgreSQL. Dans le cas contraire, un simple rechargement de la configuration suffit.

    debian1:/opt/pgpool-II-2.2.4/etc# /etc/init.d/postgresql-8.4 restart

    Reloading PostgreSQL 8.4 database server: main.

    Tout ce travail fait sur debian1 doit aussi être fait sur debian2. Avant de lancer pgPool-II, il est de bon ton de s’assurer que les connexions se font bien. Essayez de vous connecter sur les bases de debian1 à partir de debian1 et de debian2. Puis, faites de même sur les bases de debian2.

     

    3 Utilisation de la réplication

    Commençons par lancer le démon pgpool :

    debian1:~# cd /opt/pgpool-II-2.2.4/bin

    debian1:/opt/pgpool-II-2.2.4/bin# ./pgpool -n

    2009-08-27 02:43:38 LOG:   pid 1469: pgpool successfully started

    Maintenant, nous allons créer une base sur debian1.

    postgres@debian1:~$ createdb -p 9999 b1

    Remarquez que nous utilisons toujours l’option -p pour indiquer le numéro de port de pgpool et donc bien nous assurer de passer par pgPool-II. Pour éviter d’avoir à saisir cette option, vous pouvez initialiser la variable d’environnement PGPORT de cette façon :

    postgres@debian1:~$ export PGPORT=9999

    Évidemment, un moyen encore plus simple est de faire en sorte que pgPool-II écoute sur le port 5432. Revenons-en à notre base de données. Nous l’avons créée sur debian1. Voyons si elle existe bien :

    postgres@debian1:~$ psql -l

                                    Liste des bases de données

        Nom    | Propriétaire | Encodage |     Tri     | Type caract. |    Droits d’accès

    —————-+———————+—————+——————-+———————+———————————-

     b1        | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  |

     postgres  | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  |

     template0 | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  | =c/postgres

                                                                      : postgres=CTc/postgres

     template1 | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  | =c/postgres

                                                                      : postgres=CTc/postgres

    (12 lignes)

    Oui, c’est bien le cas. Maintenant, voyons si elle existe sur debian2 :
    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : Linux Pratique N°77
    Édito : GNU/Linux Magazine N°160
    Édito : GNU/Linux Magazine Hors-Série N°66
    Édito : MISC Hors-Série N°7
    Édito : Linux Essentiel N°31
    Communication RSS Com. RSS Presse
    Misc, Partenaire de l’événement Hack In Paris.
    Linux Pratique, Partenaire de l’Ubuntu Party à la Cité des Sciences et...
    Linux Essentiel N°31 – Communiqué de presse
    GNU/Linux Magazine N°159 – Communiqué de presse
    Linux Magazine, Partenaire de Symfony Live Paris
    Rechercher un article dans notre base documentaire :
    En kiosque Flux RSS

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...