You are on page 1of 30

UNIVERSIDAD DE EL SALVADOR.

FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE.

DEPARTAMENTO DE INGENIERA Y ARQUITECTURA.


INGENIERA DE SISTEMAS INFORMTICOS.

CTEDRA:
BASE DE DATOS.

TEMA DEL PROYECTO:


REPLICACIN DE BASES DE DATOS EN POSTGRESQL UTLIZANDO
PGPOOL-II.

CATEDRTICO:
Ing. Ernesto Alexander Caldern Peraza.

PRESENTADO POR:
Chacn Linares, Franco Eder.
Cruz Salazar, Jos Manuel.
Figueroa Jimnez, Carlos Enrique.
Reinoza Arocha, Giovanni Ernesto.

CICLO:
I 2010.

LUGAR Y FECHA DE PRESENTACIN:


Santa Ana, 14 de Junio de 2010.
2
NDICE

III
REQUISITOS DEL PROYECTO

A continuacin se presentan los requisitos de hardware para la correcta


implementacin de PostgreSQL con Pgpool-II, tanto para los equipos a utilizar como
servidores de base de datos como tambin para los equipos utilizados por los usuarios
finales que utilicen alguna aplicacin para conectarse al servidor.

SERVIDORES.

Evaluacin y Pruebas. Entornos de Produccin.


Procesador Intel/AMD Procesador Intel/AMD de 32-bit 64-bit a 2.0 GHz. Para una
de 32-bit 64-bit a 1.5 implementacin grande (ms de 2000 clientes) se recomienda
GHz. utilizar arquitectura de 64-bit (hardware y software).
1 GB RAM. De 2 a 4 GB de RAM.
5 GB de espacio libre 10 GB de espacio libre en disco para el software y los registros.
en disco para el Adems se recomienda el uso de discos S-ATA o SCSI para
software y los mejorar el desempeo y una implementacin de respaldo en
registros. RAID para proporcionar redundancia.
Requisitos Generales.
Espacio libre para archivos de compaginacin de bitcora, adems en medios de produccin
espacio suficiente para almacenamiento (hasta ms de un Terabyte).
Memoria 2 Megabytes por conexin.
Sistema base sin entorno grfico para proporcionar un mayor desempeo.
Como mnimo tres servidores replicndose informacin en redes distintas, pero, para
propsitos de enseanza, toda la implementacin que se describe en este manual se
realizar en el mismo segmento de red.
Requisitos Miscelneos.
Los equipos servidores deberan estar configurados para ejecutar NTP (Network Time
Protocol) regularmente de forma automtica.

ADMINISTRADOR Y USUARIOS FINALES.

Requisitos Mnimos. Requisitos Recomendados.


Procesador Intel/AMD/Power PC a 750 Procesador Intel/AMD/Power PC a 1.5
MHz. GHz.
256 MB RAM. 512 MB RAM.
Combinaciones Mnimas Verificadas de SO y aplicaciones clientes de Base de Datos.
Idealmente la mayora de Sistemas Operativos y aplicaciones que soporten conexiones a
servidores de bases de datos deberan de funcionar.
Resolucin Mnima de Monitor. 800 x 600 pxeles.
Velocidad Mnima de Conexin a Internet. 128 kbps.

4
SISTEMA OPERATIVO

DEBIAN GNU / LINUX.


Este ser el SO utilizado para llevar a cabo la implementacin de nuestro proyecto,
ms especficamente la actual (hasta el momento de la redaccin de este artculo) versin
Estable 5.0 (de nombre cdigo Lenny). Por lo cual necesitamos un disco de instalacin
del mismo sistema, el cual podemos descargar gratuitamente desde alguno de los servidores
disponibles que aparecen listados en http://www.debian.org/CD/http-ftp/; adems de una
conexin a Internet de Banda Ancha para las actualizaciones del SO.

INTRODUCCIN.
En este tutorial se utilizarn tres equipos, un servidor y dos clientes, vale aclarar
tambin que, para propsitos de enseanza, se utilizarn como nombres de equipo
(hostname) deb seguido de algn nmero (es decir deb1, deb2 y deb3).

Adems del nombre de dominio que segn el estndar en GNU/Linux se modifica


en el archivo que se encuentra en la ruta /etc/hosts las entradas de: deb1, deb2, deb3
deben de existir con sus respectivas direcciones IP. Cabe destacar que todas estas opciones
pueden ser cambiadas por otras ms cmodas al usuario a la hora de la implementacin del
proyecto.

PRIMEROS PASOS.
El siguiente apartado indica los pasos bsicos a seguir para la correcta instalacin
del sistema operativo utilizado, pero lamentablemente al momento de la realizacin del
presente manual slo se tena a disposicin una versin anterior del mismo (Debian 4.0
Etch); afortunadamente el proceso de instalacin se ha mantenido idntico en ambas
versiones, por lo que igualmente los pasos a continuacin an son vlidos.

Inserte el disco de instalacin de Debian dentro de alguna unidad lectora de


CD/DVD y seleccione dicha unidad como la primera en buscar un elemento de carga (First
Boot Device), ya sea dentro de la BIOS de su equipo o mediante el men de carga (Boot
Menu). Vea las Figuras 1 y 2 de la Galera de Imgenes para una mayor referencia.

Si todo sali bien aparecer una pantalla como la que muestra la Figura 3 en su monitor.

Presione la tecla Enter para iniciar el proceso de instalacin del SO.

El proceso de instalacin comenzar, y como primer punto le pedir que seleccione


un lenguaje en el que se le mostrarn los mens y las opciones de la instalacin (Figura 4).

Despus le preguntar acerca de su ubicacin geogrfica actual (Figura 5).

Y posteriormente acerca de la distribucin de su teclado (Figura 6).

5
El instalador proceder a revisar el disco de instalacin, el hardware encontrado en
el equipo y configurar la red con DHCP de encontrar una conexin que conecte a un
servidor DHCP en la red. Ver las Figuras 7 a 12.

IDENTIFICACIN DEL EQUIPO.


A continuacin, se le pedir que ingrese un nombre para el equipo (hostname) como
lo muestra la Figura 13. Para esta implementacin, el servidor de base de datos ser
nombrado como deb2.bdd.edu, mientras que los clientes sern deb1.bdd.edu y
deb3.bdd.edu, as que procederemos a introducir los nombres de equipo respectivos.

Y un nombre para el dominio (domain), para esta implementacin se introduce


bdd.edu (Figura 14). No debe preocuparse si decide cambiar el nombre del equipo o del
dominio despus, ya que dicha accin tambin puede llevarse a cabo.

El instalador proceder a revisar los dispositivos de almacenamiento que posee el


equipo, as como todo el hardware que no se haba configurado anteriormente. Ver la
Figura 15.

PARTICIONAMIENTO.
Ahora usted tendr que particionar su disco duro (Figura 16). En este paso, hay que
prestar atencin especial al crear una particin que posea el espacio libre suficiente para
cumplir los requisitos mnimos para la correcta instalacin de todos los paquetes necesarios
para la implementacin de nuestro proyecto; si lo desea puede revisar el apartado referente
a los Requisitos del Proyecto, en las Pginas 4 y 5 del presente manual.

Por el bien de mantener lo ms simple posible la explicacin de este punto se


proceder a crear una sola particin (con el punto de montaje /) y una pequea particin
para utilizar como rea de Intercambio (Swap), as que se procede a seleccionar la
opcin de Mtodo de Particionado Guiado - Utilizar Todo el Disco (Figura 17).

Por supuesto, la opcin seleccionada de particionado es una eleccin completamente


del usuario, as que si lo desea puede crear ms particiones, y montar diversas carpetas
importantes del SO en cada una de ellas, pero eso ya queda a gusto de cada usuario.

Seleccione la unidad de disco duro que desea particionar (Figura 18).

Despus seleccione el esquema de particionamiento. Por motivos de simplicidad,


como se mencion anteriormente, para este ejemplo se seleccion colocar Todos los
Ficheros en una Particin (Recomendado para Novatos) tal y como lo muestra la Figura
19. Queda a decisin y gusto del usuario que opcin se elegir.

Cuando se halla terminado de seleccionar y calcular las opciones para el


particionado (Figura 20), seleccione Finalizar el Particionado y Escribir los Cambios en el
Disco (Figura 21).

Seleccione S cuando se le pregunte acerca de Escribir los Cambios en el Disco


(Figura 22).

6
Despus de un rato, sus nuevas particiones estn creadas y formateadas (Figura 23).

A continuacin, el programa de instalacin proceder a configurar el reloj del


equipo en base a la regin geogrfica seleccionada en un principio (Figura 24).

ADMINISTRACIN DE USUARIOS.
A continuacin se le preguntar por una contrasea para el Sper Usuario (root).
Y una confirmacin de la contrasea anterior para evitar errores de escritura (Figuras 25 y
26).

Cree una cuenta de Usuario Normal, por ejemplo un usuario Administrador


(real users name, ver Figura 27) con el nombre de usuario administrador (username, ver
Figura 28), el cual slo debe estar conformado por nmeros y letras minsculas (el primer
carcter slo puede ser una letra minscula).

Tenga en cuenta que el nombre de usuario admin es un nombre reservado en


Debian y, como anteriormente en el proceso de particionado, la seleccin del username en
este paso queda a eleccin del usuario, en esta implementacin se crean usuarios deb ms
un nmero que haga referencia a cada uno de los equipos utilizados; por ejemplo el equipo
deb1 poseer un usuario deb1.

A continuacin se le preguntar por una contrasea para el usuario recin creado, al


igual que una confirmacin de la contrasea anterior para evitar errores de escritura
(Figuras 29 y 30).

EL SISTEMA BASE.
A continuacin se proceder a instalar el sistema base (Figuras 31 a 33).

Seguidamente se tendr que configurar apt, ya que al estar utilizando un disco de


instalacin, este contiene slo un conjunto reducido de paquetes, o en su defecto unas
versiones no actualizadas de los mismos. Por lo anterior se recomienda utilizar una rplica
de red, tal y como lo muestra la Figura 34.

Seleccione el pas donde se encuentre la rplica que utilizar (normalmente el pas


donde se encuentra es una opcin razonable).

Entonces seleccione la rplica de red que quiera utilizar; por ejemplo


ftp.es.debian.org, que es el repositorio (sinnimo de rplica o mirror) primario de
Debian en Espaa.

Cabe destacar que en este paso dejamos dos posibles selecciones de rplicas a
manera de ejemplos; las cuales pueden ser revisadas observando las Figuras 35 y 36 para
Espaa, y las Figuras 37 y 38 para El Salvador.

A menos que se utilice un servicio de Proxy HTTP, dejaremos este campo en blanco
y se proceder a seleccionar la opcin de Continuar (Figura 39).

7
apt se encargar ahora de actualizar su base de paquetes disponibles para instalar
(Figuras 40 y 41).

Despus se preguntar acerca de si se desea ser parte de una encuesta sobre el uso
de los paquetes (como un concurso de popularidad pero de software), queda a eleccin del
usuario elegir el participar o no (Figura 43).

Para la finalizacin satisfactoria de nuestra implementacin de un servidor de correo


electrnico necesitamos un Servidor de Base de Datos (obvio), opcionalmente un Servidor
DNS y/o DHCP, el Sistema Estndar y los paquetes para una Computadora Porttil (esto
slo si se va a llevar a cabo la implementacin en una laptop).

Ahora bien, slo seleccionaremos el software necesario (Sistema Estndar y


Computadora Porttil de ser necesario) y se proceder a instalar los paquetes que
necesitamos manualmente ms adelante para tener un control total sobre el software que se
instalar en el sistema. Por el momento slo seleccionaremos lo realmente necesario y
seleccionaremos Continuar. Revisar las Figuras 42, 44 y 45.

Los paquetes seleccionados estn siendo ahora instalados en el sistema. Este paso
puede demorar algo de tiempo dependiendo de las caractersticas del equipo y de la
cantidad de actualizaciones disponibles, as como de la velocidad de la conexin a Internet
que se posea (Figuras 46 y 47).

Despus de finalizada la instalacin del software, se le preguntar acerca de si


quiere instalar el cargador de arranque (boot loader) GRUB en el MBR (Master Boot
Record o Sector Cero) del disco duro. Elija S (Figuras 48 y 49).

Seguidamente, el cargador de arranque GRUB se ha instalado como lo muestra la


Figura 50.

Finalmente la instalacin de nuestro sistema base est ahora terminada. Proceda a


retirar el disco de instalacin de la bandeja de la unidad de lectura y seleccione Continuar
para reiniciar el equipo (Figuras 51 a 53).

Si la instalacin se efectu correctamente, deber aparecer una pantalla como la que


se muestra en la Figura 54 con el men del GRUB mostrando los Sistemas Operativos que
se encuentran instalados en nuestro equipo (esta bsqueda se mostr en la Figura 48).

CONFIGURACIONES Y ACTUALIZACIONES

Antes de pasar a la configuracin propia de la red, hay que tomar en cuenta que la
mayora de comandos que utilizaremos a continuacin solo pueden ejecutarse si se poseen
privilegios de Sper Usuario, as que procedemos a cambiar de cuenta ejecutando:

8
su

Y a continuacin introducimos la contrasea que le fue asignada a dicha cuenta al


momento de la instalacin del Sistema. Inmediatamente despus de ingresar correctamente
la contrasea, el carcter final del cursor del PROMPT cambiar de $ a #, con lo que se
nos indicar el cambio exitoso de cuenta.

CONFIGURACIN DE LA RED.
Ahora bien, debido a que el instalador de Debian tuvo que configurar nuestro
sistema para obtener sus opciones de red mediante DHCP, nos corresponde cambiar dicha
configuracin, esto debido a que se supone que un servidor debera poseer una direccin IP
esttica o fija.

Recordemos que para esta implementacin se utilizar la direccin IP 192.168.1.11


en deb1 (cliente), 192.168.1.22 en deb2 (servidor), 192.168.1.33 en deb3 (cliente) y una
puerta de enlace predeterminada con direccin 192.168.1.1; las direcciones IP utilizadas
dependern tambin de cada implementacin final.

A continuacin, se procedern a mostrar los archivos de configuracin utilizados en


nuestro equipo servidor, es decir en deb2.

Editamos el archivo /etc/network/interfaces con nano (o con el editor de texto


con el que el usuario se acomode mejor) y lo modificamos de acuerdo a nuestras
necesidades. As, para deb2 quedara de la siguiente manera:

nano /etc/network/interfaces

# This file describes the network interfaces available on your system


# and how to activate them. For more information, see interfaces(5).

# The loopback network interface


auto lo
iface lo inet loopback

# The primary network interface

###############################################################
# Para Desechar una IP Asignada por DHCP Comentamos...
# allow-hotplug eth0
# iface eth0 inet dhcp

# Y para Asignar una IP Fija Agregamos...


auto eth0
iface eth0 inet static
address 192.168.1.22
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

# Asignamos una Interfaz Virtual con su IP Fija...

9
auto eth0:1
iface eth0:1 inet static
address 192.168.1.23
network 192.168.1.0
netmask 255.255.255.0
###############################################################

Prstese un especial cuidado al reemplazo de la lnea allow-hotplug eth0 por


auto eth0; ya que de lo contrario al momento de reiniciar los servicios de red estos no
funcionarn, y se deber de reiniciar el sistema completo. A continuacin reiniciamos los
servicios de red ejecutando:

/etc/init.d/networking restart

Y procedemos a editar el archivo /etc/hosts de manera que quede as:

nano /etc/hosts

###############################################################
# Comentar...
# 127.0.0.1 localhost
# 127.0.1.1 deb2.bdd.edu deb2

# Y Agregar...
127.0.0.1 localhost.localdomain localhost
192.168.1.11 deb1.bdd.edu deb1
192.168.1.22 deb2.bdd.edu deb2
192.168.1.33 deb3.bdd.edu deb3
192.168.1.44 pgpool2.bdd.edu pgpool2
###############################################################

# The following lines are desirable for IPv6 capable hosts


::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

El archivo /etc/hosts es en donde se coloca el nombre y la direccin IP de


nuestros equipos anfitriones locales (localhosts). Si se hace referencia a un equipo dentro
de este archivo entonces no es necesario consultar al servidor de nombres de dominio
(DNS) para obtener su direccin IP. La desventaja de hacer esto es que se debe mantener
este archivo actualizado si la direccin IP de alguno de los equipos anfitriones cambia. En
un sistema bien administrado los nicos nombres de equipos que suelen aparecer en este
archivo son una entrada para la interfaz de bucle local (loopback) y la direccin (junto al
nombre) de nuestros localhosts.

Ahora ejecutamos:

10
echo deb2.bdd.edu > /etc/hostname

Y procedemos a reiniciar el sistema:

reboot o mediante la orden shutdown -r now

Despus ejecutamos:

hostname
hostname -f

Y ambas rdenes deberan mostrarnos como respuesta deb2.bdd.edu, tomando en


cuenta que el comando se ejecut en deb2.

Recuerde que en Debian puede volverse Sper Usuario o usuario root ejecutando
la orden su e ingresando la contrasea que le fue proporcionada a dicha cuenta al momento
de la instalacin del SO.

ACTUALIZAR NUESTRO SISTEMA BASE.


Si poseemos una conexin a Internet, procedemos a editar el archivo
/etc/apt/sources.list, el cual contiene la direccin de los repositorios utilizados por
apt para la instalacin y actualizacin de programas. Comentamos la referencia al disco de
instalacin y el resultado nos debera de quedar algo as:

nano /etc/apt/sources.list

#
# Disco de Instalacin...
# deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 DVD Binary-1
20080217-11:31]/ etch contrib main
# deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 DVD Binary-1
20080217-11:31]/ etch contrib main

# Repositorio para las Actualizaciones de Seguridad...


deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

###############################################################
# Repositorio Primario de Espaa...
deb http://ftp.es.debian.org/debian/ etch main
deb-src http://ftp.es.debian.org/debian/ etch main

# Repositorio Primario de USA...


deb http://ftp.us.debian.org/debian/ etch main
deb-src http://ftp.us.debian.org/debian/ etch main

# Repositorio Primario de Inglaterra...


deb http://ftp.uk.debian.org/debian/ etch main
deb-src http://ftp.uk.debian.org/debian/ etch main
###############################################################

11
Si se necesita conocer la direccin de algn otro repositorio de paquetes, se puede
consultar la pgina oficial de la lista de las rplicas de Debian
(http://www.debian.org/mirror/list), y colocar dicha rplica dentro del archivo
/etc/apt/sources.list, como ya se hizo anteriormente.

Despus ejecutamos:

apt-get update

Para actualizar la base de datos de los paquetes de apt y:

apt-get upgrade

Para instalar las ltimas actualizaciones (si las hay).

POSTGRESQL

PostgreSQL es la base de datos relacional de cdigo abierto ms avanzada del


mundo. Distribuida bajo licencia BSD (del ingls, Berkeley Software Distribution), lleva
ms de 15 aos desarrollndose y su arquitectura goza de una excelente reputacin por su
fiabilidad, integridad de datos y correctitud.

PostgreSQL dispone de versiones para prcticamente todos los sistemas operativos


y cumple totalmente con ACID (del ingls, Atomicity, Consistency, Isolation, Durability).
Tiene soporte para claves extranjeras, joins, vistas, disparadores y procedimientos
almacenados (en mltiples lenguajes de programacin). Incluye la mayora de los tipos de
datos de SQL92 y SQL99 y, asimismo, soporta el almacenamiento de grandes objetos
binarios, como imgenes, sonidos y vdeos. Tiene interfaces de programacin nativas para
C/C++, Java, .Net, Perl, PHP, Python, Ruby, Tcl y ODBC, entre otros, y una excepcional
documentacin.

PostgreSQL ofrece sofisticadas caractersticas tales como control concurrente


multiversin (MVCC), point in time recovery (PITR), tablespaces, replicacin asncrona,
transacciones anidadas (savepoints), copias de seguridad en caliente/en lnea, un sofisticado
planificador/optimizador de consultas y write ahead logging para ser tolerante a fallos de
hardware.

Adems, PostgreSQL soporta juegos de caracteres internacionales, codificaciones


de caracteres multibyte, Unicode y realiza ordenaciones dependiendo de la configuracin
de idioma local, de la diferenciacin de maysculas y minsculas y del formato. Es
altamente escalable tanto en la cantidad bruta de datos que puede manejar como en el
nmero de usuarios concurrentes que puede atender. Hay sistemas activos en produccin
con PostgreSQL que manejan ms de 4 terabytes de datos.

12
INSTALACIN.
En esta oportunidad veremos como instalar y configurar un servidor de base de
datos con PostgreSQL 8.4 en Debian 5.0.4. Pues bien, lo primero es descargar la versin de
PostgreSQL 8.4 del sitio oficial (http://www.postgresql.org/download) y ejecutar en
consola la siguiente orden dependiendo donde tengamos guardado nuestro archivo de
PostgresSQL:

./postgresql-8.4.bin

Y, a continuacin, nos aparecer un asistente para completar el proceso de


instalacin, seguimos los pasos que se nos presentan y no debera de presentarse ningn
problema para instalar PostgreSQL. La instalacin por defecto de PostgreSQL en Debian
ya nos deja un sistema gestor de base de datos completamente funcional.

A veces resulta necesario otorgarle ciertos permisos de ejecucin a los archivos, por
ejemplo, en caso de ser necesario aplicamos el siguiente comando como sper-usuario:

chmod +x postgresql-8.4.bin

Cabe destacar que el paquete instalador de PostgreSQL est includo en los


repositorios de Debian, pero lamentablemente slo estaba disponible una versin anterior,
la cual no contena la funcionalidad necesaria para el correcto funcionamiento de nuestra
implementacin.

PGPOOLII

Pgpool-II se podra considerar como un intrprete que habla entre los extremos de
frontend y backend de PostgreSQL, y pasa las conexiones entre ellos. De ese modo, una
aplicacin de base de datos (frontend) cree que pgpool-II es el verdadero servidor de
PostgreSQL, y el servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que
pgpool-II es transparente tanto para el servidor como para el cliente, una aplicacin de base
de datos existente puede empezar a usarse con pgpool-II casi sin ningn cambio en su
cdigo fuente.

Pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayora de las arquitecturas


UNIX. Windows no est soportado. Las versiones de PostgreSQL soportadas son de la 6.4
en adelante. Para usar la paralelizacin de consultas es necesaria la versin 7.4 o superior.

Pgpool-II proporciona las siguientes caractersticas:


Limita el Excedente de Conexiones. PostgreSQL soporta un cierto nmero de
conexiones concurrentes y rechaza las que superen dicha cifra. Aumentar el lmite
mximo de conexiones incrementa el consumo de recursos y afecta al rendimiento del
sistema. pgpool-II tiene tambin un lmite mximo de conexiones, pero las conexiones
extras se mantienen en una cola en lugar de devolver un error inmediatamente.

13
Agrupacin de Conexiones. Pgpool-II mantiene abiertas las conexiones a los
servidores PostgreSQL y las reutiliza siempre que se solicita una nueva conexin con
las mismas propiedades (nombre de usuario, base de datos y versin del protocolo).
Ello reduce la sobrecarga en las conexiones y mejora la productividad global del
sistema.
Replicacin. Pgpool-II puede gestionar mltiples servidores PostgreSQL. El uso de
la funcin de replicacin permite crear una copia en dos o ms discos fsicos, de modo
que el servicio puede continuar sin parar los servidores en caso de fallo en algn disco.
Balanceo de Carga. Si se replica una base de datos, la ejecucin de una consulta
SELECT en cualquiera de los servidores devolver el mismo resultado. pgpool-II se
aprovecha de la caracterstica de replicacin para reducir la carga en cada uno de los
servidores PostgreSQL distribuyendo las consultas SELECT entre los mltiples
servidores, mejorando as la productividad global del sistema. En el mejor caso, el
rendimiento mejora proporcionalmente al nmero de servidores PostgreSQL. El
balanceo de carga funciona mejor en la situacin en la cul hay muchos usuarios
ejecutando muchas consultas al mismo tiempo.
Consultas en Paralelo. Al usar la funcin de paralelizacin de consultas, los datos
pueden dividirse entre varios servidores, de modo que la consulta puede ejecutarse en
todos los servidores de manera concurrente para reducir el tiempo total de ejecucin. La
paralelizacin de consultas es una solucin adecuada para bsquedas de datos a gran
escala.

INSTALACIN.
Un detalle a tomar muy en cuenta es que al momento de implementar este proyecto,
se utiliz la versin 2.2.6 de Pgpool-II, as que en varios comandos debe de cambiarse el
2.2.6 por la versin utilizada por el usuario.

Primeramente instalamos los prerrequisitos (dependencias) para una correcta


instalacin de Pgpool-II:

apt-get install make gcc-4.1 libpq5 libpq-dev

Ahora bien, primero descargamos pgpool-II, lo descomprimimos e instalamos en


/opt/pgpool2:

cd /usr/local/src
wget http://pgfoundry.org/frs/download.php/2478/pgpool-II-2.2.6.tar.gz
tar --extract --gzip --file pgpool-II-2.2.6.tar.gz
cd pgpool-II-2.2.6
./configure --prefix=/opt/pgpool2
make
make install

Recuerde que la forma de instalarlo puede variar pero, ya que normalmente es un


paquete que no se encuentra en repositorios, en la mayora de casos se descarga y se
compila, que es el procedimiento presentado anteriormente.

14
ARCHIVOS DE CONFIGURACIN

PGPOOL-II.
Con una instalacin exitosa
procederemos a modificar los archivos
pcp.conf.sample y pgpool.conf.sample; para obtener estos archivos copie los archivos
de ejemplo y renmbrelos:

cp /opt/pgpool2/etc/pcp.conf.sample /opt/pgpool2/etc/pcp.conf
cp /opt/pgpool2/etc/pgpool.conf.sample /opt/pgpool2/etc/pgpool.conf
cp /opt/pgpool2/etc/pool_hba.conf.sample /opt/pgpool2/etc/pool_hba.conf

Para obtener la contrasea en MD5 ejecutamos el archivo ejecutable que se


encuentra en la siguiente ruta:

/opt/pgpool2/bin/pg_md5 <contrasea>

Y editamos el pcp.conf, para agregar la contrasea que obtuvimos anteriormente:

# Be aware that there will be no spaces or tabs at the


# beginning of the line! although the above example looks
# like so.
#
# Lines beginning with '#' (pound) are comments and will
# be ignored. Again, no spaces or tabs allowed before '#'.

###############################################################
# USERID:MD5PASSWD
# usuario pgpool
# contrasea pgpool
pgpool:ba777e4c2f15c11ea8ac3be7e0440aa0
###############################################################

Editamos el pgpool.conf, de manera que nos quede lo ms parecido posible a la


configuracin siguiente:

###############################################################
listen_addresses = '*'
port = 9999
pcp_port = 9898
socket_dir = '/var/run/postgresql'
pcp_socket_dir = '/var/run/postgresql'
backend_socket_dir = '/var/run/postgresql'
pcp_timeout = 10
num_init_children = 32
max_pool = 100
child_life_time = 300
logdir = '/var/run/postgresql'
pid_file_name = '/var/run/pgpool/pgpool.pid'
replication_mode = true

15
load_balance_mode = true
reset_query_list = 'ABORT; DISCARD ALL'
health_check_timeout = 20
health_check_period = 60
health_check_user = 'pgpool'
system_db_hostname = 'localhost'
system_db_port = 5432
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'pgpool'
system_db_password = ''
backend_hostname0 = '172.1.1.2'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/opt/PostgreSQL/8.4/data'
backend_hostname1 = '172.1.1.3'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/opt/PostgreSQL/8.4/data'
backend_hostname2 = '172.1.2.3'
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = '/opt/PostgreSQL/8.4/data'
###############################################################

Cabe mencionar un par de puntos: Existen ms opciones de configuracin pero para


este proyecto utilizaremos las puestas en este documento y el nmero de configuracin
backend aumentara o disminuira dependiendo del numero de servidores existentes a la
hora de crear una nueva implementacin. Normalmente las carpetas /var/run/pgpool y
/var/run/postgresql no existen entonces se deben crear y poner permisos de escritura y
lectura para que el demonio de pgpool pueda crear y/o modificar el archivo pgpool.pid.

mkdir /var/run/pgpool
mkdir /var/run/postgresql
chmod R 777 /var/run/pgpool
chmod R 777 /var/run/postgresql

Procedemos ahora con la configuracin del archivo pool_hba.conf:

###############################################################
# "host" records. In that case you will also need to make pgpool listen
# on a non-local interface via the listen_addresses configuration
parameter.

# 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 0.0.0.0/0 trust

16
###############################################################

La nica configuracin que cabe explicar es que por efectos didcticos se pone que
acepte conexiones de cualquier direccin, no obstante este valor se puede cambiar a
determinada red o porcin de red, por motivos de seguridad.

POSTGRESQL.
Procedemos ahora con el archivo pg_hba.conf que se encuentra en
/opt/PostgreSQL/8.4/data:

###############################################################
# If you want to allow non-local connections, you need to add more
# "host" records. In that case you will also need to make PostgreSQL
listen
# on a non-local interface via the listen_addresses configuration
parameter,
# or via the -i or -h command line switches.

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only


local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
#host all all 172.1.1.0/24 trust
#host all all 172.1.2.0/24 trust
#host all all 192.168.1.0/24 trust
host all all 0.0.0.0/0 trust
###############################################################

Ahora que tenemos todo configurado, crearemos un ejecutable que se inicie al


encender el servidor y usaremos el estndar de carga de archivos en Debian, colocando
nuestro archivo en la carpeta /etc/init.d/:

Procedemos con el archivo pg_hba.conf que se encuentra en la ruta


/opt/PostgreSQL/8.4/data:

###############################################################
#! /bin/sh

PATH=/opt/pgpool2/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/pgpool2/bin/pgpool
PIDFILE=/var/run/pgpool/pgpool.pid

case "$1" in
start)
echo iniciando demonio pgpool espere
/etc/init.d/postgresql-8.4 start
/opt/pgpool2/bin/pgpool -n &

17
sleep 3
;;

stop)
echo deteniendo el demonio pgpool espere
/opt/pgpool2/bin/pgpool stop
sleep 3
;;

restart)
echo reiniciando los servicios de pgpool
/etc/init.d/postgresql-8.4 restart
/opt/pgpool2/bin/pgpool stop
/opt/pgpool2/bin/pgpool -n &
sleep 3
;;

*)
echo error de comando pruebe: start, stop o restart
;;
esac
###############################################################

Ahora para que nuestro ejecutable se inicie al encender el servidor lo copiamos a la


carpeta /etc/init.d/ con permisos de sper-usuario del sistema y ejecutamos la siguiente
instruccin:

update-rc.d <archivo> defaults

Y con este ltimo archivo finalizamos nuestra configuracin, luego solamente nos
queda reiniciar el proceso de pgpool-II y comprobar nuestra implementacin.

Iniciando como sper-usuario:

su postgres
/opt/postgresql/8.4/bin/createdb h [host] p 9999 <nombre_base_de_datos>

Despus de aplicar el comando anterior, debera de existir una base de datos idntica
(respaldada) en cada uno de los servidores configurados mediante los pasos vistos a lo largo
de todo este documento.

18
GALERA DE IMGENES

DEBIAN GNU / LINUX.

Figura 1: Men de Secuencia de Arranque dentro de la BIOS.

Figura 2: Men de Arranque.

Figura 3: Inicio de la Instalacin.

Figura 4: Seleccin del Lenguaje para el Proceso de Instalacin.

Figura 5: Seleccin del rea Geogrfica.

19
Figura 6: Configuracin del Teclado.

Figura 7: Deteccin y Montaje de las Unidades de CD-ROM.

Figura 8: Anlisis del Disco de Instalacin.

Figura 9: Carga de Componentes Adicionales para la Instalacin.

Figura 10: Deteccin de los Dispositivos de Red.

Figura 11: Configuracin de la Red con DHCP (I).

20
Figura 12: Configuracin de la Red con DHCP (II).

Figura 13: Configuracin del Nombre de Equipo.

Figura 14: Configuracin del Nombre de Dominio.

Figura 15: Deteccin de las Unidades de Almacenamiento y Dispositivos


Restantes.

Figura 16: Inicio del Proceso de Particionado.

Figura 17: Mtodo de Particionado a Utilizar.

21
Figura 18: Seleccin de la Unidad de Disco a Particionar.

Figura 19: Esquema de Particionado a Utilizar.

Figura 20: Clculo de las Nuevas Particiones.

Figura 21: Resumen del Particionado a Implementar.

Figura 22: Aplicar Particionado.

Figura 23: Formateo de las Particiones Implementadas.

22
Figura 24: Configuracin del Reloj.

Figura 25: Clave del Sper Usuario (I).

Figura 26: Clave del Sper Usuario (II).

Figura 27: Nombre Real del Nuevo Usuario.

Figura 28: Nombre de Usuario del Nuevo Usuario.

Figura 29: Clave del Nuevo Usuario (I).

23
Figura 30: Clave del Nuevo Usuario (II).

Figura 31: Instalacin del Sistema Base (I).

Figura 32: Instalacin del Sistema Base (II).

Figura 33: Configuracin de APT (Anlisis del CD-ROM).

Figura 34: Configuracin de Uso de una Rplica en Red.

Figura 35: Pas de la Rplica (Espaa).

24
Figura 36: Seleccin de la Rplica (Espaa).

Figura 37: Pas de la Rplica (El Salvador).

Figura 38: Seleccin de la Rplica (El Salvador).

Figura 39: Configuracin de Proxy HTTP.

Figura 40: Configuracin de APT (Anlisis de la Rplica Seleccionada).

Figura 41: Configuracin de APT (Anlisis del Repositorio de Seguridad).

25
Figura 42: Seleccin de Programas (I).

Figura 43: Configuracin sobre Uso de Paquetes Populares.

Figura 44: Seleccin de Programas (II).

Figura 45: Seleccin de Programas (III).

Figura 46: Instalacin de Programas (I).

Figura 47: Instalacin de Programas (II).

26
Figura 48: Configuracin del GRUB (I).

Figura 49: Configuracin del GRUB (II).

Figura 50: Instalacin del GRUB.

Figura 51: Fin de la Instalacin.

Figura 52: Instalacin Completa.

Figura 53: Reiniciar el Nuevo Sistema.

27
Figura 54: GRUB.

28
FUENTES DE CONSULTA

Todas las fuentes a continuacin citadas fueron consultadas por ltima vez a las
4:30 P.M. el 14 de Junio de 2010.

Dawson, Terry; Drake, Joshua; Rubini, Alessandro. (1999). Linux


NetworkingHowTo (Previously the Net-3 HowTo). (Versin 1.5).
http://www.tldp.org/docs.html#howto.

Equipo del Instalador de Debian. (2007). Gua de Instalacin de Debian


GNU/Linux. http://www.debian.org/doc/.

Timme, Falko. (2007). The Perfect Setup Debian Etch (Debian 4.0).
http://www.howtoforge.com/perfect_setup_debian_etch/.

Borgert, W. Martin. (2008). Tarjeta de Referencia para Debian GNU/Linux.


(Versin 5.0.1). http://www.debian.org/doc/ en http://tangosoft.com/refcard/.

Sabater, Jaume. (2008). Replicacin y alta disponibilidad de PostgreSQL con


Pgpool-II. http://linuxsilo.net/articles/postgresql-pgpool.html.

Timme, Falko. (2009). The Perfect Server Debian Lenny (Debian 5.0) [ISPConfig
2]. http://www.howtoforge.com/perfect-server-debian-lenny-ispconfig2/.

WebMaster PostgreSQL-es. (2009). Sobre PostgreSQL. http://www.postgresql-


es.org/sobre_postgresql/.

WebMaster PostgreSQL-es. (2009). Replicacin y Alta Disponibilidad de


PostgreSQL con PgPool-II. http://www.postgresql-es.org/node/313/.

PostgreSQL Global Development Group. (2010). PostgreSQL 8.4 Documentation.


http://www.postgresql.org/docs/.

PgPool Global Development Group. (2010). What is PgPool-II?.


http://pgpool.projects.postgresql.org/.

29
30