• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Alta disponibilidad en PostgreSQL con repmgr

noviembre 24, 2023 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 6 minutos

La semana pasada se explicaron los pasos necesarios para la creación de un sistema de réplica con PostgreSQL. Esto es, un sistema mediante el cual se puede disponer de una copia de la base de datos en un segundo servidor. Pero un sistema de réplica no es un sistema de alta disponibilidad. La base de datos de réplica es de solo lectura, por lo que solamente se puede usar como copia de seguridad y para realizar parte de las operaciones de lectura, descargando de trabajo al servidor principal. El sistema de réplica no es un sistema de alta disponibilidad. Para implementar un sistema de alta disponibilidad en PostgreSQL es necesario usar además una herramienta como repmgr. En esta entrada se va a mostrar como configurar un repmgr en Rocky Linux 9, pasos que también se pueden seguir en otras distribuciones basadas en Red Hat Enterprise Linux 9, para crear un sistema de alta disponibilidad en PostgreSQL.

Tabla de contenidos

  • 1 Introducción a repmgr
  • 2 Instalación de PostgreSQL y repmgr
    • 2.1 Inicialización de la base de datos
    • 2.2 Permitir el acceso remoto a PostgreSQL
    • 2.3 Crear una regla para el cortafuegos
  • 3 Configuración de rpmgr
    • 3.1 Archivo de configuración de repmgr
    • 3.2 Configuración del nodo maestro
    • 3.3 Creación de una réplica
    • 3.4 Comprobar el estado del cluster
  • 4 Conclusiones

Introducción a repmgr

Repmgr es un software de código abierto diseñado para gestionar y supervisar clústeres de bases de datos PostgreSQL, implementando para ello las funcionalidades clave para la administración eficiente de sistemas distribuidos. Por lo que es una herramienta que se utiliza en entornos donde la alta disponibilidad y la tolerancia a fallos son clave. Su funcionalidad clave es la administración del proceso de replicación y la conmutación en caso de fallo de las bases de datos PostgreSQL, lo que permite crear y gestionar réplicas redundantes.

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
En Analytics Lane
Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

Publicidad


Instalación de PostgreSQL y repmgr

Aunque, como se ha visto cuando se explicó cómo instalar PostgreSQL en Rocky Linux, la propia distribución cuenta en el canal oficial con una versión de PostgreSQL no cuenta con repmgr, por lo que se debe instalar desde los repositorios de PostgreSQL. Para ello se debe agregar el repositorio al sistema usando el siguiente comando:

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Comando que es válido en Rocky Linux 9, Alma Linux 9 o RHEL 9, si se usa otra versión se debe cambiar la URL. En este punto se debe actualizar el sistema

sudo dnf update -y

Para evitar conflictos con el módulo por defecto de PostgreSQL se debe desactivar, usando para ello el siguiente comando

sudo dnf -qy module disable postgresql

Una vez que el módulo se ha desactiva ya es posible instalar PostgreSQL 15 y una versión de repmgr preparado para la base de datos

sudo dnf install -y postgresql15-server repmgr_15

Si se desea utilizar otra versión de PostgreSQL, como puede ser la 16, solamente se tiene que reemplazar 15 por el número de la versión.

Inicialización de la base de datos

Una vez instalados los paquetes es necesario crear las carpeta y usuarios de la base de datos, para lo que se puede ejecutar el siguiente comando

/usr/pgsql-15/bin/postgresql-15-setup initdb

Lo que creará una base de datos con la configuración por defecto y el usuario postgres. Ahora ya se puede inicializar el servicio

systemctl start postgresql-15

Sin olvidar activar el servicio para que se cargue tras un reinicio del sistema

systemctl enable postgresql-15

Publicidad


Permitir el acceso remoto a PostgreSQL

La configuración por defecto de PostgreSQL no admite el acceso remoto, solamente se puede acceder desde el propio servidor. Para solucionar esto se debe abrir el archivo /var/lib/pgsql/data/postgresql.conf y cambiar la línea

listen_addresses = 'localhost'

por

listen_addresses = '*'

Lo que hace que la base de datos se pueda consultar desde cualquier IP. Además, también se tiene que indicar la dirección IP o el rango de IP desde el que se desea acceder a la base de datos en el archivo /var/lib/pgsql/data/pg_hba.conf. En este archivo se debe agregar una línea como la siguiente

host all all 192.168.1.39/24 md5

en la que se indica que se accede desde puede acceder a todas las bases de datos, por parte de todos los usuarios, desde cualquier IP en el rango 192.168.1.39/24 mediante autenticación md5. Solamente se debe reemplazar el rango de IP por aquel en el que se encuentre las máquinas que deben acceder.

Crear una regla para el cortafuegos

En los sistemas actuales el cortafuegos suele estar activado por defecto, por lo que se debe crear una regla para permitir el acceso a la base de datos. Esto es abrir el puerto 5432, salvo que se hubiese indicado uno diferente en el archivo de configuración. Para ello se debe escribir el comando

sudo firewall-cmd --zone=public --add-port 5432/tcp --permanent

Sin olvidar reiniciar el servicio del cortafuegos para que se apliquen los cambios.

sudo systemctl restart firewalld

Todos los pasos indicados hasta ahora se deben realizar en todos los servidores del clúster.

Publicidad


Configuración de rpmgr

El proceso de configuración de rpmgr solo se tiene que hacer en la máquina maestro, la configuración se copiara posteriormente a las réplicas. Antes de poder usar rpmgr en PostgreSQL es necesario crear primero un usuario, lo que se puede hacer desde la base de datos con un comando como el siguiente comando

CREATE USER replicator password '';

Reemplazando '<rep_pass>' con la contraseña del usuario. Una vez hecho esto se le debe asignar a propiedad shared_preload_libraries el valor 'repmgr' en el archivo /var/lib/pgsql/15/data/postgresql.conf

shared_preload_libraries = 'repmgr'

y autorizar el local y en red a la base de datos repmgr y darle permisos de replicación al usuario repmgr, para lo que se agregaran las siguientes líneas.

 local   repmgr          repmgr                                  trust
 host    repmgr          repmgr          192.168.1.0/24          trust
 local   replication     repmgr                                  trust
 host    replication     repmgr          192.168.1.0/24          trust

Ahora, una vez reiniciada la base de datos, el usuario repmgr debería poder acceder desde cualquier máquina de la red.

Archivo de configuración de repmgr

Ahora se debe crear en la carpeta del usuario postgres se debe copiar el archivo repmgr.conf.sample como repmgr.conf y modificar las siguiente líneas.

node_id=1               
node_name='node1'
conninfo='host=192.168.1.41 port=5432 dbname=repmgr user=repmgr'
data_directory='/var/lib/pgsql/15/data'
failover='automatic'

promote_command='repmgr standby promote -f /var/lib/pgsql/repmgr.conf'
follow_command='repmgr standby follow -f /var/lib/pgsql/repmgr.conf -W --upstream-node-id=2

En donde se indica que este es el nodo 1 y se indica la IP del host. Cuando se copie el archivo al nodo 2 de debe cambiar el ideal del nodo (node_id), el nombre (node_name) y la configuración de la base de datos (conninfo). Además, se tiene que agregar al la ruta a los binarios agregado la siguiente línea

port PATH=$PATH:/usr/pgsql-15/bin/

Publicidad


Configuración del nodo maestro

Ahora el sistema ya está configurado, se tiene que registrar el servidor principal como nodo maestro, lo que se hace con el comando

repmgr -f repmgr.conf master register

Con lo que se le indica al repmgr que lea la configuración del archivo repmgr.conf y registre este nodo como maestro.

Creación de una réplica

El servidor donde se ejecutará la réplica se debe instalar la base de datos, repmgr y crear un archivo repmgr.conf como el del nodo 1 cambiado los datos para este nodo. Una vez hecho esto se debe para PostgreSQL e iniciar el proceso de réplica con el siguiente comando

repmgr -h 192.168.1.41 -U repmgr -d repmgr -f repmgr.conf standby clone -F

Con lo que se le indicará a repmgr que replique la base de datos 192.168.1.41 en base al archivo repmgr.conf y la configure como réplica. El tiempo de réplica dependerá del tamaño de la base de datos y la velocidad de red. Una vez finalizado el proceso, se debe indicar PostgreSQL y registrar la base de datos como réplica.

repmgr -f repmgr.conf standby register

En cada uno de los servidores se debe iniciar repmgrd para monitorizar la base de datos y promocionar la réplica a maestra en caso de fallo

repmgrd -f repmgr.conf --verbose

Publicidad


Comprobar el estado del cluster

Para comprobar el estado del cluster se puede acceder, en cualquiera de los dos servidores a la base de datos repmgr para ver los eventos en la tabla events y el estado de los nodos en la tabla nodes.

En la tabla eventos se debe ver cuándo se ha agregado un nodo, cuando se pierde la conexión y cuando un nodo es promocionado a maestro. Una vez configurado el clúster solamente se debería ver los registros. Por otro lado, en la tabla nodes se debe ver todos los nodos y su estado actual.

Conclusiones

En esta entrada se ha visto cómo configurar un sistema de alta disponibilidad en PostgreSQL con repmgr. Un proceso complejo pero que permite disponer de una base de datos con tolerancia a fallos.

La semana que viene veremos cómo verificar el funcionamiento del clúster y recuperar este en caso de caída.

Imagen de lavivm en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: Herramientas Etiquetado como: Linux, PostgreSQL, Rocky Linux

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Aplicación web interactiva que muestra un mapa de Madrid con puntos de interés destacados, creado utilizando la biblioteca Folium. Tutorial: Creando un mapa interactivo con Folium en Python publicado el diciembre 13, 2024 | en Python
  • Entendiendo la validación cruzada: Selección de la profundidad óptima en un árbol de decisión publicado el septiembre 13, 2024 | en Ciencia de datos
  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Concatenar listas en Python publicado el agosto 19, 2019 | en Python
  • Listado de contraseñas de aplicación creadas Resolver problema de credenciales en Bitbucket publicado el marzo 16, 2022 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto