Instalando o pgpool II
Este artigo foi elaborado utilizando um ambiente com base no sistema operacional
Arch Linux, Release: 2011.08.19, mas como
instalaremos a partir do código fonte, não teremos grandes problemas com outras distribuições Linux.
- Requisitos:
- pgpool II 3.1.1;
- PostgreSQL;
- Apache Web Server;
- php 5;
- Wordpress (para teste).
- Vantagens do Pool de conexões:
- 'Aglomeração' de conexões mantidas com o PostgreSQL;
- Conexão de forma transparente;
- Para a aplicação, o Pgpool é o próprio PostgreSQL;
- Para o PostgreSQL o Pgpool é um cliente comum;
- Não há necessidade de alterações na aplicação;
- Redução do Overhead causado pelo Fork de processos;
- Controle do número de conexões e tamanho do pool;
- Caso as requisições ultrapassem o tamanho do pool, uma fila de requisições é criada.
- Instalação:
A instalação do pgpool II, será feita de forma objetiva, a partir dos pacotes oficiais disponibilizados no site do
Projeto.
- Passos:
$ wget -c http://www.pgpool.net/download.php?
f=pgpool-II-3.1.1.tar.gz
$ tar xvzf pgpool-II-3.1.1.tar.gz
$ cd pgpool-II-3.1.1
$ ./configure
$ make
$ make install
$ make clean
Caso o comando 'configure', apresente o erro:
configure: error: libpq is not installed or libpq is old
Isto é devido ao Script de configuração procurar o banco de dados em “/usr/local/pgsql”.
Então, se o banco de dados estiver localizado em um local personalizado, deverá adicionar os seguintes parâmetros para o Script 'configure',
informando os diretórios de trabalho do
Postgres:
$ ./configure \
--with-pgsql /local/do/portgres \
–with-pgsql-libdir /postgre/lib
Por padrão, o 'pgpool' será instalado no diretório “/usr/local”.
Configurando o pgpool II
Tendo o 'pgpool' instalado, vamos à configuração.
Os arquivos de configuração pós-instalação, estão dentro de “/usr/local/etc”.
Vamos fazer uma cópia da configuração de exemplo, e iremos configurar:
$ cd /usr/local/etc
$ mv pgpool.conf.sample pgpool.conf
$ vim pgpool.conf
Dentre as configurações possíveis no “pgpool.conf”, nós iremos configurar os seguintes parâmetros com as devidas modificações:
# Host name or IP address dos clientes que irão conectar no
pgpool:
# '*' for all, '' for no TCP/IP connections
listen_addresses = '*'
# Porta em que o pgpool vai trabalhar
port = 9999
# Número de Pools
num_init_children = 32
# Número de conexão por Pool, 4 para testes.
max_pool = 4
# Pool exits after being idle for this many seconds
child_life_time = 300
# Pool exits after receiving that many connections
# 0 means no exit
child_max_connections = 0
# Connection to backend closes after being idle
# for this many seconds
# 0 means no close
connection_life_time = 0
# Client is disconnected after being idle for that many seconds
# 0 means no disconnection
client_idle_limit = 0
# Host name or IP address do PostgreSQL, apelidado de hostname0
backend_hostname0 = 'localhost'
# Port number usada pelo PostgreSQL
backend_port0 = 5432
# Usar 1, 0 apenas para load balance
backend_weight0 = 1
# IMPORTANTE – geralmente vem errado na instalação
pid_file_name = '/var/run/pgpool.pid'
# Directory of pgPool status file
logdir = '/var/log'
Vale ressaltar uma diretiva importante na configuração do 'pgpool', é a que define a regra para limpar o Pool. Ajuste de acordo com a versão de seu
PostgreSQL!
reset_query_list = 'ABORT; DISCARD ALL'
O comando é diferente para cada versão do PostgreSQL. As configurações recomendadas são:
----------------------------------------------------------------------------------------------------
|PostgreSQL version | reset_query_list value |
----------------------------------------------------------------------------------------------------
| 7.1 or before | ABORT |
| 7.2 to 8.2 | ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT |
| 8.3 or later | ABORT; DISCARD ALL |
----------------------------------------------------------------------------------------------------
+ "ABORT" is not issued when not in a transaction block for 7.4 or later.