Cluster Linux y PostgreSQL

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
Amigazos todos.

Me tiraron un desafío :zippy, así que estoy montando en un pequeño lab para probar el método de réplica más eficiente para una BD PostgreSQL. Cabe mencionar que esta BD estará montada en un clúster en Linux con Centos7/RHEL7, mostrando el servicio en una IP Virtual y con alta disponibilidad.

DRBD parece que es LA opción en caso de clústeres de alta disponibilidad.

Ahora viene la pregunta. Ustedes, amigos capa9veros que usan la BD del elefante.

Qué sistema de replicación tienen?
Consideran seguro DRBD por sobre un sistema de réplica en base a log transaccional?

Soy medio neófito en este asunto, pero aprendo rapido. Espíritu capa9vero :zippy
 

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.279
por lo menos la replicacion DRBD te sirve para tener un Raid 1 por red entre 2 sistemas, pero normalmente es util si quieres tener un clon igual al primero en caso de que se caiga la maquina completa, y el secundario queda como pasivo sin poder usar los datos o visualizar las db en la particion que se esta sincronizando, por lo que si el cluster puede tener mas de 2 maquinas (3 o mas), podria considerar clonar el primario, y ademas tener otro que tenga una replicacion con los log transaccionales
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
por lo menos la replicacion DRBD te sirve para tener un Raid 1 por red entre 2 sistemas, pero normalmente es util si quieres tener un clon igual al primero en caso de que se caiga la maquina completa, y el secundario queda como pasivo sin poder usar los datos o visualizar las db en la particion que se esta sincronizando, por lo que si el cluster puede tener mas de 2 maquinas (3 o mas), podria considerar clonar el primario, y ademas tener otro que tenga una replicacion con los log transaccionales
En este caso, la idea que tengo es de sólo 2 nodos (presupuesto).
Un nodo activo A corriendo PostgreSQL, si llegase a morir, que la replicación DRBD haya hecho su pega manteniendo una imágen viva del disco replicado en nodo B, que pueda migrarse a primario, asumiendo el rol y utilizando la replicación de DRBD (que sería /var/lib/pgsql) y pueda continuar entregando el servicio sin pormenores. :zippy
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.769
Hay que invocar al vikingo @unreal4u , que ha trabajado duro con Postgres.

Tienes entonces una solución de dos servidores que forman un cluster de linux, no? Es decir, ¿dos servidores que forman un único sistema operativo y sobre él hay una única instalación de Postgres?

¿Luego quieres generar una replicación transaccional de base de datos, no? Es decir, un servidor con un sistema operativo distinto y una instalación Postgresql distinta que vaya recibiendo "cambios" del origen y los vaya aplicando.

Voy a leer algo. No cacho de postgres al detalle pero entiendo los conceptos de replicación de base de datos.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
Tienes entonces una solución de dos servidores que forman un cluster de linux, no? Es decir, ¿dos servidores que forman un único sistema operativo y sobre él hay una única instalación de Postgres?
No. Osea sí :zippysconf

Son 2 servidores (nodo01 y nodo02) identicos en hardware y sistema, que corren pacemaker para clusterizar servicios y que éstos trabajen como clúster.
Entonces tengo

nodo01......................nodo02
DRBD........................DRBD

Estos trabajan en modo failover, por lo que hay 1 nodo activo (nodo01) que mantiene los servicios arriba, y está el otro nodo.. el standby (nodo02) que tiene los mismos servicios, pero está en modo espera, en caso de que el nodo01 decida lanzarse (a lo Jefferson).
Entonces lo que hace DRBD es mantener sincronizada a nivel de bloques la información de X particion (/var/lib/pgsql) desde el nodo01 (primario) al nodo02 (standby).

¿Luego quieres generar una replicación transaccional de base de datos, no? Es decir, un servidor con un sistema operativo distinto y una instalación Postgresql distinta que vaya recibiendo "cambios" del origen y los vaya aplicando.
Mi pregunta iba más a qué tipo de sistema es más eficiente para mantener una replicacion de los datos

http://www.postgresql.org/docs/9.4/...ation-solutions.html#HIGH-AVAILABILITY-MATRIX
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.769
Mi pregunta iba más a qué tipo de sistema es más eficiente para mantener una replicacion de los datos

http://www.postgresql.org/docs/9.4/...ation-solutions.html#HIGH-AVAILABILITY-MATRIX

Depende un poco de tus requerimientos de negocio.

¿Cuál es la pérdida máxima de datos que pueden tolerar?
¿Cuál es el tiempo máximo que pueden estar con el sistema abajo?
¿Te sería necesario que la base de datos destino esté también dando servicios para que tú la consultes, liberando recursos de la base de datos principal?
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
¿Cuál es la pérdida máxima de datos que pueden tolerar?
Ojalá Ninguna.
¿Cuál es el tiempo máximo que pueden estar con el sistema abajo?
Un par de minutos, asumo.
¿Te sería necesario que la base de datos destino esté también dando servicios para que tú la consultes, liberando recursos de la base de datos principal?
No necesariamente, no tendrá gran carga.

A todo esto, es para implementación de un DTE. El que está corriendo stand alone, actualmente tiene un moco de carga y cerca de 90 MB en BD. Más que nada es para pasar esa plataforma a una solución que permita tener disponibilidad en caso de que cague un nodo.

Saludos don Zuljin :idolo
 
Upvote 0

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.277
No le tengo mucha confianza a DRBD para este caso, encuentro que el sistema de recuperación (en caso de que falle mas de un nodo) le falta para ser "solido como roca".
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
No le tengo mucha confianza a DRBD para este caso, encuentro que el sistema de recuperación (en caso de que falle mas de un nodo) le falta para ser "solido como roca".
Claro, pero viendo la malla y la $ no quieren soltar mas recursos para habilitar 3 máquinas en el clúster de BD,
A esto le sumamos que se realizan respaldos diarios de / y de /var/lib/pgsql en dataprotector así que en cierta manera se pueden reconstruir ambos nodos en caso de que caguen. Estilo Hiroshima en santiago :zippy
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.769
Ya, estoy leyendo y en mi opinión el método más seguro es Transaction Log Shipping. Esto lo hace directamente la base de datos enviando los cambios que se realizaron en el origen.

Igual lo estoy tirando en el aire, nunca he probado estas replicaciones en Postgres así que no tengo experiencia.
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.468
pta los voi a decepcionar: no llegué a tanto con pgsql, pero el otro día leyendo sobre MySQL di con ProxySQL (10 SEGUNDOS de downtime + cambiar un slave por master si caga el master), y di con pg-pool II: http://www.pgpool.net/mediawiki/index.php/Main_Page que parece hacer la misma pega.

Sin embargo, no he trabajado con él así que ni idea...

Más info acá y acá.

Saludos.
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.279
El otro día cschureando paquetes en debían 8 pille uno que hablaba de gestionar aincronizacion de máster a máster en mysql, pero aún no e tenido tiempo para cachurear

Enviado desde mi XT1058 mediante Tapatalk
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.468
hay hartas herramientas, Orchestrator o Percona lo hacen realmente simple.

Saludos.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
:zippyte

Me quedo con DRBD, un par de días en prueba y ver si opera bien. Sino me voy con WAL :zippy
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.279
:zippyte

Me quedo con DRBD, un par de días en prueba y ver si opera bien. Sino me voy con WAL :zippy
consulta consultona: la sincronizacion de DRBD la correras sobre la misma interface de red que recibira las consultas a la DB ?
o los equipos tienen mas de una y sincronizaras de forma directa entre ellos con interfaces dedicadas ?

un split-brain en DRBD con muchas diferencias te podria obligar a hacer una full sincronizacion, y aunque el disco este vacio, te va a copiar todos los bloques de la partición :lezippy3
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
consulta consultona: la sincronizacion de DRBD la correras sobre la misma interface de red que recibira las consultas a la DB ?
o los equipos tienen mas de una y sincronizaras de forma directa entre ellos con interfaces dedicadas ?

un split-brain en DRBD con muchas diferencias te podria obligar a hacer una full sincronizacion, y aunque el disco este vacio, te va a copiar todos los bloques de la partición :lezippy3
Se hará a través de una interfaz independiente. Como una conexión directa entre los nodos.
Claro, pero esta topoogía no trabajará con ese sistema. El pacemaker mantendrá montado el /var/lib/pgsql sólo en un nodo. :zippy
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
consulta consultona: la sincronizacion de DRBD la correras sobre la misma interface de red que recibira las consultas a la DB ?
o los equipos tienen mas de una y sincronizaras de forma directa entre ellos con interfaces dedicadas ?

un split-brain en DRBD con muchas diferencias te podria obligar a hacer una full sincronizacion, y aunque el disco este vacio, te va a copiar todos los bloques de la partición :lezippy3
UPDATE

Pasé mis pruebas y el cluster anda LA ZORRA :zippyte
Ahora un par de juegos con pgbench pero la replicación de DRBD es a toda nalga
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.769
Oye pero cuenta poh Vitoco, ¿cómo lo hiciste? ¿Qué método utilizaste?
 
Upvote 0
Subir