Nginx HA · 9 min read · Nov 29, 2025
Cómo configurar alta disponibilidad de Nginx con Pacemaker, Corosync y Crmsh en Ubuntu 16.04
En este tutorial, te mostraré paso a paso cómo crear un servidor web Nginx en clúster de alta disponibilidad con Pacemaker, Corosync y Crmsh. Crearemos un clúster activo-pasivo o clúster de conmutación por error de Nginx utilizando Pacemaker en Ubuntu 16.04.
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 desarrollado por ClusterLabs desde 2007.
El Corosync Cluster Engine es un proyecto de código abierto derivado del proyecto OpenAIS en 2008 y lanzado bajo la Licencia BSD. Es un sistema de comunicación en grupo con características adicionales para implementar alta disponibilidad dentro de las aplicaciones.
Hay varias aplicaciones disponibles para la interfaz de Pacemaker y Crmsh es una de ellas. Es una interfaz de línea de comandos de Pacemaker para gestionar la pila de alta disponibilidad de Pacemaker. Crmsh está escrito en python. Podemos crear, configurar y solucionar problemas de la pila HA de Pacemaker con la herramienta de línea de comandos Crmsh.
Requisitos previos
- Tres servidores Ubuntu 16.04 - web01 10.0.15.11
- web02 10.0.15.12
- web03 10.0.15.13
- Una dirección IP flotante 10.0.15.15
- Privilegios de root
¿Qué haremos?
- Mapeo del archivo Hosts.
- Instalar y configurar Nginx.
- Instalar Pacemaker, Corosync y Crmsh.
- Configurar la clave de Corosync.
- Iniciar todos los servicios.
- Crear y configurar un clúster.
- Pruebas.
Paso 1 - Mapeo del archivo Hosts
Nota:
Ejecuta los pasos 1 - 3 en los tres servidores ‘web01’, ‘web02’, ‘web03’.
En este tutorial, utilizaré 3 servidores Ubuntu 16.04 y cada uno de ellos tiene un nombre de host único: ‘web01’, ‘web02’ y ‘web03’. Cada servidor puede conectarse a los otros servidores con el nombre de host del servidor.
Para lograr esto, edita el archivo ‘/etc/hosts’ en todos los servidores con vim.
vim /etc/hostsPega la configuración de /etc/hosts a continuación.
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.coGuarda el archivo y sal de vim.
A continuación, prueba todos los servidores haciendo ping a los otros servidores a través de cada nombre de host.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Paso 2 - Instalar y configurar Nginx
Ahora comenzamos a crear la configuración de alta disponibilidad del servidor web Nginx creando el clúster de conmutación por error con Pacemaker. Primero necesitamos instalar Nginx en cada uno de los nodos del servidor.
Instala Nginx con el comando apt a continuación.
apt install -y nginxCuando la instalación finalice, reemplaza la página predeterminada de nginx con una página única en cada servidor ejecutando los comandos a continuación para que luego podamos identificar qué servidor entregó una página.
#Ejecutar comando en 'web01'
echo 'web01 - hakase-labs
' > /var/www/html/index.html
#Ejecutar comando en 'web02'
echo 'web02 - hakase-labs
' > /var/www/html/index.html
#Ejecutar comando en 'web03'
echo 'web03 - hakase-labs
' > /var/www/html/index.htmlAhora detén el servidor web.
systemctl stop nginxLa instalación y configuración de Nginx se ha completado.

Paso 3 - Instalar Pacemaker, Corosync y Crmsh
Pacemaker es una aplicación de gestión de clústeres de código abierto. Corosync es un motor de clúster para Pacemaker, y Crmsh es una herramienta basada en python para gestionar un clúster de Pacemaker. Todas estas aplicaciones están disponibles en el repositorio de Ubuntu.
Instala Pacemaker, Corosync y crmsh con el comando apt a continuación.
apt install -y pacemaker corosync crmshDespués de la instalación, todos estos servicios se ejecutan automáticamente en el sistema. Detenlos con los comandos systemctl a continuación.
systemctl stop corosync
systemctl stop pacemakerLa pila de software que proporciona la alta disponibilidad para Nginx ha sido instalada.

Paso 4 - Configurar Corosync
Nota:
Ejecuta el paso 4 solo en el servidor ‘web01’.
Dado que no estamos usando pcsd para Ubuntu, necesitamos configurar Corosync manualmente. Generaremos la clave de Corosync para la autenticación del clúster y crearemos un nuevo archivo de configuración de Corosync en el servidor ‘web01’, luego copiaremos la clave y la configuración a los otros servidores ‘web02’ y ‘web03’.
Antes de generar la clave de Corosync, necesitamos instalar el nuevo paquete ‘haveged’. Se utiliza para obtener mejores números aleatorios para la generación de la clave de Corosync.
Instala haveged desde el repositorio con el comando apt.
apt install -y havegedAhora genera una nueva clave de Corosync con el comando a continuación.
corosync-keygenCuando la generación de la clave esté completa, podrás ver la nueva clave ‘authkey’ en el directorio ‘/etc/corosync/‘.
ls -lah /etc/corosync/
A continuación, ve al directorio ‘/etc/corosync’ y haz una copia de seguridad del archivo de configuración predeterminado ‘corosync.conf’.
cd /etc/corosync/
mv corosync.conf corosync.conf.bekupLuego crea un nuevo archivo de configuración ‘corosync.conf’ con vim.
vim corosync.confPega la configuración a continuación en ese archivo.
# Configuración del Protocolo Totem
totem {
version: 2
cluster_name: hakase-cluster
transport: udpu
# Configuración de la interfaz para Corosync
interface {
ringnumber: 0
bindnetaddr: 10.0.15.0
broadcast: yes
mcastport: 5407
}
}
# Nodelist - Lista de Servidores
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Configuración del Quorum
quorum {
provider: corosync_votequorum
}
# Configuración del Log de Corosync
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
service {
name: pacemaker
ver: 0
}Guarda el archivo y sal del editor.
A continuación, copia la clave de autenticación y el archivo de configuración del servidor ‘web01’ a los servidores ‘web02’ y ‘web03’.
scp /etc/corosync/* root@web02:/etc/corosync/
scp /etc/corosync/* root@web03:/etc/corosync/
Cuando todo esté completo, ve a los servidores ‘web02’ y ‘web03’, luego verifica los archivos.
ssh root@web02
cd /etc/corosync/
ls -lah
La configuración de Corosync se ha completado.
Paso 5 - Iniciar todos los servicios del clúster
Nota:
Ejecuta el paso 5 en todos los servidores.
Inicia la pila de software HA, pacemaker y corosync, en todos los servidores. Luego habilítalo para que se inicie automáticamente al arrancar.
Inicia Corosync y agrégalo para que se inicie automáticamente al arrancar.
systemctl start corosync
systemctl enable corosyncAhora inicia pacemaker y habilítalo para que se inicie al arrancar.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemakerTodos los servicios han sido iniciados, verifica todos los nodos y asegúrate de que el estado del servidor sea ‘En línea’ en todos ellos.
crm status
O puedes verificar el estado comprobando los miembros de Corosync con el comando corosync-cmapctl a continuación.
corosync-cmapctl | grep membersVerás todas las direcciones IP de los servidores.

Paso 6 - Crear y configurar el clúster
NOTA:
Ejecuta el paso 6 solo en el servidor web01
En este paso, configuraremos el clúster Nginx activo-pasivo utilizando la herramienta de línea de comandos crmsh. Dado que no estamos utilizando un dispositivo STONITH, queremos deshabilitar STONITH e ignorar la política de Quorum en nuestro clúster.
Ejecuta los comandos crm a continuación para deshabilitar ‘STONITH’ e ignorar la política de Quorum.
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignoreAhora verifica el estado de STONITH y la política de quorum con el comando crm a continuación.
crm configure showVerás el resultado a continuación.

A continuación, necesitamos crear algunos nuevos recursos para el clúster. Pacemaker admite los siguientes tipos de Agentes de Recursos (RA).
- LSB (Linux Standard Based) - Proporcionado por la distribución de Linux. ej: ‘/etc/init.d/service’ script.
- OCF (Open Cluster Framework) - Conjunto de herramientas para computación en clúster. El proyecto es parte de la Fundación Linux.
Para nuestro servidor web Nginx HA, necesitamos crear dos recursos OCF: ‘virtual_ip’ para la IP flotante y ‘webserver’ para el servicio nginx.
Crea un nuevo recurso ‘virtual_ip’ para la configuración de la IP flotante con el comando crm a continuación.
sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"Y para el ‘webserver’ de nginx, crea el recurso con el comando a continuación.
sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"Cuando esto esté hecho, verifica los nuevos recursos ‘virtual_ip’ y ‘webserver’ con el comando a continuación. Asegúrate de que todos los recursos tengan el estado ‘iniciado’.
crm resource status
Finalmente, necesitamos agregar un grupo para la nueva configuración del servicio de IP de conmutación por error. Queremos migrar el servicio ‘Nginx’ en un recurso ‘webserver’ con una IP flotante en un recurso ‘virtual_ip’.
Ya hemos creado la IP flotante y el servicio, ahora agrega esos recursos a un nuevo grupo llamado ‘hakase_balancing’ con el comando a continuación. Por supuesto, puedes elegir tu propio nombre de grupo aquí, solo asegúrate de reemplazar el nombre donde sea que se use.
sudo crm configure group hakase_balancing virtual_ip webserverSe ha definido un nuevo grupo de recursos con el nombre ‘hakase_balancing’. Puedes verificarlo con el comando a continuación.
crm resource showObtendrás un grupo llamado hakase_balancing con miembros ‘virtual_ip’ y ‘webserver’ recursos.

La configuración del clúster se ha completado.
Paso 7 - Pruebas
Prueba el estado del nodo y el estado del clúster.
crm status
Tenemos 3 nodos con estado ‘En línea’.
Tenemos un grupo de recursos llamado ‘hakase_balancing’, y ahora se está ejecutando en el nodo ‘web01’.
Prueba el servidor web Nginx desde un navegador web. Visita la dirección IP flotante, el nombre de mi servidor de prueba es - ha-web.co. Usa el nombre que has elegido para tu servidor aquí.
Todos los recursos están en el nodo ‘web01’.
Prueba del clúster activo-pasivo o de conmutación por error
Detén el clúster en el servidor ‘web01’ ejecutando el comando a continuación en el nodo ‘web01’.
crm cluster stopObtendrás el resultado ‘ INFO: Servicios del clúster detenidos ‘.
Ahora inicia sesión en el nodo ‘web02’ y verifica el estado del clúster.
crm status
Ahora obtienes el resultado de que el nodo ‘web01’ está ‘Fuera de línea’, y los recursos de virtual_ip y webserver se han cambiado al nodo ‘web02’.
Cuando vuelvas a visitar la IP flotante ‘ ha-web.co ‘, obtendrás la página de web02.
La alta disponibilidad de Nginx con Pacemaker, Corosync y Crmsh en Ubuntu 16.04 se ha instalado y probado con éxito.
Referencia
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.