UNIVERSIDAD DE EL SALVADOR. FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE. DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURA. INGENIERÍA DE SISTEMAS INFORMÁTICOS.

CÁTEDRA: BASE DE DATOS. TEMA DEL PROYECTO: “REPLICACIÓN DE BASES DE DATOS EN POSTGRESQL UTLIZANDO PGPOOL-II”.

CATEDRÁTICO: Ing. Ernesto Alexander Calderón Peraza. PRESENTADO POR: Chacón Linares, Franco Eder. Cruz Salazar, José Manuel. Figueroa Jiménez, Carlos Enrique. Reinoza Arocha, Giovanni Ernesto.

CICLO: I – 2010. LUGAR Y FECHA DE PRESENTACIÓN: Santa Ana, 14 de Junio de 2010.

ÍNDICE

ÍNDICE ................................................................................................................................. II REQUISITOS DEL PROYECTO ...................................................................................... 3 SERVIDORES. .................................................................................................................... 3 ADMINISTRADOR Y USUARIOS FINALES. .................................................................... 3 SISTEMA OPERATIVO ..................................................................................................... 4 DEBIAN GNU / LINUX. ..................................................................................................... 4 INTRODUCCIÓN............................................................................................................... 4 PRIMEROS PASOS. ........................................................................................................... 4 IDENTIFICACIÓN DEL EQUIPO. ................................................................................... 5 PARTICIONAMIENTO. ..................................................................................................... 5 ADMINISTRACIÓN DE USUARIOS. ................................................................................ 6 EL SISTEMA BASE. ........................................................................................................... 6 CONFIGURACIONES Y ACTUALIZACIONES ............................................................ 7 CONFIGURACIÓN DE LA RED. ...................................................................................... 8 ACTUALIZAR NUESTRO SISTEMA BASE. .................................................................... 10 POSTGRESQL ................................................................................................................... 11 INSTALACIÓN. ................................................................................................................ 12 PGPOOL–II ........................................................................................................................ 12 INSTALACIÓN. ................................................................................................................ 13 ARCHIVOS DE CONFIGURACIÓN .............................................................................. 14 PGPOOL-II. ..................................................................................................................... 14 POSTGRESQL. ................................................................................................................. 16 GALERÍA DE IMÁGENES .............................................................................................. 18 DEBIAN GNU / LINUX. ................................................................................................... 18 FUENTES DE CONSULTA .............................................................................................. 27

II

REQUISITOS DEL PROYECTO

A continuación se presentan los requisitos de hardware para la correcta implementación de PostgreSQL con Pgpool-II, tanto para los equipos a utilizar como servidores de base de datos como también para los equipos utilizados por los usuarios finales que utilicen alguna aplicación para conectarse al servidor.

SERVIDORES. Evaluación y Pruebas. Procesador Intel/AMD de 32-bit ó 64-bit a 1.5 GHz. 1 GB RAM. 5 GB de espacio libre en disco para el software y los registros. Entornos de Producción. Procesador Intel/AMD de 32-bit ó 64-bit a 2.0 GHz. Para una implementación grande (más de 2000 clientes) se recomienda utilizar arquitectura de 64-bit (hardware y software). De 2 a 4 GB de RAM. 10 GB de espacio libre en disco para el software y los registros. Además se recomienda el uso de discos S-ATA o SCSI para mejorar el desempeño y una implementación de respaldo en RAID para proporcionar redundancia. Requisitos Generales. Espacio libre para archivos de compaginación de bitácora, además en medios de producción espacio suficiente para almacenamiento (hasta más de un Terabyte). Memoria 2 Megabytes por conexión. Sistema base sin entorno gráfico para proporcionar un mayor desempeño. Como mínimo tres servidores replicándose información en redes distintas, pero, para propósitos de enseñanza, toda la implementación que se describe en este manual se realizará en el mismo segmento de red. Requisitos Misceláneos. Los equipos servidores deberían estar configurados para ejecutar “NTP” (Network Time Protocol) regularmente de forma automática.

ADMINISTRADOR Y USUARIOS FINALES. Requisitos Mínimos. 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 Mínimas Verificadas de SO y aplicaciones clientes de Base de Datos. Idealmente la mayoría de Sistemas Operativos y aplicaciones que soporten conexiones a servidores de bases de datos deberían de funcionar. Resolución Mínima de Monitor. 800 x 600 píxeles. Velocidad Mínima de Conexión a Internet. 128 kbps.

3

SISTEMA OPERATIVO

DEBIAN GNU / LINUX. Este será el SO utilizado para llevar a cabo la implementación de nuestro proyecto, más específicamente la actual (hasta el momento de la redacción de este artículo) versión “Estable” 5.0 (de nombre código “Lenny”). Por lo cual necesitamos un disco de instalación 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/; además de una conexión a Internet de Banda Ancha para las actualizaciones del SO. INTRODUCCIÓN. En este tutorial se utilizarán tres equipos, un servidor y dos clientes, vale aclarar también que, para propósitos de enseñanza, se utilizarán como nombres de equipo (hostname) “deb” seguido de algún número (es decir deb1, deb2 y deb3). Además del nombre de dominio que según el estándar 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 más cómodas al usuario a la hora de la implementación del proyecto. PRIMEROS PASOS. El siguiente apartado indica los pasos básicos a seguir para la correcta instalación del sistema operativo utilizado, pero lamentablemente al momento de la realización del presente manual sólo se tenía a disposición una versión anterior del mismo (Debian 4.0 “Etch”); afortunadamente el proceso de instalación se ha mantenido idéntico en ambas versiones, por lo que igualmente los pasos a continuación aún son válidos. Inserte el disco de instalación 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 Galería de Imágenes 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 instalación del SO. El proceso de instalación comenzará, y como primer punto le pedirá que seleccione un lenguaje en el que se le mostrarán los menús y las opciones de la instalación (Figura 4). Después le preguntará acerca de su ubicación geográfica actual (Figura 5). Y posteriormente acerca de la distribución de su teclado (Figura 6).

4

El instalador procederá a revisar el disco de instalación, el hardware encontrado en el equipo y configurará la red con DHCP de encontrar una conexión que conecte a un servidor DHCP en la red. Ver las Figuras 7 a 12. IDENTIFICACIÓN DEL EQUIPO. A continuación, se le pedirá que ingrese un nombre para el equipo (hostname) como lo muestra la Figura 13. Para esta implementación, el servidor de base de datos será nombrado como “deb2.bdd.edu”, mientras que los clientes serán “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 implementación se introduce “bdd.edu” (Figura 14). No debe preocuparse si decide cambiar el nombre del equipo o del dominio después, ya que dicha acción también 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 había configurado anteriormente. Ver la Figura 15. PARTICIONAMIENTO. Ahora usted tendrá que particionar su disco duro (Figura 16). En este paso, hay que prestar atención especial al crear una partición que posea el espacio libre suficiente para cumplir los requisitos mínimos para la correcta instalación de todos los paquetes necesarios para la implementación de nuestro proyecto; si lo desea puede revisar el apartado referente a los Requisitos del Proyecto, en las Páginas 4 y 5 del presente manual. Por el bien de mantener lo más simple posible la explicación de este punto se procederá a crear una sola partición (con el punto de montaje “/”) y una pequeña partición para utilizar como “Área de Intercambio” (Swap), así que se procede a seleccionar la opción de Método de Particionado “Guiado - Utilizar Todo el Disco” (Figura 17). Por supuesto, la opción seleccionada de particionado es una elección completamente del usuario, así que si lo desea puede crear más 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). Después seleccione el esquema de particionamiento. Por motivos de simplicidad, como se mencionó anteriormente, para este ejemplo se seleccionó colocar “Todos los Ficheros en una Partición (Recomendado para Novatos)” tal y como lo muestra la Figura 19. Queda a decisión y gusto del usuario que opción 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). 5

Después de un rato, sus nuevas particiones están creadas y formateadas (Figura 23). A continuación, el programa de instalación procederá a configurar el reloj del equipo en base a la región geográfica seleccionada en un principio (Figura 24). ADMINISTRACIÓN DE USUARIOS. A continuación se le preguntará por una contraseña para el “Súper Usuario” (root). Y una confirmación de la contraseña anterior para evitar errores de escritura (Figuras 25 y 26). Cree una cuenta de “Usuario Normal”, por ejemplo un usuario “Administrador” (real user’s name, ver Figura 27) con el nombre de usuario “administrador” (username, ver Figura 28), el cual sólo debe estar conformado por números y letras minúsculas (el primer carácter sólo puede ser una letra minúscula). Tenga en cuenta que el nombre de usuario “admin” es un nombre reservado en Debian y, como anteriormente en el proceso de particionado, la selección del username en este paso queda a elección del usuario, en esta implementación se crean usuarios “deb” más un número que haga referencia a cada uno de los equipos utilizados; por ejemplo el equipo “deb1” poseerá un usuario “deb1”. A continuación se le preguntará por una contraseña para el usuario recién creado, al igual que una confirmación de la contraseña anterior para evitar errores de escritura (Figuras 29 y 30). EL SISTEMA BASE. A continuación 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 instalación, este contiene sólo un conjunto reducido de paquetes, o en su defecto unas versiones no actualizadas de los mismos. Por lo anterior se recomienda utilizar una réplica de red, tal y como lo muestra la Figura 34. Seleccione el país donde se encuentre la réplica que utilizará (normalmente el país donde se encuentra es una opción razonable). Entonces seleccione la réplica de red que quiera utilizar; por ejemplo “ftp.es.debian.org”, que es el repositorio (sinónimo de réplica o “mirror”) primario de Debian en España. Cabe destacar que en este paso dejamos dos posibles selecciones de réplicas a manera de ejemplos; las cuales pueden ser revisadas observando las Figuras 35 y 36 para España, 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 opción de “Continuar” (Figura 39). 6

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

Después 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 elección del usuario elegir el participar o no (Figura 43). Para la finalización satisfactoria de nuestra implementación de un servidor de correo electrónico necesitamos un Servidor de Base de Datos (obvio), opcionalmente un Servidor DNS y/o DHCP, el Sistema Estándar y los paquetes para una Computadora Portátil (esto sólo si se va a llevar a cabo la implementación en una laptop). Ahora bien, sólo seleccionaremos el software necesario (Sistema Estándar y Computadora Portátil de ser necesario) y se procederá a instalar los paquetes que necesitamos manualmente más adelante para tener un control total sobre el software que se instalará en el sistema. Por el momento sólo seleccionaremos lo realmente necesario y seleccionaremos “Continuar”. Revisar las Figuras 42, 44 y 45. Los paquetes seleccionados están siendo ahora instalados en el sistema. Este paso puede demorar algo de tiempo dependiendo de las características del equipo y de la cantidad de actualizaciones disponibles, así como de la velocidad de la conexión a Internet que se posea (Figuras 46 y 47). Después de finalizada la instalación 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 instalación de nuestro sistema base está ahora terminada. Proceda a retirar el disco de instalación de la bandeja de la unidad de lectura y seleccione “Continuar” para reiniciar el equipo (Figuras 51 a 53). Si la instalación 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 búsqueda se mostró en la Figura 48).

CONFIGURACIONES Y ACTUALIZACIONES

Antes de pasar a la configuración propia de la red, hay que tomar en cuenta que la mayoría de comandos que utilizaremos a continuación solo pueden ejecutarse si se poseen privilegios de Súper Usuario, así que procedemos a cambiar de cuenta ejecutando:

7

su

Y a continuación introducimos la contraseña que le fue asignada a dicha cuenta al momento de la instalación del Sistema. Inmediatamente después de ingresar correctamente la contraseña, el carácter final del cursor del PROMPT cambiará de “$” a “#”, con lo que se nos indicará el cambio exitoso de cuenta. CONFIGURACIÓN 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 configuración, esto debido a que se supone que un servidor debería poseer una dirección IP estática o fija. Recordemos que para esta implementación se utilizará la dirección 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 dirección 192.168.1.1; las direcciones IP utilizadas dependerán también de cada implementación final. A continuación, se procederán a mostrar los archivos de configuración 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 quedaría 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...

8

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

Préstese un especial cuidado al reemplazo de la línea allow-hotplug eth0 por auto eth0; ya que de lo contrario al momento de reiniciar los servicios de red estos no funcionarán, y se deberá de reiniciar el sistema completo. A continuación 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 dirección 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 dirección IP. La desventaja de hacer esto es que se debe mantener este archivo actualizado si la dirección 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 dirección (junto al nombre) de nuestros localhosts. Ahora ejecutamos:
echo deb2.bdd.edu > /etc/hostname

9

Y procedemos a reiniciar el sistema:
reboot

o mediante la orden shutdown -r now

Después ejecutamos:
hostname hostname -f

Y ambas órdenes deberían mostrarnos como respuesta deb2.bdd.edu, tomando en cuenta que el comando se ejecutó en deb2. Recuerde que en Debian puede volverse Súper Usuario o usuario “root” ejecutando la orden su e ingresando la contraseña que le fue proporcionada a dicha cuenta al momento de la instalación del SO. ACTUALIZAR NUESTRO SISTEMA BASE. Si poseemos una conexión a Internet, procedemos a editar el archivo /etc/apt/sources.list, el cual contiene la dirección de los repositorios utilizados por apt para la instalación y actualización de programas. Comentamos la referencia al disco de instalación y el resultado nos debería de quedar algo así:
nano /etc/apt/sources.list # # Disco de Instalación... # deb cdrom:[Debian GNU/Linux 20080217-11:31]/ etch contrib # deb cdrom:[Debian GNU/Linux 20080217-11:31]/ etch contrib

4.0 r3 _Etch_ - Official i386 DVD Binary-1 main 4.0 r3 _Etch_ - Official i386 DVD Binary-1 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 España... 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 ###############################################################

10

Si se necesita conocer la dirección de algún otro repositorio de paquetes, se puede consultar la página oficial de la lista de las réplicas de Debian (http://www.debian.org/mirror/list), y colocar dicha réplica dentro del archivo /etc/apt/sources.list, como ya se hizo anteriormente. Después 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 código abierto más avanzada del mundo. Distribuida bajo licencia BSD (del inglés, Berkeley Software Distribution), lleva más de 15 años desarrollándose y su arquitectura goza de una excelente reputación por su fiabilidad, integridad de datos y correctitud. PostgreSQL dispone de versiones para prácticamente todos los sistemas operativos y cumple totalmente con ACID (del inglés, Atomicity, Consistency, Isolation, Durability). Tiene soporte para claves extranjeras, joins, vistas, disparadores y procedimientos almacenados (en múltiples lenguajes de programación). Incluye la mayoría de los tipos de datos de SQL92 y SQL99 y, asimismo, soporta el almacenamiento de grandes objetos binarios, como imágenes, sonidos y vídeos. Tiene interfaces de programación nativas para C/C++, Java, .Net, Perl, PHP, Python, Ruby, Tcl y ODBC, entre otros, y una excepcional documentación. PostgreSQL ofrece sofisticadas características tales como control concurrente multiversión (MVCC), point in time recovery (PITR), tablespaces, replicación asíncrona, transacciones anidadas (savepoints), copias de seguridad en caliente/en línea, un sofisticado planificador/optimizador de consultas y write ahead logging para ser tolerante a fallos de hardware. Además, PostgreSQL soporta juegos de caracteres internacionales, codificaciones de caracteres multibyte, Unicode y realiza ordenaciones dependiendo de la configuración de idioma local, de la diferenciación de mayúsculas y minúsculas y del formato. Es altamente escalable tanto en la cantidad bruta de datos que puede manejar como en el número de usuarios concurrentes que puede atender. Hay sistemas activos en producción con PostgreSQL que manejan más de 4 terabytes de datos.

11

INSTALACIÓN. 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 versión 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 continuación, nos aparecerá un asistente para completar el proceso de instalación, seguimos los pasos que se nos presentan y no debería de presentarse ningún problema para instalar PostgreSQL. La instalación 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 ejecución a los archivos, por ejemplo, en caso de ser necesario aplicamos el siguiente comando como súper-usuario:
chmod +x postgresql-8.4.bin

Cabe destacar que el paquete instalador de PostgreSQL está incluído en los repositorios de Debian, pero lamentablemente sólo estaba disponible una versión anterior, la cual no contenía la funcionalidad necesaria para el correcto funcionamiento de nuestra implementación.

PGPOOL–II Pgpool-II se podría considerar como un “intérprete” que habla entre los extremos de frontend y backend de PostgreSQL, y pasa las conexiones entre ellos. De ese modo, una aplicación 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 aplicación de base de datos existente puede empezar a usarse con pgpool-II casi sin ningún cambio en su código fuente. Pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayoría de las arquitecturas UNIX. Windows no está soportado. Las versiones de PostgreSQL soportadas son de la 6.4 en adelante. Para usar la paralelización de consultas es necesaria la versión 7.4 o superior. Pgpool-II proporciona las siguientes características:  Limita el Excedente de Conexiones. PostgreSQL soporta un cierto número de conexiones concurrentes y rechaza las que superen dicha cifra. Aumentar el límite máximo de conexiones incrementa el consumo de recursos y afecta al rendimiento del sistema. pgpool-II tiene también un límite máximo de conexiones, pero las conexiones extras se mantienen en una cola en lugar de devolver un error inmediatamente.

12

 Agrupación de Conexiones. Pgpool-II mantiene abiertas las conexiones a los servidores PostgreSQL y las reutiliza siempre que se solicita una nueva conexión con las mismas propiedades (nombre de usuario, base de datos y versión del protocolo). Ello reduce la sobrecarga en las conexiones y mejora la productividad global del sistema.  Replicación. Pgpool-II puede gestionar múltiples servidores PostgreSQL. El uso de la función de replicación permite crear una copia en dos o más discos físicos, de modo que el servicio puede continuar sin parar los servidores en caso de fallo en algún disco.  Balanceo de Carga. Si se replica una base de datos, la ejecución de una consulta SELECT en cualquiera de los servidores devolverá el mismo resultado. pgpool-II se aprovecha de la característica de replicación para reducir la carga en cada uno de los servidores PostgreSQL distribuyendo las consultas SELECT entre los múltiples servidores, mejorando así la productividad global del sistema. En el mejor caso, el rendimiento mejora proporcionalmente al número de servidores PostgreSQL. El balanceo de carga funciona mejor en la situación en la cuál hay muchos usuarios ejecutando muchas consultas al mismo tiempo.  Consultas en Paralelo. Al usar la función de paralelización 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 ejecución. La paralelización de consultas es una solución adecuada para búsquedas de datos a gran escala. INSTALACIÓN. Un detalle a tomar muy en cuenta es que al momento de implementar este proyecto, se utilizó la versión 2.2.6 de Pgpool-II, así que en varios comandos debe de cambiarse el “2.2.6” por la versión utilizada por el usuario. Primeramente instalamos los prerrequisitos (dependencias) para una correcta instalación 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 mayoría de casos se descarga y se compila, que es el procedimiento presentado anteriormente.

13

ARCHIVOS DE CONFIGURACIÓN

PGPOOL-II. Con una

instalación exitosa procederemos a modificar los archivos y pgpool.conf.sample; para obtener estos archivos copie los archivos de ejemplo y renómbrelos:
pcp.conf.sample 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 contraseña en MD5 ejecutamos el archivo ejecutable que se encuentra en la siguiente ruta:
/opt/pgpool2/bin/pg_md5 <contraseña>

Y editamos el pcp.conf, para agregar la contraseña 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 # contraseña pgpool pgpool:ba777e4c2f15c11ea8ac3be7e0440aa0 ###############################################################

Editamos el pgpool.conf, de manera que nos quede lo más parecido posible a la configuración 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 load_balance_mode = true reset_query_list = 'ABORT; DISCARD ALL'

14

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 más opciones de configuración pero para este proyecto utilizaremos las puestas en este documento y el número de configuración “backend” aumentaría o disminuiría dependiendo del numero de servidores existentes a la hora de crear una nueva implementación. 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 mkdir chmod chmod /var/run/pgpool /var/run/postgresql –R 777 /var/run/pgpool –R 777 /var/run/postgresql

Procedemos ahora con la configuración 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 host all all 0.0.0.0/0 trust trust

###############################################################

15

La única configuración que cabe explicar es que por efectos didácticos se pone que acepte conexiones de cualquier dirección, no obstante este valor se puede cambiar a determinada red o porción de red, por motivos de seguridad. POSTGRESQL. Procedemos ahora con el archivo pg_hba.conf que se encuentra “/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

en

# "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 estándar 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 & sleep 3 ;;

16

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 súper-usuario del sistema y ejecutamos la siguiente instrucción:
update-rc.d <archivo> defaults

Y con este último archivo finalizamos nuestra configuración, luego solamente nos queda reiniciar el proceso de pgpool-II y comprobar nuestra implementación. Iniciando como súper-usuario:
su – postgres /opt/postgresql/8.4/bin/createdb –h [host] –p 9999 <nombre_base_de_datos>

Después de aplicar el comando anterior, debería de existir una base de datos idéntica (respaldada) en cada uno de los servidores configurados mediante los pasos vistos a lo largo de todo este documento.

17

GALERÍA DE IMÁGENES

DEBIAN GNU / LINUX. Figura 1: Menú de Secuencia de Arranque dentro de la BIOS.

Figura 2: Menú de Arranque. Figura 3: Inicio de la Instalación.

Figura 4: Selección del Lenguaje para el Proceso de Instalación. Figura 5: Selección del Área Geográfica.

18

Figura 6: Configuración del Teclado. Figura 7: Detección y Montaje de las Unidades de CD-ROM.

Figura 8: Análisis del Disco de Instalación. Figura 9: Carga de Componentes Adicionales para la Instalación.

Figura 10: Detección de los Dispositivos de Red. Figura 11: Configuración de la Red con DHCP (I).

Figura 12: Configuración de la Red con DHCP (II). Figura 13: Configuración del Nombre de Equipo. 19

Figura 14: Configuración del Nombre de Dominio. Figura 15: Detección de las Unidades de Almacenamiento y Dispositivos Restantes.

Figura 16: Inicio del Proceso de Particionado. Figura 17: Método de Particionado a Utilizar.

Figura 18: Selección de la Unidad de Disco a Particionar. Figura 19: Esquema de Particionado a Utilizar.

20

Figura 20: Cálculo de las Nuevas Particiones. Figura 21: Resumen del Particionado a Implementar.

Figura 22: Aplicar Particionado. Figura 23: Formateo de las Particiones Implementadas.

Figura 24: Configuración del Reloj. Figura 25: Clave del Súper Usuario (I).

21

Figura 26: Clave del Súper Usuario (II). Figura 27: Nombre Real del Nuevo Usuario.

Figura 28: Nombre de Usuario del Nuevo Usuario. Figura 29: Clave del Nuevo Usuario (I).

Figura 30: Clave del Nuevo Usuario (II). Figura 31: Instalación del Sistema Base (I).

22

Figura 32: Instalación del Sistema Base (II). Figura 33: Configuración de APT (Análisis del CD-ROM).

Figura 34: Configuración de Uso de una Réplica en Red. Figura 35: País de la Réplica (España).

Figura 36: Selección de la Réplica (España). Figura 37: País de la Réplica (El Salvador).

23

Figura 38: Selección de la Réplica (El Salvador). Figura 39: Configuración de Proxy HTTP.

Figura 40: Configuración de APT (Análisis de la Réplica Seleccionada). Figura 41: Configuración de APT (Análisis del Repositorio de Seguridad).

Figura 42: Selección de Programas (I). Figura 43: Configuración sobre Uso de Paquetes Populares.

24

Figura 44: Selección de Programas (II). Figura 45: Selección de Programas (III).

Figura 46: Instalación de Programas (I). Figura 47: Instalación de Programas (II).

Figura 48: Configuración del GRUB (I). Figura 49: Configuración del GRUB (II).

25

Figura 50: Instalación del GRUB. Figura 51: Fin de la Instalación.

Figura 52: Instalación Completa. Figura 53: Reiniciar el Nuevo Sistema.

Figura 54: GRUB.

26

FUENTES DE CONSULTA

Todas las fuentes a continuación citadas fueron consultadas por última vez a las 4:30 P.M. el 14 de Junio de 2010.  Dawson, Terry; Drake, Joshua; Rubini, Alessandro. Networking−HowTo (Previously the Net-3 HowTo). http://www.tldp.org/docs.html#howto.

(1999). Linux (Versión 1.5).

 Equipo del Instalador de Debian. (2007). Guía de Instalación 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. (Versión 5.0.1). http://www.debian.org/doc/ ó en http://tangosoft.com/refcard/.  Sabater, Jaume. (2008). Replicación 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.postgresqles.org/sobre_postgresql/.  WebMaster PostgreSQL-es. (2009). Replicación 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. http://pgpool.projects.postgresql.org/.

(2010).

¿What

is

PgPool-II?.

27

Sign up to vote on this title
UsefulNot useful