Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Cluster PostgreSQL 9 con Centos

Los sistemas de hoy en día requieren alta disponibilidad para poder sobrevivir a la competencia, en esto nos pueden ayudar los clusteres. Esta vez les mostrare como instalar y configurar un cluster PostgreSQL de 4 nodos con Centos. Todo el trabajo se realizara desde la cuenta root.

Requerimientos:
Centos 5.6
PostgreSQL 9.0.4

Servidores:
vepg1 - 192.168.1.37 - nodo
vepg2 - 192.168.1.38 - nodo
vepg3 - 192.168.1.39 - nodo
vepg4 - 192.168.1.40 - nodo
vepgp - 192.168.1.41 - manejador de cluster

-Instalamos, actualizamos y configuramos los 5 servers Centos 5.6
-Activar localtime en todos los servers ya que deben tener la misma hora

-Cambios en vepgp

-Descargamos e instalamos pgpool
wget -c ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/i386/pgpool-II-3.0.4-1.el5.pp.i386.rpm
wget -c ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/i386/pgpool-II-libs-3.0.4-1.el5.pp.i386.rpm

rpm -vi pgpool-II-libs-3.0.4-1.el5.pp.i386.rpm
rpm -vi pgpool-II-3.0.4-1.el5.pp.i386.rpm

rpm -qa|grep pgpool
pgpool-II-3.0.4-1.el5.pp
pgpool-II-libs-3.0.4-1.el5.pp

-Modificamos el file hosts del server vepgp
vi /etc/hosts
::1 localhost.localdomain localhost
127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
192.168.1.41    vepgp.hyettemail.com    vepgp
192.168.1.37    vepg1.hyettemail.com    vepg1
192.168.1.38    vepg2.hyettemail.com    vepg2
192.168.1.39    vepg3.hyettemail.com    vepg3
192.168.1.40    vepg4.hyettemail.com    vepg4

-Copiamos el conf de replicacion
cd /etc/pgpool-II
cp pgpool.conf.sample-replication pgpool.conf

-Lo modificamos
vi pgpool.conf
listen_addresses = '*'
backend_hostname0 = 'vepg1'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/data'
backend_hostname1 = 'vepg2'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/data'
backend_hostname0 = 'vepg3'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/data'
backend_hostname1 = 'vepg4'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/data'

Salimos guardando y lo ejecutamos

service pgpool start

-Hacemos algunos cambios
touch /tmp/pgpool_status
chown postgres.postgres /tmp/pgpool_status
touch pool_passwd
chown postgres.postgres pool_passwd

-Descargamos pgpoolAdmin y lo descomprimimos en /var/www/html. En mi caso lo descomprimo en /var/www/html/pgpadm/

wget -c http://pgfoundry.org/frs/download.php/2964/pgpoolAdmin-3.0.3.tar.gz
chown -R apache.apache /var/www/html/pgpadm/

-Creamos un password en MD5

pg_md5 passworddeprueba
vi /etc/pgpool-II/pcp.conf
user:72b5d515911cc4e30d4696e333573727

-Instalamos php
yum install php-cli php-mbstring php-pdo php php-pgsql php-gd php-soap php-mysql php-pear php-common php-devel

-Damos restart al httpd
service httpd restart

-Apuntamos con un browser a http://192.168.1.41/pgpadm/install/phpinfo.php y verificamos que Multibyte Support y PostgreSQL Support estan Enabled

-Cambiamos permisos
chmod 777 /var/www/html/pgpadm/templates_c/
chown apache /etc/pgpool-II/pgpool.conf
chmod 644 /etc/pgpool-II/pgpool.conf
chown apache /etc/pgpool-II/pcp.conf
chmod 644 /etc/pgpool-II/pcp.conf
chown apache /etc/pgpool-II

-Ejecutamos el instalador en http://192.168.1.41/pgpadm/install/index.php

-Eliminamos el instalador despues de terminar de instalar
rm -Rf /var/www/html/pgpadm/install

-Cambios en nodos
-Excluimos los rpm de postgresql para que solo se instalen de PGDG

 cd /etc/yum.repos.d/
 vi CentOS-Base.repo

agregamos a  [base] y [updates]
exclude=postgresql*

Salimos guardando

-Instalamos el rpm del repositorio yum
wget -c http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
rpm -vi pgdg-centos-9.0-2.noarch.rpm

yum install postgresql90-server postgresql90-plperl postgresql90-contrib compat-postgresql-libs postgresql90-odbc-debuginfo postgresql90-debuginfo postgresql90-libs postgresql90-test postgresql90-plpython postgresql90-devel postgresql90-odbc postgresql90-docs postgresql90 postgresql90-pltcl

Si nos da error:
Transaction Check Error:
  file /usr/lib/libpq.so.4.1 from install of compat-postgresql-libs-4-1PGDG.rhel5.i686 conflicts with file from package postgresql-libs-8.1.23-1.el5_6.1.i386

rpm -e --nodeps postgresql-libs

-Iniciamos posgresql en los 4 nodos
service postgresql-9.0 initdb

-Modificamos los conf para permitir conexiones desde el manejador
vi pg_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 trust

vi postgresql.conf
listen_addresses = '*'
port = 5432

-Iniciamos el servicio de postgresql
service postgresql-9.0 start

-Creamos una db de pruebas para verificar este funcionando el cluster. Desde cualquiera de los nodos ejecutamos.

createdb -h 192.168.1.41 -p 9999 -U postgres --no-password dbtest

Si cae en el prompt sin dar ningun mensaje es que ya creo la db perfecto y el pgpool ejecuto la orden en todos los nodos creando la db replicada.





Con esto finalizamos, espero les sirva




Share/Bookmark