Professional Documents
Culture Documents
MarceloSilva
CONTENIDO
Alta Alta
Disponibilidad.
Disponibilidad : Comparacin de diferentes soluciones. como sistema de Alta Disponibilidad. como sistema de Alta Disponibilidad Siguiente Paso.
QUIPUX QUIPUX
ALTADISPONIBILIDAD
Un grupo de computadores independientes que trabajan conjuntamente para incrementar la disponibilidad de diversas aplicaciones y servicios.
ALTADISPONIBILIDAD
La alta disponibilidad en definitiva busca contar con un ambiente tolerante a fallos, un sistema capaz de encubrir los fallos que se producen en l para mantener una prestacin de servicio continua.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 1.- Disco Compartido . Una sola copia de la base de datos. Un arreglo de discos compartido por mltiples servidores. Si el servidor principal falla, se puede subir el servidor de respaldo en poco tiempo sin perdida de datos. Una significante limitacin es que si el arreglo de disco compartido falla ambos el servidor principal y el de respaldo quedan no funcionales. Este mtodo puede ser usado implementando un servidor GFS, XFS, OFS.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 2.- Replicacin 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 restriccin de este mtodo es que como el servidor principal y el de respaldo son idnticos si existe corrupcin a nivel de datos, ambos ambientes tendrn este inconveniente. DRBD es una popular aplicacin para replicacin de sistemas de archivos.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 3.- Warm y Hot Standby Usando PITR . Replicacin por medio de los archivos wall. Si el servidor principal falla, el servidor de respaldo contiene la mayora de los datos del servidor principal y fcilmente puede ser colocado como servidor principal. Este es un mtodo asncrono y solo puede ser utilizado sobre toda la base de datos. Ejemplo: walmgr (wal manager) skytools.projects.postgresql.org/doc/walmgr.html
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 4.-Replicacin Maestro-Esclavo usando triggers El servidor maestro asincrnicamente enva los cambios de datos al servidor esclavo. El servidor esclavo puede ser utilizado para consultas. Este mtodo es ideal para consultas para un almacn de datos. Slony-I, londiste Skytools son herramientas que usan este tipo de solucin.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 5.-Replicacin Midleware . Un programa intercepta cada consulta SQL y enva esta a uno o ms servidores. Cada servidor opera independientemente, consultas de lectura / escritura pueden ser enviadas a todos los servidores, existe balanceo de carga a nivel de consultas. Funciones como random(), current_timestamp y secuencias pueden devolver diferentes valores en cada servidor. Pgpool-II y Sequoia son ejemplos de este tipo de replicacin.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 6.-Replicacin asincrnica Maestro-Maestro . Para servidores que no estn regularmente conectados, como laptops o servidores remotos, si se guarda la consistencia de los datos estos pueden ser actualizados. Cada servidor trabaja independientemente y peridicamente esta comunicndose con otros servidores para identificar conflictos de transacciones, estos conflictos pueden ser resueltos por usuarios o reglas de resolucin de conflictos Bucardo es un ejemplo de este tipo de replicacin.
ALTADISPONIBILIDAD:COMPARACIN DIFERENTESSOLUCIONES 7.-Replicacin sincrnica 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)
CUADROCOMPARATIVO
F u n cio n alidad Disco Rep licaci nW arm y Ho t licaci n Rep Rep licaci n Rep licaci nRep licaci n Co m p artid o el sistem a d S tand b y M aestro - M id lew are asin cr nicasincr n ica d e arch ivo sUsan d o P ITE sclavo R M aestro - M aestro u san d o M aestro M aestro trig g ers M s S NA DRB D P IT R S lony P gpool-II B uc ardo deA L W Regis tros tablas de L SQ Regis tros tablas de Regis tros tablas bloqueos regis tros de y de
Im plem entac in Utiliz ada M todo de Com unic ac in c o Dis B loques Com partido dis c o Hardware no es pec ial requerido P erm ite m ltiples s erv idores m aes tros No hay s obrec arga del X s erv idor m aes tro S in es pera para m ltiples X s erv idores F alla del m aes tro s in prdida X de datos S erv idores en es pera s olo ac eptan c ons ultas de lec tura G ranularidad P or T abla Nec es aria la res oluc in de X c onflic tos
X X X
X X X
X X X
X X
X X X
X H o to n ly X X X X X
X X X X X X
QUIPUXCOMOSISTEMADEALTA DISPONIBILIDAD
5.000 Usuarios concurrentes. 23.000 documentos diarios generados (Promedio). 4.348.397 documentos generados en los ltimos
meses. 681.657 documentos firmados electrnicamente 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
13
QUIPUXCOMOSISTEMADEALTA DISPONIBILIDAD
QUIPUXCOMOSISTEMADEALTADISPONIBILIDAD SIGUIENTEPASO
QUIPUXCOMOSISTEMADEALTADISPONIBILIDAD SIGUIENTEPASO
REFERENCIASBIBLIOGRFICAS
Libro
: The PostgreSQL 9.0 Reference Manual Volume 3: Server Administration Guide ///media/datos/MarioLopez/Subsecretaria/Cursos/P resentacion%20Postgres%20y%20alta %20disponibilidad/cluster-de-servidores-conpostgresql.html
PREGUNTAS
Gracias
Por:Ing.MarioLpezB. mario.lopez@presidencia.gob.ec
PRESIDENCIADELAREPBLICADELECUADOR
AGENDA
PgQ Londiste LaboratoriodereplicacinPgQLondisteconPostgreSQL
PgQ:QUES
Una
PgQ:PARAQUESIRVE
Mensajeraasincrnica ProcesamientoPorLotes Replicacin TransaccionesDistribuidas
PgQ:CARACTERSTICAS
TRANSACCIONAL . Eventos son generados transaccionalmente. EFICIENTE. Los eventos son procesados por lotes y es muy liviano. FLEXIBLE. Sin lmites en el nmero de Productores y Consumidores CONFIABLE.Loseventossonalmacenadosenlabasededatos PostgreSQL FCIL DE USAR. Interface SQL simple, API's para diferentes lenguajes CDIGO ABIERTO. No se requiere de licencia y los fuentes estndisponibles
GLOSARIO
EVENTO. Pieza atmica de datos generado por un Productor . Un eventoPgQesunregistrodeunadelastablassoportadasporlacola LOTE DE EVENTOS.- PgQ esta diseado para manejar de forma ms eficiente gran cantidad de datos es por esto que agrupa en lotes para que sean procesados los eventos COLA.- Los eventos son almacenados en tablas diseadas para manejar las colas . Varios Productores pueden escribir en la misma cola y varios Consumidores pueden leer de la misma cola. Los elementos son almacenados en la cola antes de poder ser consumidos PRODUCTOR.- Aplicaciones que colocan un evento en la cola CONSUMIDOR.- Aplicaciones que leen eventos de una cola
PgQ:COLA
Esencialmenteunconjuntodetablasenunabasededatos
PgQ:APIPARACOLA
Creacinyeliminacindecolas pgq.create_queue(nombre_cola) pgq.drop_queue(nombre_cola) Funciones de informacin de las colas pgq.get_queue_info(nombre_cola) pgq.get_consumer_info(nombre_cola) pgq.current_event_table(nombre_cola) Manejo de los Consumidores pgq.register_consumer(qname, cname) pgq.unregister_consumer(qname, cname)
PgQ:EVENTO
Unregistroenunatablaquemanejaunacola
PgQ:LOTEDEEVENTOS
Los eventos son agrupados en lotes para un procesamiento
mseficiente Los Consumidores obtienen eventos en lotes El tamao del lote puede ser tuneado para la aplicacin o topologa de red Lotes ms pequeos podran mejorar el procesamiento Los lotes son preparados por un proceso separado llamado Ticker
PgQ:TICKER
Es
un demonio que peridicamente crea ticks sobre la(s) cola(s).ElTickesesencialmenteunaposicinenlasecuencia deeventos Un lote es formado de eventos que son encolados entre dos ticks Sin Ticker no hay lotes de eventos Si se tiene una pausa muy extendida del ticker los lotes de eventos podran ser muy grandes y los consumidores no podran procesar adecuadamente el lote de eventos. Ticker esta envuelto en miscelneos como son el vacuum de las tablas pgq, calendarizacin de eventos encolados y la rotacin de las tablas de las colas
PgQ:CONSUMIDOR
Seadhierealacola El
que obtiene eventos de la cola pidiendo un lote de eventos Solo ve los eventos que se han producido despus de la suscripcin Los eventos son vistos al menos una vez los eventos no se pierden Se debe contar con algn tipo de seguimiento para que un evento solo sea utilizado una vez Skytools posee algunas herramientas para esto Si el evento no puede ser procesado inmediatamente puede ser calendarizado para ser reprocesado posteriormente
PgQ:ESTADO
Puedeserobtenidallamandoapgq.get_consumer_info() Se
visualiza el informe de la cola, el nombre de los consumidores, retrasos etc Lag es el tiempo del ltimo lote de eventos finalizado Last seenes el tiempo transcurrido en el que un consumidor proces el ltimo lote de eventos
PgQ:PRODUCTOR
Cualquiercosacolocadaenloseventosdelascolas Configura
el formato de carga de un evento acordado entre el Productor y el Consumidor Interfaz bsica mediante un API pgq.insert_event(queue, ev_type, ev_data) La replicacin usa triggers para la generacin de los eventos pgq.sqltriga(queue, options) pgq.logutriga(queue, options) Carga masiva es tambin posible
SKYTOOLS3:NUEVAS CARACTERSTICAS
ConsumidorentrevariosSubConsumidores Soporta Cascada .- Una cola idntica es mantenida entre los nodos, los Consumidores pueden fcilmente moverse en diferentes nodos Los tickers de base de datos remplazados por un simple demonio pgqd Utilitario qadmin para manejar colas y Consumidores
PgQ:CONSUMIDORESCOLABORATIVOS
AlgunasocasionesunsoloConsumidornosatisfaceconelvolumendelotesde eventos Consumidores paralelos podra ayudar, pero necesitamos dividir la carga de trabajo para evitar tratar el mismo evento dos veces Entonces necesitamos que los Consumidores puedan trabajar de forma colaborativa Skytool 3 introduce los Sub Consumidores con este fin. Estos comparten la carga de trabajo de forma colaborativa Hay algunas diferencias en el manejo de registros y el procesamiento por lotes pero se parece bastante al de los Consumidores regulares pgq_coop.register_subconsumer(qname,cname,scname) pgq_coop.unregister_subconsumer(qname,cname,scname,mode) pgq_coop.next_batch(qname,cname,scname) pgq_coop.finish_batch(batch_id)
PgQ:CASCADA
Cascadaesunconjuntodenodosdebase de datos y una cola que se distribuye entre los nodos . Los ID de eventos se mantienenidnticosentrelosnodos La cascada puede ser representada como un rbol donde los eventos creados en la raz se propagan sobre la cascada de otros nodos Solo puede haber un nodo raz pero cualquier nmero de ramas u hojas Los nodos hoja son especficos de la replicacin ellos no tienen una copia de la cola y no participan en el evento de propagacin
PgQ:CASCADA
Una replicacin en cascada tpica sera de una base de datos
primaria(nodoraz),yunarplicaenespera(rama) Nosotros podemos cambiar fcilmente las funciones de replicacin de los nodos raz o rama y los Consumidores seguirn como si nada hubiera pasado En caso de que el nodo raz colapse, se promueve un nodo rama sobreviviente a nodo raz y se reconfigura los Consumers , en este escenario podra existir prdidas de datos
PgQ:Wrapup
Productoresgeneraneventosenlascolas Los Tickers de grupos de eventos en lotes Los
lotes de eventos son proporcionados a los Consumidores en un ordenamiento FIFO Consumidores pueden procesar los eventos con pgq_ext
LONDISTE:REPLICACIN
ImplementacindereplicacinMaestro/EsclavosobrePgQ Usa sqltriga/logtriga para capturar los cambios de las tablas de la base Maestra PgQ Consumer replica los eventos capturados entre los esclavos Un master puede tener varios esclavos Los esclavos pueden ser maestros de otros esclavos
LONDISTE:CONFIGURACIN
Preparaelarchivodeconfiguracin:basesdedatos origen ydestinoy elnombredelacola Ejecutar los comandos londiste de instalacin para el Proveedor y Consumidor Comenzar el proceso de replicacin entre el maestro y el esclavo Se empieza la copia inicial las tablas de la base de datos esclava se pueden usar una vez termine este proceso
TALLERDEREPLICACIN: CONFIGURACIONESPRELIMINARES
InstalacindelsistemaoperativoLinux InstalacindelabasededatosPostgreSQL InstalacindelasherramientasSKYTOOL
TALLERDEREPLICACIN: CONFIGURACINDEPgQ
Crear
TALLERDEREPLICACIN: CONFIGURACINDEPgQ
[pgqadm] #nombredeljobunico job_name=replica db = dbname=prueba port=5432 host=192.168.20.28 user=replica password=replica11 #frecuenciademantenimeinto maint_delay_min=2 #frecuenciadeverificacindeactividades loop_delay=0.1 logfile=/var/log/skytools/%(job_name)s.log pidfile=/var/log/skytools/%(job_name)s.pid use_skylog=0
TALLERDEREPLICACIN: CONFIGURACINDEPgQ
Colocarcomodueoapostgresdelarchivopgqadm.ini
TALLERDEREPLICACIN: CONFIGURACINDEPgQ
Revisar
que la generacin e inicializacin de la cola este correcto en el servidor maestro Ejecutamos la siguiente lnea de comando ; pgqadm.py /etc/skytools/pgqadm.ini status
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
Creamos el archivo de configuracin londiste.ini
#nombre de trabajo job_name = pruebalondiste provider_db = dbname=prueba port=5432 host=192.168.40.207 user=ureplica password=replica11 subscriber_db = dbname=pruebareplica port=5432 host=192.168.40.208 user=replica password=replica11 pgq_queue_name = cola1_replicaprueba logfile = /var/log/skytools/%(job_name)s.log pidfile = /var/log/skytools/%(job_name)s.pid # loop_delay = 1 # lock_timeout = 10.0
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
Instalamos
la estructura londiste en el proveedor para lo cual ejecutamos la siguiente lnea de comando en el servidor maestro londiste.py londiste.ini provider install
Instalamos
la estructura londiste en los consumidores ejecutando la siguiente lnea de comando londiste.py londiste.ini subscriber install Verificamos el estado de la cola desde los consumidores para lo cual ejecutamos la siguiente lnea de comando pgqadm.py pgqadm.ini status
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
Inicializamos
el proceso de replicacin en el servidor maestro para lo cual ejecutamos el siguiente comando londiste.py -d londiste.ini replay Tenemos que indicar que tablas y que secuencias sern colocadas en el proveedor #!/bin/sh londiste.py londiste.ini provider add catastrofe londiste.py londiste.ini provider add catastrofe_pais londiste.py londiste.ini provider add continente londiste.py londiste.ini provider add pais londiste.py londiste.ini provider add tipo_catastrofe
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
#!/bin/sh londiste.py londiste.ini provider catastrofe_codigocatastrofe_seq londiste.py londiste.ini provider continente_codigocontinente_seq londiste.py londiste.ini provider pais_codigopais_seq londiste.py londiste.ini provider tipo_catastrofe_codigotipocatastrofe_seq add-seq add-seq add-seq add-seq
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
Tenemos
que indicar que tablas y que secuencias sern colocadas en el suscriptor #!/bin/sh londiste.py londiste.ini subscriber add catastrofe londiste.py londiste.ini subscriber add catastrofe_pais londiste.py londiste.ini subscriber add continente londiste.py londiste.ini subscriber add pais londiste.py londiste.ini subscriber add tipo_catastrofe
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
#!/bin/sh londiste.py londiste.ini subscriber catastrofe_codigocatastrofe_seq londiste.py londiste.ini subscriber continente_codigocontinente_seq londiste.py londiste.ini subscriber pais_codigopais_seq londiste.py londiste.ini subscriber tipo_catastrofe_codigotipocatastrofe_seq add-seq add-seq add-seq add-seq
TALLERDEREPLICACIN: CONFIGURACINDELONDISTE
Verificamos
el estado de la cola tanto en el servidor proveedor como en los consumidores pgqadm.py pgqadm.ini status Revisar los logs para verificar que no existan inconvenientes En caso de que se caiga la rplica hacer lo siguiente : 1.- Reiniciar la generacin de tickers con pgqadm.py -d /etc/skytools/pgqadm.ini ticker 2.- Reiniciar la replicacin con londiste.py -d londiste.ini replay
CONCLUSIONES/ RECOMENDACIONES
AlternativaviabledereplicacinconPostgres Paralareplicacintomarencuentaquesolosepuedenreplicar
tablasquetenganclaveprimaria Para una actualizacin de la estructura de la base de datos ejecutarelcambioprimeroenlabaseesclavayluegoenlabase maestra Nuncaejecutarningnscriptdecambioupdate/deleteetcenla baseesclavasiempreenlabasemaestra
PREGUNTAS
Gracias
Por:Ing.MarceloSilva. marcelo.silva@presidencia.gob.ec
PREGUNTAS
Gracias
Por:Ing.MarioLpezB. mario.lopez@presidencia.gob.ec