Bueno hace unos días tuve que instalar un sistema de replicación síncrona para PostgreSQL 9.1 con un sistema de tolerancia a fallos (FAILOVER en adelante) para poder levantar el servidor alterno (en adelante SLAVE) cuando el principal se caiga en adelante MASTER).
PostgreSQL 9.1 incorpora la funcionalidad de replicación síncrona básicamente como una “extensión” adicional a la replicación asíncrona que ya tiene desde 9.0 y que esta basada en los archivos del WAL, sin embargo no trae consigo elementos de FAILOVER para lo cual deja a tu elección implementar el que quiera pero básicamente lo que te indica es que cualquiera podría servir mientras “degrade el servicio en uno y promueva el servicio en el otro servidor”.
Uno podría utilizar muchas herramientas libres para esto, con más o menos buenos resultados pero el tema es que la documentación de ellas no es nada “cristiana” (osea no se entiende fácilmente, nada que ver con temas de fé) y luego de un buen rato leyendo decidí mejor crearme mi propio failover, algo que resulto interesante y mucho más rápido.
El escenario es este:
2 servidores con Gnu/Linux CentOS 6.2
Cada uno con PostgreSQL 9.1 aplicando réplica síncrona
el lenguaje utilizado es Python
Los servidores están en el mismo segmento de red
Para empezar si esperan ver el código fuente de lo que programé ya “se pegaron plancha” como dicen los méxicanos, no lo voy a hacer (hasta dentro de un año cuando me comprometo formalmente publicar el código, tomen el tiempo y si me olvido me lo recuerdan), voy a explicar el concepto del sistema y ya uds. Lo podrán programar en lo que quieran, python, php, perl, java (puaj), ruby, c, c++, etc. Etc.
Bueno vamos a la explicación.
Continua leyendo "Como crear un sistema de failover cacero para..." »