Alta Disponibilidad · 8 min read · Dec 06, 2025

Cómo configurar la alta disponibilidad de Nginx con Pacemaker y Corosync en CentOS 7

En este tutorial, te guiaremos paso a paso sobre cómo crear un Servidor Web Nginx en un Clúster de Alta Disponibilidad con Pacemaker, Corosync y Pcsd. Crearemos el Clúster Activo-Pasivo o Clúster de Failover del servidor web Nginx utilizando Pacemaker en un sistema CentOS 7.

Pacemaker es un software de gestión de clústeres de código abierto que logra la máxima alta disponibilidad de tus servicios. Es un gestor de clústeres HA avanzado y escalable distribuido por ClusterLabs.

Corosync Cluster Engine es un proyecto de código abierto derivado del proyecto OpenAIS bajo la nueva Licencia BSD. Es un sistema de comunicación de grupo con características adicionales para implementar alta disponibilidad dentro de las aplicaciones.

Hay algunas aplicaciones para las interfaces de Pacemaker. Pcsd es una de las interfaces de línea de comandos y GUI de Pacemaker para gestionar Pacemaker. Podemos crear, configurar o agregar un nuevo nodo al clúster con el comando pcsd pcs.

Requisitos previos

  • 2 o más Servidores CentOS 7 - web01 10.0.15.10
  • web02 10.0.15.11
  • web03 10.0.15.12
  • Dirección IP flotante 10.0.15.15
  • Privilegios de Root

Lo que haremos:

  1. Mapear el archivo de hosts
  2. Instalar el repositorio Epel y Nginx
  3. Instalar y configurar Pacemaker, Corosync y Pcsd
  4. Crear y configurar el clúster
  5. Deshabilitar STONITH e ignorar la política de quórum
  6. Agregar la IP flotante y los recursos
  7. Agregar reglas al clúster
  8. Configurar Firewalld
  9. Probar la configuración

Paso 1 - Mapear el archivo de hosts

Nota: Ejecuta los pasos 1 - 3 en todos los servidores web01, web02 y web03.

El primer paso que debemos hacer es editar el archivo de hosts en cada servidor para mapear el nombre de host de todos los servidores. Tenemos los servidores ‘web01’, ‘web02’ y ‘web03’, inicia sesión en cada servidor con la cuenta ssh.

ssh root@web[01,02,03]

Edita el archivo ‘/etc/hosts’ con vim.

vim /etc/hosts

Pega la siguiente configuración allí.

10.0.15.10      web01  
10.0.15.11      web02  
10.0.15.12      web03

Guarda y sal.

Ahora prueba la configuración de mapeo de hosts.

ping -c 3 web01  
ping -c 3 web02  
ping -c 3 web03

Asegúrate de que ‘web01’, ‘web02’ y ‘web03’ estén mapeados a las direcciones IP correctas.

Verificar la interconexión del servidor con ping

Paso 2 - Instalar el repositorio Epel y Nginx

En este paso, instalaremos el repositorio epel y luego instalaremos el servidor web Nginx. Se necesita el repositorio EPEL o Extra Packages for Enterprise Linux para instalar los paquetes de Nginx.

Instala el repositorio EPEL utilizando el siguiente comando yum.

yum -y install epel-release

Ahora instala el servidor web Nginx desde el repositorio EPEL.

yum -y install nginx

Después de que la instalación esté completa, cambia la página index.html predeterminada en cada servidor por una nueva página.

#Ejecutar comando en 'web01'  
echo '

web01 - hakase-labs

' > /usr/share/nginx/html/index.html #Ejecutar comando en 'web02' echo '

web02 - hakase-labs

' > /usr/share/nginx/html/index.html #Ejecutar comando en 'web03' echo '

web03 - hakase-labs

' > /usr/share/nginx/html/index.html

Instalar repositorio epel y nginx

El repositorio EPEL y el servidor web Nginx ahora están instalados en el sistema.

Paso 3 - Instalar y configurar Pacemaker, Corosync y Pcsd

Pacemaker, Corosync y Pcsd están disponibles en el repositorio del sistema predeterminado. Por lo tanto, todos pueden ser instalados desde el repositorio de CentOS utilizando el siguiente comando yum.

yum -y install corosync pacemaker pcs

Después de que la instalación se haya completado, habilita todos los servicios para que se inicien automáticamente al arrancar el sistema utilizando los comandos systemctl a continuación.

systemctl enable pcsd  
systemctl enable corosync  
systemctl enable pacemaker

Ahora inicia la interfaz de línea de comandos de Pacemaker pcsd en todos los servidores.

systemctl start pcsd

A continuación, crea una nueva contraseña para el usuario ‘hacluster’ y usa la misma contraseña para todos los servidores. Este usuario se ha creado automáticamente durante la instalación del software.

Así es como configuras una contraseña para el usuario ‘hacluster‘.

passwd hacluster  
Introduce nueva contraseña:

El stack de software de alta disponibilidad Pacemaker, Corosync y Pcsd está instalado en el sistema.

Instalar y configurar Pacemaker, Corosync y Pcsd

Paso 4 - Crear y configurar el clúster

Nota: Ejecuta los pasos 4 - 7 solo en ‘web01’.

En este paso, crearemos un nuevo clúster con 3 servidores centos. Luego configuraremos la dirección IP flotante y agregaremos nuevos recursos de Nginx.

Para crear el clúster, necesitamos autorizar todos los servidores utilizando el comando pcs y el usuario hacluster.

Autoriza todos los servidores con el comando pcs y el usuario y contraseña hacluster.

pcs cluster auth web01 web02 web03  
Nombre de usuario: hacluster  
Contraseña: aqwe123@

Crear y configurar el clúster

Ahora es el momento de configurar el clúster. Define el nombre del clúster y todos los servidores que formarán parte del clúster.

pcs cluster setup --name hakase_cluster web01 web02 web03

Ahora inicia todos los servicios del clúster y también habilítalos.

pcs cluster start --all  
pcs cluster enable --all

Iniciar el clúster

A continuación, verifica el estado del clúster.

pcs status cluster

Verificar el estado del clúster

Paso 5 - Deshabilitar STONITH e ignorar la política de quórum

Dado que no estamos utilizando el dispositivo de cercado, deshabilitaremos el STONITH. STONITH o Shoot The Other Node In The Head es la implementación de cercado en Pacemaker. Si estás en producción, es mejor habilitar STONITH.

Deshabilita STONITH con el siguiente comando pcs.

pcs property set stonith-enabled=false

A continuación, para la política de quórum, ignórala.

pcs property set no-quorum-policy=ignore

Verifica la lista de propiedades y asegúrate de que stonith y la política de quórum estén deshabilitadas.

pcs property list

Deshabilitar STONITH e ignorar la política de quórum

El STONITH y la política de quórum están deshabilitados.

Paso 6 - Agregar la IP flotante y los recursos

La IP flotante es la dirección IP que puede ser migrada/movida automáticamente de un servidor a otro en el mismo Centro de Datos. Y ya hemos definido la dirección IP flotante para la alta disponibilidad de Pacemaker como ‘10.0.15.15’. Ahora queremos agregar dos recursos, el recurso de dirección IP flotante con el nombre ‘virtual_ip’ y un nuevo recurso para el servidor web Nginx llamado ‘webserver’.

Agrega el nuevo recurso de dirección IP flotante ‘virtual_ip’ utilizando el comando pcs como se muestra a continuación.

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

A continuación, agrega un nuevo recurso para el Nginx ‘webserver’.

pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

Asegúrate de que no obtuviste un resultado de error, luego verifica los recursos disponibles.

pcs status resources

Verás dos recursos ‘virtual_ip’ y ‘webserver’. Se han agregado nuevos recursos para la IP flotante y el servidor web Nginx.

Paso 7 - Agregar reglas de restricción al clúster

En este paso, configuraremos las reglas de alta disponibilidad y estableceremos la restricción de recursos con la interfaz de línea de comandos pcs.

Establece la restricción de colocación para los recursos webserver y virtual_ip con puntaje ‘INFINITO’. Además, configura los recursos webserver y virtual_ip como los mismos en todos los nodos del servidor.

pcs constraint colocation add webserver virtual_ip INFINITY

Establece que los recursos ‘virtual_ip’ y ‘webserver’ siempre estén en los mismos nodos del servidor.

pcs constraint order virtual_ip then the webserver

A continuación, detén el clúster y luego inícialo nuevamente.

pcs cluster stop --all  
pcs cluster start --all

Agregar reglas de restricción al clúster

Ahora, verifica nuevamente los recursos y verás su estado como ‘Iniciado’ en el mismo servidor ‘web01’.

pcs status resources

Los recursos virtual_ip y webserver se han iniciado en el mismo servidor/nodo ‘web01’.

Paso 8 - Configurar Firewalld

El HA-Cluster se ejecutará bajo la configuración del firewall firewalld - instálalo si no tienes el paquete.

yum -y install firewalld

Inicia firewalld y habilítalo para que se ejecute automáticamente cada vez que se inicie el sistema utilizando los siguientes comandos systemctl.

systemctl start firewalld  
systemctl enable firewalld

A continuación, agrega nuevos servicios al firewalld con los comandos firewall-cmd - agrega el servicio de alta disponibilidad, servicios HTTP y HTTPS para Nginx.

firewall-cmd --permanent --add-service=high-availability  
firewall-cmd --permanent --add-service=http  
firewall-cmd --permanent --add-service=https

Recarga la configuración del firewall y verifica todos los servicios.

firewall-cmd --reload  
firewall-cmd --list-all

Asegúrate de que el servicio ha con HTTP y https esté en la lista.

Recargar el firewall y verificar el conjunto de reglas del firewall

Paso 9 - Pruebas

En este paso, vamos a realizar algunas pruebas para el clúster. Prueba el estado del nodo (‘En línea’ o ‘Fuera de línea’), prueba los miembros y el estado de corosync, y luego prueba la alta disponibilidad del servidor web Nginx accediendo a la dirección IP flotante.

Prueba el estado del nodo con el siguiente comando.

pcs status nodes

Probando la configuración

Todos los nodos están ‘En línea’.

Prueba los miembros de corosync.

corosync-cmapctl | grep members

Obtendrás la dirección IP de los miembros de Corosync.

Direcciones IP de los miembros de Corosync

Verifica los miembros de Corosync y verás el resultado como se muestra a continuación.

pcs status corosync

Estado de Corosync

Y por último, verifica la alta disponibilidad del servidor web. Abre tu navegador web y escribe la dirección IP flotante ‘10.0.15.15’.

Verás la página web del servidor ‘web01’.

A continuación, detén el clúster en el servidor ‘web01’ con el comando a continuación.

pcs cluster stop web01

Y verifica nuevamente la página, y obtendrás la página del servidor ‘web02’ como se muestra a continuación.

Adicional:

Verifica el estado del clúster con el comando a continuación.

pcs status

Y obtendrás el resultado como se muestra a continuación.

Verificar el estado de pcs

La configuración de alta disponibilidad del servidor web Nginx con Pacemaker, Corosync y Pcsd en el servidor CentOS 7 se ha completado con éxito.

Referencia

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.