Presentacion Alta Disponibilidad Postgres

54
  PRESIDENCIA DE LA REPÚBLICA DEL ECUADOR PRESIDENCIA DE LA REPÚBLICA DEL ECUADOR POSTGRESQL Y SISTEMAS DE ALTA POSTGRESQL Y SISTEMAS DE ALTA DISPONIBILIDAD DISPONIBILIDAD SUBSECRETARÍA DE TECNOLOGÍAS DE LA INFORMACI ÓN OCTUBRE 2011 Ing. Marcelo Silva

Transcript of Presentacion Alta Disponibilidad Postgres

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 1/54

 

 

PRESIDENCIA DE LA REPÚBLICA DEL ECUADORPRESIDENCIA DE LA REPÚBLICA DEL ECUADOR

POSTGRESQL Y SISTEMAS DE ALTAPOSTGRESQL Y SISTEMAS DE ALTA

DISPONIBILIDADDISPONIBILIDAD

SUBSECRETARÍA DE TECNOLOGÍAS DE LA

INFORMACIÓN

OCTUBRE 2011

Ing. Marcelo Silva

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 2/54

 

 

CONTENIDOCONTENIDO

Alta Disponibilidad.

Alta Disponibilidad : Comparación de diferentessoluciones.

QUIPUX como sistema de Alta Disponibilidad.QUIPUX como sistema de Alta Disponibilidad –

Siguiente Paso.

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 3/54

 

 

ALTA DISPONIBILIDADALTA DISPONIBILIDAD

Un grupo de computadores independientes que

trabajan conjuntamente para incrementar ladisponibilidad de diversas aplicaciones y servicios.

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 4/54

 

 

ALTA DISPONIBILIDADALTA DISPONIBILIDAD

La alta disponibilidad en definitiva busca contar con unambiente tolerante a fallos, un sistema capaz de

encubrir los fallos que se producen en él para mantener una prestación de servicio continua.

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 5/54

 

 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

1.- Disco Compartido .-Una sola copia de la base de datos.Un arreglo de discos compartido por múltiples

servidores.Si el servidor principal falla, se puede subir el servidor 

de respaldo en poco tiempo sin perdida de datos.Una significante limitación es que si el arreglo de

disco compartido falla ambos el servidor principal y elde respaldo quedan no funcionales.Este método puede ser usado implementando un

servidor GFS, XFS, OFS.

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 6/54

 

 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

2.- Replicación del sistema de archivos .-Todos los cambios de un sistema de archivos son

replicados a otro sistema de archivos residente en

otra computadora.La única restricción de este método es que como el

servidor principal y el de respaldo son idénticos siexiste corrupción a nivel de datos, ambos ambientestendrán este inconveniente.

DRBD es una popular aplicación para replicación desistemas de archivos.

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 7/54 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

3.- Warm y Hot Standby Usando PITR .-Replicación por medio de los archivos wall.Si el servidor principal falla, el servidor de respaldo

contiene la mayoría de los datos del servidor principaly fácilmente puede ser colocado como servidor principal.

Este es un método asíncrono y solo puede ser 

utilizado sobre toda la base de datos.Ejemplo: walmgr (wal manager)

skytools.projects.postgresql.org/doc/walmgr.html

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 8/54 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

4.-Replicación Maestro-Esclavo usando triggersEl servidor maestro asincrónicamente envía los

cambios de datos al servidor esclavo.

El servidor esclavo puede ser utilizado paraconsultas.

Este método es ideal para consultas para un almacénde datos.

Slony-I, londiste Skytools son herramientas que usaneste tipo de solución.

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 9/54

 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

5.-Replicación Midleware .-Un programa intercepta cada consulta SQL y envía

esta a uno o más servidores.

Cada servidor opera independientemente, consultasde lectura / escritura pueden ser enviadas a todoslos servidores, existe balanceo de carga a nivel deconsultas.

Funciones como random(), current_timestamp ysecuencias pueden devolver diferentes valores encada servidor.

Pgpool-II y Sequoia son ejemplos de este tipo dereplicación.

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 10/54

 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

6.-Replicación asincrónica Maestro-Maestro .-Para servidores que no están regularmente

conectados, como laptops o servidores remotos, si se

guarda la consistencia de los datos estos pueden ser actualizados.Cada servidor trabaja independientemente y

periódicamente esta comunicándose con otrosservidores para identificar conflictos detransacciones, estos conflictos pueden ser resueltospor usuarios o reglas de resolución de conflictos

Bucardo es un ejemplo de este tipo de replicación.

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 11/54

 

ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN

DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES

7.-Replicación sincrónica Maestro-Maestro .-Cada servidor puede aceptar peticiones de escritura,

y los datos modificados son transmitidos del servidor 

original a cada uno de los servidores.Escrituras pesadas pueden causar constantes

bloqueos degradando el rendimiento.Peticiones de lectura pueden ser enviadas a

cualquier servidor.Ejemplo: PyReplica

(http://pgfoundry.org/projects/pyreplica)

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 12/54

 

CUADRO COMPARATIVOCUADRO COMPARATIVO

Funcionalidad

NA S DRB D P ITR S lony P gpool-II B uc ardo

M étodo de Com unicac ión W A L S Q L

X X X X X XX X X

X X X

X X X X

X X X X

H o t o n ly X X X X

Granularidad Por Tabla X X X

X X X X X

DiscoCompartido

Replicacióndel sistema de archivos

Warm y HotStandbyUsando PITR

ReplicacióMaestro-Esclavousando

tri ers

ReplicaciónMidleware

Replicaciónasincrónica Maestro-Maestro

Replicaciónsincrónica Maestro-Maestro

Implementación MásUti l izada

DiscoCompart ido

Bloques dedisco

Registros detablas

Registros detablas

Registros detablas ybloqueos deregistros

Hardware no especialrequeridoPermite múlt iples servidoresmaestros

No hay sobrecarga delservidor maestro

Sin espera para múlt iplesservidores

Fal la del maestro sin pérdidade datos

Servidores en espera soloaceptan consultas de lectura

Necesaria la resolución de

confl ictos

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 13/54

 

QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA

DISPONIBILIDADDISPONIBILIDAD

5.000 Usuarios concurrentes.23.000 documentos diarios generados (Promedio).4.348.397 documentos generados en los últimos 13

meses.681.657 documentos firmados electrónicamente en

los últimos 13 meses.88 instituciones usando el sistema concurrentemente.

45.958 usuarios activos.Servicio 7 x 24.

Nota : Datos del 30 de Septiembre de 2011

 

QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 14/54

 

QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA

DISPONIBILIDADDISPONIBILIDAD

 

QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 15/54

 

QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD

SIGUIENTE PASOSIGUIENTE PASO

 

QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 16/54

 

QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD

SIGUIENTE PASOSIGUIENTE PASO

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 17/54

 

REFERENCIAS BIBLIOGRÁFICASREFERENCIAS BIBLIOGRÁFICAS

Libro : The PostgreSQL 9.0 Reference ManualVolume 3: Server Administration Guide

 ///media/datos/MarioLopez/Subsecretaria/Cursos/Presentacion%20Postgres%20y%20alta%20disponibilidad/cluster-de-servidores-con-

postgresql.html 

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 18/54

 

PREGUNTASPREGUNTAS

Gracias

Por: Ing. Mario López B.

[email protected]

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 19/54

 

PRESIDENCIA DE LA REPÚBLICA DEL ECUADORPRESIDENCIA DE LA REPÚBLICA DEL ECUADOR

SKYTOOLS : PgQSKYTOOLS : PgQREPLICACIÓN CON LONDISTEREPLICACIÓN CON LONDISTE

Subsecretarí a de Tecnologí as de la Información

Abril 2011

Por: Ing. Mario López B.

[email protected] 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 20/54

 

AGENDAAGENDA

PgQ

Londiste

Laboratorio de replicació

n PgQ Londiste con PostgreSQL

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 21/54

 

PgQ : QUÉ ESPgQ : QUÉ ES

UnaUna implementaciónimplementación de colasde colas sobresobre PostgreSQL conPostgreSQL con unauna interface de store proceduresinterface de store procedures

Eventos son generados por Productores y colocados en la colaEventos son generados por Productores y colocados en la cola

para poder ser procesados por los Consumidorespara poder ser procesados por los Consumidores

  

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 22/54

 

PgQ : PARA QUE SIRVEPgQ : PARA QUE SIRVE

Mensajerí aMensajerí a asincrónicaasincrónica

Procesamiento Por LotesProcesamiento Por Lotes

  Replicaci ó n Repl icaci ó n

 TransaccionesTransacciones DistribuidasDistribuidas

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 23/54

 

PgQ: CARACTERÍSTICASPgQ: CARACTERÍSTICAS

TRANSACCIONALTRANSACCIONAL . . EventosEventos sonson generadosgenerados transaccionalmente.transaccionalmente.

EFICIENTEEFICIENTE. Los eventos son procesados por lotes y es muy. Los eventos son procesados por lotes y es muy

liviano.liviano. FLEXIBLEFLEXIBLE. Sin l í mites en el número de Productores y. Sin l í mites en el número de Productores y

ConsumidoresConsumidores

CONFIABLECONFIABLE. Los eventos son almacenados en la base de datos. Los eventos son almacenados en la base de datos

PostgreSQLPostgreSQL FÁCIL DE USARFÁCIL DE USAR. Interface SQL simple, API's para diferentes. Interface SQL simple, API's para diferentes

lenguajeslenguajes

CÓDIGO ABIERTOCÓDIGO ABIERTO. No se requiere de licencia y los fuentes. No se requiere de licencia y los fuentesestán disponiblesestán disponibles

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 24/54

 

GLOSARIOGLOSARIO

EVENTO. EVENTO. PiezaPieza atómicaatómica dede datosdatos generadogenerado porpor unun ProductorProductor .. UnUneventoevento PgQ esPgQ es unun registroregistro dede unauna de las tablasde las tablas soportadassoportadas porpor la colala cola

LOTE DE EVENTOS.- PgQ esta diseñado para manejar deLOTE DE EVENTOS.- PgQ esta diseñado para manejar de

forma más eficiente gran cantidad de datos es por esto queforma más eficiente gran cantidad de datos es por esto queagrupa en lotes para que sean procesados los eventosagrupa en lotes para que sean procesados los eventos COLA.- Los eventos son almacenados en tablas diseñadasCOLA.- Los eventos son almacenados en tablas diseñadas

para manejar las colas . Varios Productores pueden escribir para manejar las colas . Varios Productores pueden escribir en la misma cola y varios Consumidores pueden leer de laen la misma cola y varios Consumidores pueden leer de lamisma cola. Los elementos son almacenados en la cola antesmisma cola. Los elementos son almacenados en la cola antesde poder ser consumidosde poder ser consumidos

PRODUCTOR.- Aplicaciones que colocan un evento en laPRODUCTOR.- Aplicaciones que colocan un evento en lacolacola

CONSUMIDOR.- Aplicaciones que leen eventos de una colaCONSUMIDOR.- Aplicaciones que leen eventos de una cola

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 25/54

 

PgQ : COLAPgQ : COLA

Esencialmente unEsencialmente un conjuntoconjunto de tablas ende tablas en unauna base debase de datosdatos PostgreSQLPostgreSQL

Por defecto maneja 3 tablas por colaPor defecto maneja 3 tablas por cola

Los eventos son descartados solo cuando todos losLos eventos son descartados solo cuando todos losConsumidores han procesado el eventoConsumidores han procesado el evento

Las colas son accesibles mediante un API a través de storeLas colas son accesibles mediante un API a través de storeproceduresprocedures

Se puede tener diferentes colas para una misma base de datosSe puede tener diferentes colas para una misma base de datos Cualquier número de Productores y cualquier número deCualquier número de Productores y cualquier número de

ConsumidoresConsumidores

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 26/54

 

PgQ : API PARA COLAPgQ : API PARA COLA

Creación y eliminaciónCreación y eliminación de colasde colas

pgq.create_queue(nombre_cola)pgq.create_queue(nombre_cola)

pgq.drop_queue(nombre_cola)pgq.drop_queue(nombre_cola)

Funciones de información de las colasFunciones de información de las colas

pgq.get_queue_info(nombre_cola)pgq.get_queue_info(nombre_cola)

pgq.get_consumer_info(nombre_cola)pgq.get_consumer_info(nombre_cola)

pgq.current_event_table(nombre_cola)pgq.current_event_table(nombre_cola)

Manejo de los ConsumidoresManejo de los Consumidores

pgq.register_consumer(qname, cname)pgq.register_consumer(qname, cname)

pgq.unregister_consumer(qname, cname)pgq.unregister_consumer(qname, cname) 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 27/54

 

PgQ : EVENTOPgQ : EVENTO

Un registroUn registro enen unauna tablatabla queque manejamaneja unauna colacola

Registros a ser procesadosRegistros a ser procesados

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 28/54

 

PgQ : LOTE DE EVENTOSPgQ : LOTE DE EVENTOS

Los eventos son agrupados en lotes para un procesamientoLos eventos son agrupados en lotes para un procesamientomás eficientemás eficiente

Los Consumidores obtienen eventos en lotesLos Consumidores obtienen eventos en lotes El tamaño del lote puede ser tuneado para la aplicaciónEl tamaño del lote puede ser tuneado para la aplicación

o topología de redo topología de red Lotes más pequeños podrían mejorar el procesamientoLotes más pequeños podrían mejorar el procesamiento Los lotes son preparados por un proceso separadoLos lotes son preparados por un proceso separado

llamado Ticker llamado Ticker 

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 29/54

 

PgQ : TICKERPgQ : TICKER

Es un demonio queEs un demonio que periódicamenteperiódicamente crea ticks sobre la(s)crea ticks sobre la(s)cola(s). El Tick es esencialmente una posición en la secuenciacola(s). El Tick es esencialmente una posición en la secuenciade eventosde eventos

Un lote es formado de eventos que son encolados entreUn lote es formado de eventos que son encolados entredos ticksdos ticks

Sin Ticker no hay lotes de eventosSin Ticker no hay lotes de eventos Si se tiene una pausa muy extendida del ticker los lotesSi se tiene una pausa muy extendida del ticker los lotes

de eventos podrían ser muy grandes y losde eventos podrían ser muy grandes y losconsumidores no podrían procesar adecuadamente elconsumidores no podrían procesar adecuadamente ellote de eventos.lote de eventos.

Ticker esta envuelto en misceláneos como son elTicker esta envuelto en misceláneos como son elvacuum de las tablas pgq, calendarización de eventosvacuum de las tablas pgq, calendarización de eventos

encolados y la rotación de las tablas de las colasencolados y la rotación de las tablas de las colas

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 30/54

 

PgQ : CONSUMIDORPgQ : CONSUMIDOR

Se adhiere a la colaSe adhiere a la cola

El que obtiene eventos de la cola pidiendo un lote deEl que obtiene eventos de la cola pidiendo un lote deeventoseventos

Solo ve los eventosSolo ve los eventos que se han producido después deque se han producido después dela suscripciónla suscripción

Los eventos son vistos al menos una vez los eventos noLos eventos son vistos al menos una vez los eventos nose pierdense pierden

Se debe contar con algún tipo de seguimiento para queSe debe contar con algún tipo de seguimiento para queun evento solo sea utilizado una vez Skytools poseeun evento solo sea utilizado una vez Skytools poseealgunas herramientas para estoalgunas herramientas para esto

Si el evento no puede ser procesado inmediatamenteSi el evento no puede ser procesado inmediatamentepuede ser calendarizado para ser reprocesadopuede ser calendarizado para ser reprocesadoposteriormenteposteriormente

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 31/54

 

PgQ : ESTADOPgQ : ESTADO

Puede ser obtenida llamando a pgq.get_consumer_info()Puede ser obtenida llamando a pgq.get_consumer_info()

Se visualiza el informe de la cola, el nombre de losSe visualiza el informe de la cola, el nombre de losconsumidores, retrasos etcconsumidores, retrasos etc

Lag es el tiempo del último lote de eventos finalizadoLag es el tiempo del último lote de eventos finalizado Last seenes el tiempoLast seenes el tiempo transcurridotranscurrido en el que unen el que un

consumidor procesó el último lote de eventosconsumidor procesó el último lote de eventos

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 32/54

 

PgQ : PRODUCTORPgQ : PRODUCTOR

Cualquier cosa colocada en los eventos de las colasCualquier cosa colocada en los eventos de las colas

Configura el formato de carga de un evento acordadoConfigura el formato de carga de un evento acordadoentre el Productor y el Consumidor entre el Productor y el Consumidor 

InterfazInterfaz básicabásica mediante un APImediante un APIpgq.insert_event(queue, ev_type, ev_data)pgq.insert_event(queue, ev_type, ev_data)

La replicación usa triggers para la generación de losLa replicación usa triggers para la generación de loseventoseventos

pgq.sqltriga(queue, options)pgq.sqltriga(queue, options)pgq.logutriga(queue, options)pgq.logutriga(queue, options)

Carga masiva es también posibleCarga masiva es también posible

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 33/54

 

SKYTOOLS 3 : NUEVASSKYTOOLS 3 : NUEVAS

CARACTERÍSTICASCARACTERÍSTICAS

Consumidores Colaborativos. Consumidores Colaborativos. Distribución de carga de unDistribución de carga de unConsumidor entre varios Sub ConsumidoresConsumidor entre varios Sub Consumidores

Soporta Cascada .-Soporta Cascada .- Una cola idéntica es mantenidaUna cola idéntica es mantenida

entre los nodos, los Consumidores puedenentre los nodos, los Consumidores pueden fácilmentefácilmente moverse en diferentes nodosmoverse en diferentes nodos

Los tickers de base de datos remplazados por un simpleLos tickers de base de datos remplazados por un simpledemonio pgqddemonio pgqd

Utilitario qadmin para manejar colas y ConsumidoresUtilitario qadmin para manejar colas y Consumidores

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 34/54

 

PgQ: CONSUMIDORES COLABORATIVOSPgQ: CONSUMIDORES COLABORATIVOS

Algunas ocasiones un solo Consumidor no satisface con el volumen de lotes deAlgunas ocasiones un solo Consumidor no satisface con el volumen de lotes deeventoseventos

Consumidores paralelos podría ayudar, pero necesitamos dividir la cargaConsumidores paralelos podría ayudar, pero necesitamos dividir la cargade trabajo para evitar tratar el mismo evento dos vecesde trabajo para evitar tratar el mismo evento dos veces

Entonces necesitamos que los Consumidores puedan trabajar de formaEntonces necesitamos que los Consumidores puedan trabajar de formacolaborativacolaborativa

Skytool 3 introduce los Sub Consumidores con este fin. Estos compartenSkytool 3 introduce los Sub Consumidores con este fin. Estos compartenla carga de trabajo de forma colaborativala carga de trabajo de forma colaborativa

Hay algunas diferencias en el manejo de registros y el procesamientoHay algunas diferencias en el manejo de registros y el procesamientopor lotes pero se parece bastante al de los Consumidores regularespor lotes pero se parece bastante al de los Consumidores regulares

pgq_coop.register_subconsumer(qname,cname,scname)pgq_coop.register_subconsumer(qname,cname,scname) pgq_coop.unregister_subconsumer(qname,cname,scname,mode)pgq_coop.unregister_subconsumer(qname,cname,scname,mode)

pgq_coop.next_batch(qname,cname,scname)pgq_coop.next_batch(qname,cname,scname)

pgq_coop.finish_batch(batch_id)pgq_coop.finish_batch(batch_id)

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 35/54

 

PgQ: CASCADAPgQ: CASCADA

Cascada es un conjunto de nodos de baseCascada es un conjunto de nodos de basede datos y una cola que se distribuyede datos y una cola que se distribuyeentre los nodos . Los ID de eventos seentre los nodos . Los ID de eventos semantienen idénticos entre los nodosmantienen idénticos entre los nodos

La cascada puede ser representadaLa cascada puede ser representadacomo un árbol donde los eventoscomo un árbol donde los eventoscreados en la raíz se propagan sobrecreados en la raíz se propagan sobrela cascada de otros nodosla cascada de otros nodos

Solo puede haber unSolo puede haber un nodonodo raíz peroraíz pero

cualquier número de ramas u hojascualquier número de ramas u hojas Los nodos hoja son específicos de laLos nodos hoja son específicos de la

replicación ellos no tienen una copiareplicación ellos no tienen una copiade la cola y no participan en elde la cola y no participan en elevento de propagaciónevento de propagación

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 36/54

 

PgQ: CASCADAPgQ: CASCADA

Una replicación en cascada tí pica serí a de una base de datosUna replicación en cascada tí pica serí a de una base de datosprimaria (nodo raí z), y una réplica en espera (rama)primaria (nodo raí z), y una réplica en espera (rama)

Nosotros podemos cambiar fácilmente las funciones deNosotros podemos cambiar fácilmente las funciones de

replicación de los nodos raíz o rama y losreplicación de los nodos raíz o rama y losConsumidores seguirán como si nada hubiera pasadoConsumidores seguirán como si nada hubiera pasado

En caso de que el nodo raíz colapse, se promueve unEn caso de que el nodo raíz colapse, se promueve unnodo rama sobreviviente anodo rama sobreviviente a nodonodo raíz y se reconfiguraraíz y se reconfiguralos “Consumers” , en estelos “Consumers” , en este escenarioescenario podría existir podría existir 

pérdidas de datospérdidas de datos

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 37/54

 

PgQ: WrapupPgQ: Wrapup

Productores generan eventos en las colasProductores generan eventos en las colas

Los Tickers de grupos de eventos en lotesLos Tickers de grupos de eventos en lotes Los lotes de eventos son proporcionados a losLos lotes de eventos son proporcionados a los

Consumidores en un ordenamiento FIFOConsumidores en un ordenamiento FIFO Consumidores pueden procesar los eventos con pgq_extConsumidores pueden procesar los eventos con pgq_ext

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 38/54

 

LONDISTE : REPLICACIÓNLONDISTE : REPLICACIÓN

Implementación de replicación Maestro / Esclavo sobre PgQImplementación de replicación Maestro / Esclavo sobre PgQ

Usa sqltriga/logtriga para capturar los cambios de las tablas de laUsa sqltriga/logtriga para capturar los cambios de las tablas de labase Maestrabase Maestra

PgQ “Consumer” replica los eventos capturados entre losPgQ “Consumer” replica los eventos capturados entre los

esclavosesclavos Un master puede tener varios esclavosUn master puede tener varios esclavos Los esclavos pueden ser maestros de otros esclavosLos esclavos pueden ser maestros de otros esclavos

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 39/54

 

LONDISTE : CONFIGURACIÓNLONDISTE : CONFIGURACIÓN

Prepara el archivo de configuración : bases de datosPrepara el archivo de configuración : bases de datos origenorigen y destino yy destino yel nombre de la colael nombre de la cola

Ejecutar los comandos londiste de instalación para el Proveedor Ejecutar los comandos londiste de instalación para el Proveedor y Consumidor y Consumidor 

Comenzar el proceso de replicación entre el maestro y el esclavoComenzar el proceso de replicación entre el maestro y el esclavo Se empieza la copia inicial las tablas de la base de datos esclavaSe empieza la copia inicial las tablas de la base de datos esclava

se pueden usar una vez termine este procesose pueden usar una vez termine este proceso

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 40/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIONES PRELIMINARESCONFIGURACIONES PRELIMINARES

Instalación del sistema operativo LinuxInstalación del sistema operativo Linux

Instalación de la base de datos PostgreSQLInstalación de la base de datos PostgreSQL

Instalación de las herramientas SKYTOOLInstalación de las herramientas SKYTOOL

((yum install skytools)yum install skytools)

Creación de la base de datos de maestraCreación de la base de datos de maestra

Carga de datos iniciales en la base de datos maestraCarga de datos iniciales en la base de datos maestra

Creació

n de la base de datos esclavaCreació

n de la base de datos esclava Creación de tablas y secuencias en la base de datos esclavaCreación de tablas y secuencias en la base de datos esclava

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 41/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ

 

Crear la carpeta /etc/skytools en el servidor de la baseCrear la carpeta /etc/skytools en el servidor de la basemaestra y también en los esclavos, como dueño postgresmaestra y también en los esclavos, como dueño postgres

 

mkdir skytoolsmkdir skytools

chown postgres: skytoolschown postgres: skytools

Crear el archivo de configuración pgqadm en /etc/skytools/ Crear el archivo de configuración pgqadm en /etc/skytools/ ( pgqadm.ini) en el servidor maestro y en el servidor esclavo( pgqadm.ini) en el servidor maestro y en el servidor esclavo

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 42/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ

 [pgqadm][pgqadm]

# nombre del job unico# nombre del job unico

 job_name = replica job_name = replica

db = dbname=prueba port=5432 host=192.168.20.28 user=replicadb = dbname=prueba port=5432 host=192.168.20.28 user=replicapassword=replica11password=replica11

# frecuencia de mantenimeinto# frecuencia de mantenimeinto

maint_delay_min = 2maint_delay_min = 2

# frecuencia de verificación de actividades# frecuencia de verificación de actividadesloop_delay = 0.1loop_delay = 0.1

logfile = /var/log/skytools/%(job_name)s.loglogfile = /var/log/skytools/%(job_name)s.log

pidfile = /var/log/skytools/%(job_name)s.pidpidfile = /var/log/skytools/%(job_name)s.pid

use_skylog = 0use_skylog = 0 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 43/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ

 Colocar como dueño a postgres del archivo pgqadm.iniColocar como dueño a postgres del archivo pgqadm.ini

chown postgres: pgqadm.inichown postgres: pgqadm.ini

Cambiar al usuario postgres su – postgresCambiar al usuario postgres su – postgres

Crear en var/log la carpeta skytools como dueño postgresCrear en var/log la carpeta skytools como dueño postgres Configuración de la estructura pgqadm servidor maestroConfiguración de la estructura pgqadm servidor maestro

pgqadm.py /etc/skytools/ pgqadm.ini installpgqadm.py /etc/skytools/ pgqadm.ini install

Inicialización del ticker en el servidor maestro como usuarioInicialización del ticker en el servidor maestro como usuario

postgrespostgresEjecutamos la siguiente lí nea de comando pgqadm.py d / Ejecutamos la siguiente lí nea de comando pgqadm.py d / 

etc/skytools/pgqadm.ini tickeretc/skytools/pgqadm.ini ticker

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 44/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ

Revisar que la generación e inicialización de la colaRevisar que la generación e inicialización de la colaeste correcto en el servidor maestroeste correcto en el servidor maestro

Ejecutamos la siguiente línea de comando ;Ejecutamos la siguiente línea de comando ;

pgqadm.py /etc/skytools/pgqadm.ini statuspgqadm.py /etc/skytools/pgqadm.ini status

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 45/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

 Creamos el archivo de configuración londiste.iniCreamos el archivo de configuración londiste.ini

#nombre de trabajo#nombre de trabajo

 job_name = pruebalondiste job_name = pruebalondiste

provider_db = dbname=prueba port=5432provider_db = dbname=prueba port=5432host=192.168.40.207 user=ureplica password=replica11host=192.168.40.207 user=ureplica password=replica11

subscriber_db = dbname=pruebareplica port=5432subscriber_db = dbname=pruebareplica port=5432host=192.168.40.208 user=replica password=replica11host=192.168.40.208 user=replica password=replica11

pgq_queue_name = cola1_replicapruebapgq_queue_name = cola1_replicaprueba

logfile = /var/log/skytools/%(job_name)s.loglogfile = /var/log/skytools/%(job_name)s.logpidfile = /var/log/skytools/%(job_name)s.pidpidfile = /var/log/skytools/%(job_name)s.pid

# loop_delay = 1# loop_delay = 1

# lock_timeout = 10.0# lock_timeout = 10.0

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 46/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

Instalamos la estructura londiste en el proveedor paraInstalamos la estructura londiste en el proveedor paralo cual ejecutamos la siguiente línea de comando en ello cual ejecutamos la siguiente línea de comando en elservidor maestroservidor maestro

londiste.py londiste.ini provider installlondiste.py londiste.ini provider install

Instalamos la estructura londiste en los consumidoresInstalamos la estructura londiste en los consumidoresejecutando la siguiente línea de comandoejecutando la siguiente línea de comando

londiste.py londiste.ini subscriber installlondiste.py londiste.ini subscriber install Verificamos el estado de la cola desde losVerificamos el estado de la cola desde los

consumidores para lo cual ejecutamos la siguienteconsumidores para lo cual ejecutamos la siguientelínea de comandolínea de comando

pgqadm.py pgqadm.ini statuspgqadm.py pgqadm.ini status

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 47/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

Inicializamos el proceso de replicación en el servidor Inicializamos el proceso de replicación en el servidor maestro para lo cual ejecutamos el siguiente comandomaestro para lo cual ejecutamos el siguiente comando

londiste.py -d londiste.ini replaylondiste.py -d londiste.ini replay

Tenemos que indicar que tablas y que secuencias seránTenemos que indicar que tablas y que secuencias seráncolocadas en el proveedor colocadas en el proveedor 

#!/bin/sh#!/bin/sh

londiste.py londiste.ini provider add catastrofelondiste.py londiste.ini provider add catastrofe

londiste.py londiste.ini provider add catastrofe_paislondiste.py londiste.ini provider add catastrofe_pais

londiste.py londiste.ini provider add continentelondiste.py londiste.ini provider add continente

londiste.py londiste.ini provider add paislondiste.py londiste.ini provider add pais

londiste.py londiste.ini provider add tipo_catastrofelondiste.py londiste.ini provider add tipo_catastrofe

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 48/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

#!/bin/sh#!/bin/sh

londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqcatastrofe_codigocatastrofe_seqcatastrofe_codigocatastrofe_seq

londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqcontinente_codigocontinente_seqcontinente_codigocontinente_seq

londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqpais_codigopais_seqpais_codigopais_seq

londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seq

tipo_catastrofe_codigotipocatastrofe_seqtipo_catastrofe_codigotipocatastrofe_seq

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 49/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

Tenemos que indicar que tablas y que secuenciasTenemos que indicar que tablas y que secuenciasserán colocadas en el suscriptor serán colocadas en el suscriptor 

#!/bin/sh#!/bin/sh

londiste.py londiste.ini subscriber add catastrofelondiste.py londiste.ini subscriber add catastrofelondiste.py londiste.ini subscriber add catastrofe_paislondiste.py londiste.ini subscriber add catastrofe_pais

londiste.py londiste.ini subscriber add continentelondiste.py londiste.ini subscriber add continente

londiste.py londiste.ini subscriber add paislondiste.py londiste.ini subscriber add pais

londiste.py londiste.ini subscriber add tipo_catastrofelondiste.py londiste.ini subscriber add tipo_catastrofe

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 50/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

#!/bin/sh#!/bin/sh

londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqcatastrofe_codigocatastrofe_seqcatastrofe_codigocatastrofe_seq

londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqcontinente_codigocontinente_seqcontinente_codigocontinente_seq

londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqpais_codigopais_seqpais_codigopais_seq

londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seq

tipo_catastrofe_codigotipocatastrofe_seqtipo_catastrofe_codigotipocatastrofe_seq

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 51/54

 

TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:

CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE

Verificamos el estado de la cola tanto en el servidor Verificamos el estado de la cola tanto en el servidor proveedor como en los consumidoresproveedor como en los consumidores

pgqadm.py pgqadm.ini statuspgqadm.py pgqadm.ini status

Revisar los logs para verificar que no existanRevisar los logs para verificar que no existaninconvenientesinconvenientes En caso de que se caiga la réplica hacer lo siguiente :En caso de que se caiga la réplica hacer lo siguiente :

1.- Reiniciar la generación de tickers con pgqadm.py1.- Reiniciar la generación de tickers con pgqadm.py-d /etc/skytools/pgqadm.ini ticker -d /etc/skytools/pgqadm.ini ticker 

2.- Reiniciar la replicación con londiste.py -d2.- Reiniciar la replicación con londiste.py -dlondiste.ini replaylondiste.ini replay

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 52/54

 

CONCLUSIONES / CONCLUSIONES / 

RECOMENDACIONESRECOMENDACIONES

Alternativa viable de replicación con Postgres

Para la replicación tomar en cuenta que solo se pueden replicartablas que tengan clave primaria

Para una actualización de la estructura de la base de datosejecutar el cambio primero en la base esclava y luego en la basemaestra

Nunca ejecutar ningún script de cambio update /delete etc en la

base esclava siempre en la base maestra

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 53/54

 

PREGUNTASPREGUNTAS

Gracias

Por : Ing. Marcelo Silva.

[email protected]

 

5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com

http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 54/54

PREGUNTASPREGUNTAS

Gracias

Por : Ing. Mario López B.

[email protected]