Administración clústeres mediante repmgr

From PostgreSQL wiki

(Difference between revisions)
Jump to: navigation, search
 
Line 27: Line 27:
 
(6) Creación de las llaves de intercambio:
 
(6) Creación de las llaves de intercambio:
  
-- Para Nodo1
+
-- Para Nodo1
$ su postgres
+
+
$ ssh-keygen -t rsa
+
  
--Para Nodo2
+
  $ su postgres
 +
  $ ssh-keygen -t rsa
  
$ su postgres
+
--Para Nodo2
+
$ ssh-keygen -t rsa
+
  
$ cp /var/lib/postgresql/.ssh/id_rsa.pub /home/gilbertoc/postgres/.ssh/authorized_keys
+
  $ su postgres
$ cp /home/gilbertoc/postgres/.ssh/id_rsa.pub /var/lib/postgresql/.ssh/authorized_keys
+
  $ ssh-keygen -t rsa
  
$ ssh localhost  
+
--Copiar llaves entre ambos nodos
$ ssh localhost -l postgres
+
 
 +
  $ cp /var/lib/postgresql/.ssh/id_rsa.pub /home/gilbertoc/postgres/.ssh/authorized_keys
 +
  $ cp /home/gilbertoc/postgres/.ssh/id_rsa.pub /var/lib/postgresql/.ssh/authorized_keys
 +
 
 +
--Prueba de funcionamiento de las llaves
 +
 
 +
  $ ssh localhost  
 +
  $ ssh localhost -l postgres
  
 
(7) Configuración del postgresql.conf del Nodo1:
 
(7) Configuración del postgresql.conf del Nodo1:
  
 
     listen_addresses = '*'
 
     listen_addresses = '*'
 
 
     wal_level = hot_standby
 
     wal_level = hot_standby
 
 
     checkpoint_segments=30
 
     checkpoint_segments=30
 
 
     archive_mode=on
 
     archive_mode=on
 
 
     archive_command='cd .'
 
     archive_command='cd .'
 
 
     max_wal_senders=10
 
     max_wal_senders=10
 
 
     wal_keep_segments=5000
 
     wal_keep_segments=5000
  
Line 67: Line 64:
  
 
     host all        all 127.0.0.1/32 trust
 
     host all        all 127.0.0.1/32 trust
 
 
     host replication all 127.0.0.1/32 trust
 
     host replication all 127.0.0.1/32 trust
  
 
(10) Crea en fichero /var/lib/pgsql/repmgr/repmgr.conf en el Nodo1:
 
(10) Crea en fichero /var/lib/pgsql/repmgr/repmgr.conf en el Nodo1:
  
cluster=test
+
  cluster=test
node=1
+
  node=1
conninfo='host=127.0.0.1 dbname=test'
+
  conninfo='host=127.0.0.1 dbname=test'
  
 
(11) Vaciar el dirctorio de datos del nodo2:
 
(11) Vaciar el dirctorio de datos del nodo2:
Line 87: Line 83:
 
(13) Crear repmgr.conf en el Nodo2:
 
(13) Crear repmgr.conf en el Nodo2:
  
cluster=test
+
  cluster=test
node=2
+
  node=2
conninfo='host=localhost port=5433 user=postgres dbname=test'
+
  conninfo='host=localhost port=5433 user=postgres dbname=test'
  
  
 
(14) Crear recovery.conf en el Nodo2:
 
(14) Crear recovery.conf en el Nodo2:
  
standby_mode = 'on'
+
  standby_mode = 'on'
primary_conninfo = 'port=5432 host=localhost user=postgres'
+
  primary_conninfo = 'port=5432 host=localhost user=postgres'
  
 
(15) Iniciar Nodo2:
 
(15) Iniciar Nodo2:

Latest revision as of 18:44, 14 November 2013

Pondrémos a su disposición un ejemplo de como utilizar repmgr para que entienda su funcionamiento. Este ejemplo es para uso académico.

Requisitos de instalación:


Instalar (ubuntu): libxslt1-dev, libedit-dev, libpam0g-dev, postgresql-server-dev-9.1


Instalación de repmgr


(1) Bajar el código fuente de repmgr desde http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz

(2) Copiar y descomprimir en /tmp.

(3) Compilar

make USE_PGXS=1

(4) Instalar

make USE_PGXS=1 install

(5) Ver versión de repmgr

repmgr --version
repmgrd --version


(6) Creación de las llaves de intercambio:

-- Para Nodo1

 $ su postgres
 $ ssh-keygen -t rsa 

--Para Nodo2

 $ su postgres
 $ ssh-keygen -t rsa

--Copiar llaves entre ambos nodos

 $ cp /var/lib/postgresql/.ssh/id_rsa.pub /home/gilbertoc/postgres/.ssh/authorized_keys
 $ cp /home/gilbertoc/postgres/.ssh/id_rsa.pub /var/lib/postgresql/.ssh/authorized_keys

--Prueba de funcionamiento de las llaves

 $ ssh localhost 
 $ ssh localhost -l postgres

(7) Configuración del postgresql.conf del Nodo1:

   listen_addresses = '*'
   wal_level = hot_standby
   checkpoint_segments=30
   archive_mode=on
   archive_command='cd .'
   max_wal_senders=10
   wal_keep_segments=5000

(8) Configuración del postgresql.conf del Nodo2:

   hot_standby=on

(9) Configuración del pg_hba.conf del Nodo1 y Nodo2:

   host all         all 127.0.0.1/32 trust
   host replication all 127.0.0.1/32 trust

(10) Crea en fichero /var/lib/pgsql/repmgr/repmgr.conf en el Nodo1:

 cluster=test
 node=1
 conninfo='host=127.0.0.1 dbname=test'

(11) Vaciar el dirctorio de datos del nodo2:

cd /home/gilbertoc/postgres/mycluster2
rm -rf *

(12) Clonar el Nodo2:

$ repmgr -D /home/gilbertoc/postgres/mycluster2 -f /etc/PostgreSQL/9.1/main/repmgr.conf  -d test -p 5432 -U postgres -R postgres standby clone localhost --verbose

(13) Crear repmgr.conf en el Nodo2:

 cluster=test
 node=2
 conninfo='host=localhost port=5433 user=postgres dbname=test'


(14) Crear recovery.conf en el Nodo2:

 standby_mode = 'on'
 primary_conninfo = 'port=5432 host=localhost user=postgres'

(15) Iniciar Nodo2:

$ pg_ctl -D /home/gilbertoc/postgres/mycluster2 -l logfile start

(16) Registrar ambos nodos:

repmgr -f /home/prime/repmgr/repmgr.conf --verbose master register
repmgr -f /home/standby/repmgr/repmgr.conf --verbose standby register

(17) Pruebas de los Nodos:

--En el Nodo2:


psql -h localhost -p 5434 -d test
 insert into mitabla (id, nombre) values (4,  'Martinez');
 *--ERROR:  cannot execute INSERT in a read-only transaction

--En el Nodo1:


 psql -h localhost -p 5432 -d test
 insert into mitabla (id, nombre) values (4,  'Martinez');
Personal tools