You are on page 1of 34

2014

Proyecto Integrado:
Implantacin de una
base de datos
distribuida con
PostGreSQL.
Creacin de un sistema que consta de dos equipos, los
cuales implementarn una base de datos distribuida,
en modo replicacin con el fin de que cuando un
equipo no pueda responder a una solicitud , el
segundo equipo responda con la informacin siempre
actualizada.

Sergio Pulido Jimnez


G.S. A.S.I.R
04/04/2014
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

ndice

Planteamiento: ......................................................................................................................... 2
Sobre PostgreSQL.................................................................................................................. 2
Sobre pgpool-II...................................................................................................................... 3
Arquitectura del sistema: .......................................................................................................... 4
Instalacin y configuracin de Turnkeylinux: ............................................................................. 6
Configuracin inicial: ............................................................................................................. 6
El sistema Raid .......................................................................................................................... 9
Creacin de RAID 1:............................................................................................................. 10
Primera solucin: .................................................................................................................... 16
Esquema: ............................................................................................................................ 16
Ventajas .............................................................................................................................. 17
Desventajas ........................................................................................................................ 17
Desarrollo de la Primera implementacin............................................................................ 18
Segunda solucin .................................................................................................................... 21
Desarrollo de la segunda implementacin. .......................................................................... 21
Arquitectura del sistema: .................................................................................................... 22
Configuracin bsica de pgpool-II............................................................................................ 24
Prueba de replicacin:......................................................................................................... 29
Tercera solucin...................................................................................................................... 30
Desarrollo de la tercera implementacin............................................................................. 30
Configuracin de pgpool para realizar la alta disponibilidad. ............................................... 31
Parada y Arranque de pgpool-II ............................................................................................... 33

1
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Planteamiento:
La finalidad de mi proyecto es instalar,configurar y mantener un clster de
servidores de base de datos PostgreSQL gestionados mediante un
middleware llamado pgpool-II.

Sobre 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. 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.

2
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Sobre pgpool-II

Pgpool-II habla los protocolos 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.

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.

Pool 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

3
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

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.

Paralelizacin de consultas. 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.

Alta disponibilidad con otros nodos pgpool-II.A partir de la versin


3.3.0 de pgpool-II ya implementan la posibilidad de hacer alta
disponibilidad entre dos o ms nodos con este middware y poder
prescindir de Linux HA.

Arquitectura del sistema:

El objetivo final del proyecto ser el siguiente:


Tener dos equipos los cuales tendrn el sistema gestor de base de datos
PostgreSQL, los cuales mantendrn una base de datos que bien podr
tener una arquitectura maestro-esclavo que es como se puede ver en el

4
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

esquema o bien una arquitectura maestro-maestro y en este momento es


donde entrara en accin el middleware, porque la replicacin la
proporciona de forma nativa el sistema gestor.
Ambos nodos toman como punto de partida un sistema x86_64 de Debian
GNU/Linux como es TurnkeyLinux (una distribucin desarrollada y
adaptada para este proposito)

Distribucin interesante y que pueden descargar desde:

http://www.turnkeylinux.org/

Qu es lo que proporciona esta distribucin?

PostgreSQL 9.1
Servicio SSH
Servicio Web con aplicacin webmin y PGmyadmin y otra aplicacin
web muy curiosa que nos proporciona una interfaz Shell en nuestro
navegador preferido.

Los nodos que contendrn el middleware y se encargaran del balanceo de


carga, paralelismo de consultas etc.. Tomaran como punto de partida un
sistema x86_64 de Debian GNU/Linux como Ubuntu server.

En los dos nodos que contendrn el gestor de base de datos y toda la


informacin de la base de datos primeramente vamos a instalar un
sistema raid que bien os recomiendo que lo hagis con uno de los niveles
1 o 5, en este caso he optado por un raid de nivel 1.

nicamente vamos a almacenar en el raid los datos de dicha base de


datos.

5
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Instalacin y configuracin de Turnkeylinux:


Antes de nada lo que haremos ser la instalacin de turnkeylinux en
nuestros dos equipos.

Configuracin inicial:

Establecimiento de contrasea para el usuario root del sistema.

Establecimiento de contrasea para el usuario administrador de la base de


datos, por defecto el usuario es postgres.

6
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Podemos asegurar nuestra base de datos haciendo copias en un


directorio que nos proporciona la misma distribucin destinado a buckups.

-No voy a utilizar dicho directorio, por tanto pasamos de esa


opcin.

Hacemos la configuracin de red propicia.

Servers:
TurkeyLinux 1 :
Primera interfaz de red en bridged con IP
esttica(192.168.5.101).
Segunda interfaz de red en host-only con IP
esttica (192.168.56.101).
TurkeyLinux 2 :
Primera interfaz de red en bridged con IP
esttica(192.168.5.102).
Segunda interfaz de red en host-only con IP
esttica (192.168.56.102).

7
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

La interfaz en host-only la utilizaremos para controlar el heartbeat de los


servidores y para mantener la base de datos actualizada.

A cada servidor le proporcionaremos 3 discos duros:

Como son mquinas virtuales lo que utilizo le he dado 10GB a cada disco
duro:
Destinaremos el primer disco duro para el SO de equipo.
Y los dos restantes irn destinados al sistema RAID.
a. OJO: los discos duros del sistema RAID deben de tener el
mismo tamao en caso de eleccin de RAID de nivel 1.

8
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

El sistema Raid

Para la implantacin de nuestro sistema raid lo primero que


necesitaremos saber es donde se alojan fsicamente la informacin de la
base de datos en el sistema de archivos.

Cmo saberlo?. Podemos utilizar lo siguiente:

1. Consultar el parmetro data_directory del archivo de configuracin


principal de PostgreSQL postgresql.conf que est alojado dentro de
/etc/postgresql/9.1/main.
2. O bien realizar la siguiente consulta a base de datos:

La ruta del directorio la tendremos que cambiar cuando tengamos el RAID


implantado.

9
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Creacin de RAID 1:

Esta parte de explicacin no est realizada en la misma mquina pero los


pasos a seguir si son los idneos, no obstante yo si lo tengo realizado en
mi sistema.
Primero cuando ya tenemos los dos discos aadidos a la mquina virtual
nos aseguramos de que nos ha detectado los dos discos de la siguiente
manera.

Con el comando fdisk -l mostra un listado de los dispositivos.

10
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Como ni el disco b ni el c no contienen una tabla de particiones vlida


vamos a proceder a crear una en el primer disco y volcarla sobre el otro.
Procedemos a hacerlo de la siguiente forma:

Ahora copiamos esa tabla de particionamiento al otro disco duro.

11
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Ahora vamos a formatear las particiones de ambos discos duros. En un


principio le indicamos el sistema de archivos ext4, ms tarde lo
cambiaremos para poder hacer el raid.

Ahora vamos vamos a proceder a instalar los paquetes necesarios para


hacer el RAID y antes de nada vamos a actualizar los repositorios.

apt-get update

E Instalamos los siguientes paquetes:

12
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Activamos los mdulos necesarios y observamos con el comando cat


/etc/proc/mdstat que no existe ningn otro raid configurado.

Cambiamos el tipo de particin al tipo Linux RAID Autodetect,


realizamos lo mismo con /dev/sdb

Vemos el resultado:

13
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Ahora creamos el nodo para el raid y lo llamamo md0.

Creamos el raid con las unidades que van a intervenir en el raid 1.

Ahora vemos que nuestro raid est creado y que la sincronizacion se est
realizando.

Cuando la sincronizacin haya terminado ya tendremos nuestro raid


operativo.

Ahora vamos a hacer que nuestro raid sea persistente(que no se pierda al


reiniciar el equipo).De la siguiente manera:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Por ltimo vamos a hacer que nuestro sistema raid se monte


automticamente en un directorio creado con anterioridad.
Para ello utilizaremos el fichero /etc/fstab y aadimos la siguiente linea.

14
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Ahora tendremos que cambiar el directorio donde se guarda la base de


datos fisicamente y cambiarlo por el directorio que hemos creado (donde
se monte el raid).

Para ello modificaremos el fichero

/etc/postgresql/9.1/main/postgresql.conf

y por ultimo hacemos como propietario al usuario postgres del nuevo


directorio:

chown postgres /BD/database

15
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Primera solucin:

Esquema:

Host maestro:
Address: 192.168.56.101
Netmask: 255.255.255.0

Host Esclavo:
Address: 192.168.56.102
Netmask: 255.255.255.0

La primera implementacion que realic en su momento trataba de dos


equipos: uno que hacia de maestro y otro de esclavo, esta
implementacion viene nativa de postgresql y se puede utilizar a partir de
la version 8.3 del sistema gestor.

La implementacion consiste en una confianza entre un equipo maestro y


un esclavo, esto hace posible una replicacion total de la base datos de la
siguiente forma:
Todo lo que se relice en la base de datos del equipo maestro se replica al
esclavo.

16
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

El equipo maestro envia registros de todo lo que se realiza al equipo


esclavo mediante un canal seguro como puede ser ssh.

Esto se puede hacer de dos formas 1.Enviando los archivos WAL


integramente o enviando solamente los ultimos cambios de esos archivos.
Los archivos WAL se puede que son como los archivos redologs de Oracle.

Ventajas

Sencillo de implementar.
Todo lo que se haga en el servidor principal, incluyendo sentencias DLL,
se replica en el secundario.
Puede usarse para aligerar la carga del servidor principal.

Desventajas

No se pueden especificar que bases de datos o tablas queremos


replicar.
No se pueden hacer cambios en el esquema en el servidor esclavo (por
ejemplo, una indexacin distinta).
Las dos mquinas deben tener arquitecturas (32 o 64 bits) y versiones
similares de PostgreSQL.

17
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Desarrollo de la Primera implementacin.

Lo primero antes de nada es avilitar la conexiones desde el esclavo al


equipo maestro para esto utilizaremos el archivo pg_hba.conf que se
encuentra en el directorio principal de postgresql.
Aadimos la siguiente linea:

Archivo postgresql.conf

1. En el primario configuramos:

2. Habilitamos la funcin hot-Stadby

3. Indicamos el nmero de servidores que se conectaran para la


replicacin

4. Indicamos el nmero de segmentos que se guardaran en una cache


antes de ser enviados al esclavo.

5. Activamos el envio de archivos Wal

18
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

6. Ahora indicamos el comando que se ejecutar para el envio de


archivos Wal

%p contiene el path de los archivos wal.


%f contiene el nombre del archivo wal creado.

7. Creamos una carpeta done se va a alojar los archivos wal y hacemos


propietario a postgres (en el servidor secundario).

8. Para que el servidor maestro utilice SCP sin que solicite el password
del usuario postgres, necesitamos generar el par de claves pblica y
privada y aadir la publica al servidor esclavo.

19
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

9. Ahora copiamos la clave pblica del master al slave

Reiniciamos el servidor primario.

sudo service postgresql restart

En el fichero postgresql.conf del esclavo modificamos:

Ahora en el servidor esclavo debemos crear un archivo con el


nombre recovery.conf.

MUY IMPORTANTE la ubicacin de este fichero debe ser en el


directorio $PGDATA (es la ruta donde se guardan los datos de la
BD.)
En mi caso /BD/base_datos.
Y aadimos lo siguiente al fichero:

Con estos pasos ya tendramos una base de datos distribuida de forma


muy simple.
Esta solucin no es muy buena ya que el equipo esclavo solo nos valdra
de respaldo, con esto solamente conseguiramos redundancia en los datos
ya que tendramos los mismo en ambos equipos.

20
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Si tenamos algo en la base de datos primaria tendremos que hacer


un backup del primario al secundario de la siguiente forma.

Cambiamos por /BD/base_datos.

Segunda solucin

La segunda solucin pasa por instalar un middleware llamado pgpool-II


que nos proporcione todo lo hablado anteriormente, balanceo de carga,
paralelismo de consultas etc...

Desarrollo de la segunda implementacin.

Para el desarrollo de la segunda implementacin partimos de que


tenemos dos equipos con un servicio postgreSQL y con una configuracin
parecida a lo que hemos visto anteriormente.

Ahora vamos a aadir otro equipo y vamos a colocarlo en medio de


nuestra arquitectura.

21
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Arquitectura del sistema:

Instalacin de pgpool-II en un equipo con una distribucin basada en


Debian como puede ser Ubuntu 12.04.

Antes de empezar necesitamos instalar unos paquetes requeridos por


pgpool-II.

Apt-get update
Apt-get install gcc
Apt-get install make
Apt-get install libpq-dev

22
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Ahora nos descargamos e instalamos pgpool-II de la siguiente manera:

wget http://www.pgpool.net/download.php?f=pgpool-II-
3.3.0.tar.gz
tar -xvf [paquete]
cd paquete
sudo su
./configure
make
make install

Pgpool-II utiliza los trminos backend y frontend , backend los utiliza para
referirse a los equipos que componentes del ncleo de nuestro sistema de
base de datos mientras que el trmino frontend lo utiliza para referirse al
middware que hace de pasarela entre los clientes y los backends.

He optado por descargarme pgpool-II desde la pgina oficial de pgpool en


vez directamente desde los repositorios de Ubuntu porque en la ltima
versin de la pgina oficial aade mas funcionalidades que la versin que
existe en los repositorios de Ubuntu.

23
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Configuracin bsica de pgpool-II

Por defecto si no le indicamos nada pgpool-II se instala en /usr/local/etc.

Para cambiar su directorio de instalacin cuando hacemos el ./configure


debemos aadirle un parmetro, y el comando quedara de la siguiente
forma.

./configure prefix=[ruta_donde_queramos]

El fichero de configuracin principal de pgpool se encuentra en este


mismo directorio y se llama pgpool.conf.

Procedemos a configurar pgpool de forma bsica.

Primero indicamos la IP por el cual aceptara conexiones:

Indicamos el puerto por el que escuchar (por defecto 9999).

Los directorios donde se almacenaran el sockect los he definidos todos


/tmp para que no haya problemas de permisos, pero se puede indicar el
que queramos siempre y cuando pgpool tenga permisos de
lectura/escritura.

Configuramos el directorio para el socket y el puerto donde escuchar


pcp, pcp es el encargado de comprobar el estado de los nodos, tambin
puede realizar mas funciones como por ejemplo replicar la Base de datos
de un nodo a otro.

24
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Cambiamos tambien el directorio donde se va a almacenar el pid de


pgpool ya que su directorio por defecto es /var/run/pgpool y desaparece
con cada reinicio del sistema.

Configuramos los backends, tendremos que incluir estas lneas tantas


veces como nodos tengamos.(En este caso 2).

El parmetro backend_data_directory no hace falta que se lo indiquemos.

Ahora podremos configurar pgpool de los siguientes modos:

1. Modo replicacin:

Este modo proporciona como su propio nombre indica replicacin


en las base de datos. Este modo solamente resulta til cuando
configuramos los nodos que contienen el sistema gestor como
maestro-maestro.(Posteriormente indicar como se hace).

25
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

2. Modo master-eslave:

Este modo no es compatible con el modo anterior, por tanto si


activamos este modo el modo replicacin lo tenemos que tener
desactiva.
Este modo no proporciona replicacin ya que deberemos configurar
los nodos que contienen el sistema gestor como maestro-esclavo y
ellos se encargaran de hacer la replicacin.

Yo he optado por el modo replicacin ya que la replicacin la realiza


pgpool y adems de la otra forma si el nodo maestro no est operativo
solo podremos realizar transacciones de solo lectura. (Es una de sus
desventajas).

Por tanto activamos el modo replicacin.

Otra funcin muy til es la de balanceador de carga, este parmetro


proporcionar a nuestro sistema un reparto de las conexiones entre los
nodos que tengamos.

26
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Confiramos los parmetros de chequeo de vida de los nodos.

health_check_period > 0

Si este parmetro se configura a 0 no se chequear y por tanto si un nodo


se pierde pgpool no tendr constancia de ello.

healt_check_user: Este usuario debe de ser propio de la base de datos y


adems estar en pcp.conf.

Por ultimo aadiremos el usuario que queremos que efectue la replicacin


en los nodos. Para ello utilizaremos el comando pcp_md5 y el archivo
pcp.conf.

Sintasis del comando:

Pcp_md5 [contrasea a encriptar]

El resultado de la ejecucin lo copiamos y pegamos al final del archivo


pcp.conf junto con el nombre del usuario y nos tendr que quedar una
lnea pareca a esta.

27
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Como configurar los modos para que acepten la replicacin por parte de
pgpool?

postgresql.conf:

Configuracin simple:

Habilitamos el envio de registros wal.

Indicamos que solo se le enviar a un equipo en el mismo momento, un


solo proceso en el mismo instante.

Habilitamos el recibo de registros wal.

pg_hba.conf:

aqu aadiremos el equipo/os y usuario que queremos que efectue la


replicacin, de la siguiente forma.

De esta manera ya tenemos nuestros dos nodos replicndose la base de


datos, con un balanceo de carga para no saturar a ninguno de los dos.

28
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Prueba de replicacin:

Creamos una base de datos nueva y vemos como se replica a ambos


equipos. Yo utilizo un cliente para Windows que se llama pgAdmin III.

Nos conectamos al equipo intermediario al puerto 9999 o el que hayamos


indicado como puerto de pgpool y la creamos.

Ahora comprobamos que se ha creado en ambos nodos.

29
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Y si el equipo que contiene el midware sufre un percance?

Nuestro sistema se pierde completamente.

Tercera solucin.

La tercera solucin se basa en utilizar la misma base de la segunda


solucin pero adems implementarle una alta disponibilidad a este
midware.

Desarrollo de la tercera implementacin.

Como ya dije anteriormente Pgpool a partir de la versin 3.3.0 ya


incorpora la posibilidad de realizar una alta disponibilidad a estos nodos
sin tener que utilizar otro software.

Antes de hacer esta ltima implementacin necesitamos al menos


disponer de otro equipo con las mismas caracterizas a ser posible,
instalarle pgpool y configurarlo como en la solucin nmero 2.

Por supuesto el siguiente equipo se tiene que configurar en la misma red y


con diferente IP claro est.

30
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Configuracin de pgpool para realizar la alta


disponibilidad.

Ambos equipos debern tener la misma configuracin quitando las


configuraciones de IP que debern de configurarse segn en el equipo que
realicemos la configuracin.

Pgpool utiliza un servicio llamado watchdog que es el encargado de


comprobar si existe conexin a la base de datos de los otros nodos y
tambien utiliza un servicio llamado heartbeat que es el encargado de
comprobar el latido del otro equipo.(Ambos estn implementado con la
instalacin de pgpool-II 3.3.0).

Configuracin bsica para watchdog y hearbeat.

pgpool.conf:

Habilitamos watchdog:

Configuramos la IP virtual

31
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

El usuario de chequeo:

Especificamos el intervalo de chequeo de vida de los equipos.

Lo siguiente lo configuramos segn estemos en un equipo u otro.

Configuramos el heartbeat

Indicamos el equipo donde ir destinado el latido del equipo y el puerto


que estamos configurando.

32
Implantacin de una base de datos distribuida PostgreSQL y con funciones de alta
disponibilidad

Por ltimo y MUY IMPORTANTE deberemos mapear los equipos en un


servidor DNS o bien aadirlos al archivo hosts, ya que pgpool al realizar la
primera conexin las siguientes conexiones las realiza por nombre de
hosts.

Con esto ya estar todo listo y seguro nuestro sistema final.

Cuando se pierde un nodo (de los que contienen el sistema gestor) y se


vuelve a recuperar, pgpool no se entera de ello, tenemos que hacrselo
saber de la siguiente forma y comando.

Sintaxis del comando:

Pcp_attach_node [tiempo] equipo puerto usuario contrasea id_nodo

Parada y Arranque de pgpool-II

Arranque:

Modo demonio(muestra el log por pantalla): pgpool n &


Modo depuracin(muestra la configuracin del archivo): pgpool d
Modo silencioso(si no queremos saber lo que suceda): pgpool

Parada

Modo normal: pgpool stop


Modo rpido: pgpool m fast
Modo inmediato: pgpool m inmediate

33

You might also like