GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar la alta disponibilidad de Nginx con Pacemaker, Corosync y Crmsh en Ubuntu 16.04

En este tutorial, le mostraré paso a paso cómo crear un servidor web Nginx en clúster de alta disponibilidad con Pacemaker, Corosync y Crmsh. Crearemos un servidor web Nginx de clúster activo-pasivo o clúster de conmutación por error usando Pacemaker en Ubuntu 16.04.

Marcapasos es un software de administración de clústeres de código abierto que logra la máxima disponibilidad de sus servicios. Es un administrador 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 grupal con funciones adicionales para implementar alta disponibilidad dentro de las aplicaciones.

Hay varias aplicaciones disponibles para la interfaz de Pacemaker y Crmsh es uno de ellos. Es una interfaz de línea de comandos de Pacemaker para administrar la pila de alta disponibilidad de Pacemaker. Crmsh está escrito en Python. Podemos crear, configurar y solucionar problemas de la pila Pacemaker HA 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 raíz

¿Qué haremos?

  1. Asignación del archivo de hosts.
  2. Instalar y configurar Nginx.
  3. Instale Pacemaker, Corosync y Crmsh.
  4. Configurar clave Corosync.
  5. Iniciar todos los servicios.
  6. Crear y configurar un clúster.
  7. Pruebas.

Paso 1:asignación del archivo de hosts

Nota:
Ejecute los pasos 1 - 3 en los tres servidores 'web01', 'web02', 'web03'.

En este tutorial, usaré 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 lograrlo, edite el archivo '/etc/hosts' en todos los servidores con vim.

vim /etc/hosts

Pegue 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.co

Guarde el archivo y salga de vim.

Luego, pruebe 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 mediante la creación del clúster de conmutación por error con Pacemaker. Primero debemos instalar Nginx en cada uno de los nodos del servidor.

Instale Nginx con el siguiente comando apt.

apt install -y nginx

Cuando finalice la instalación, reemplace la página predeterminada de nginx con una página única en cada servidor ejecutando los comandos a continuación para que podamos identificar más tarde qué servidor entregó una página.

#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html

Ahora detenga el servidor web.

systemctl stop nginx

La instalación y configuración de Nginx se ha completado.

Paso 3:instale Pacemaker, Corosync y Crmsh

Pacemaker es una aplicación de administració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 administrar un clúster de Pacemaker. Todas estas aplicaciones están disponibles en el repositorio de Uubuntu.

Instale Pacemaker, Corosync y crmsh con el siguiente comando apt.

apt install -y pacemaker corosync crmsh

Después de la instalación, todos estos servicios se ejecutan automáticamente en el sistema. Deténgalos con los siguientes comandos systemctl.

systemctl stop corosync
systemctl stop pacemaker

Se instaló la pila de software que proporciona alta disponibilidad para Nginx.

Paso 4:configurar Corosync

Nota:
Ejecute el paso 4 solo en el servidor 'web01'.

Como no usamos pcsd para Ubuntu, debemos 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 otros servidores 'web02' y 'web03'.

Antes de generar la clave de Corosync, debemos instalar el nuevo paquete 'haveged'. Se utiliza para obtener mejores números aleatorios para la generación de claves de Corosync.

Instale haveged desde el repositorio con el comando apt.

apt install -y haveged

Ahora genere una nueva clave Corosync con el siguiente comando.

corosync-keygen

Cuando se completa la generación de claves, puede ver la nueva clave 'authkey' en el directorio '/etc/corosync/'.

ls -lah /etc/corosync/

A continuación, vaya al directorio '/etc/corosync' y haga una copia de seguridad del archivo de configuración predeterminado 'corosync.conf'.

cd /etc/corosync/
mv corosync.conf corosync.conf.bekup

Luego cree un nuevo archivo de configuración 'corosync.conf' con vim.

vim corosync.conf

Pegue la siguiente configuración en ese archivo.

# Totem Protocol Configuration
totem {
  version: 2
  cluster_name: hakase-cluster
  transport: udpu

# Interface configuration for Corosync
  interface {
    ringnumber: 0
    bindnetaddr: 10.0.15.0
    broadcast: yes
    mcastport: 5407
  }
}

# Nodelist - Server List
nodelist {
  node {
    ring0_addr: web01
  }
  node {
    ring0_addr: web02
  }
  node {
    ring0_addr: web03
  }
}

# Quorum configuration
quorum {
  provider: corosync_votequorum
}

# Corosync Log configuration
logging {
  to_logfile: yes
  logfile: /var/log/corosync/corosync.log
  to_syslog: yes
  timestamp: on
}

service {
  name: pacemaker
  ver: 0
}

Guarde el archivo y salga del editor.

A continuación, copie la clave de autenticación y el archivo de configuración del servidor 'web01' al servidor 'web02' y 'web03'.

scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/

Cuando todo esté completo, vaya a los servidores 'web02' y 'web03', luego verifique los archivos.

ssh [email protected]
cd /etc/corosync/
ls -lah

La configuración de Corosync se ha completado.

Paso 5:iniciar todos los servicios de clúster

Nota:
Ejecute el paso 5 en todos los servidores.

Inicie la pila de software del clúster de alta disponibilidad, Pacemaker y corosync, en todos los servidores. Luego habilítelo para que se inicie automáticamente en el momento del arranque.

Inicie Corosync y agréguelo para que se inicie automáticamente al arrancar.

systemctl start corosync
systemctl enable corosync

Ahora inicie el marcapasos y habilítelo para que se inicie en el arranque.

systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker

Todos los servicios se han iniciado, verifique todos los nodos y asegúrese de que el estado del servidor sea 'En línea' en todos ellos.

crm status

O puede comprobar el estado comprobando los miembros de Corosync con el siguiente comando corosync-cmapctl.

corosync-cmapctl | grep members

Verá todas las direcciones IP del servidor.

Paso 6:crear y configurar el clúster

NOTA:
Ejecute el paso 6 solo en el servidor web01

En este paso, configuraremos el clúster Nginx activo-pasivo mediante la herramienta de línea de comandos crmsh. Dado que no usamos un dispositivo STONITH, queremos desactivar STONITH e ignorar la política de quórum en nuestro clúster.

Ejecute los comandos crm a continuación para deshabilitar 'STONITH' e ignorar la política de quórum.

crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore

Ahora verifique el estado de STONITH y la política de quórum con el siguiente comando crm.

crm configure show

Verá el resultado como se muestra a continuación.

A continuación, necesitamos crear algunos recursos nuevos para el clúster. Pacemaker admite los siguientes tipos de agentes de recursos (RA).

  • LSB (basado en el estándar de Linux):proporcionado por la distribución de Linux. ejemplo:secuencia de comandos '/etc/init.d/service'.
  • 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.

Cree un nuevo recurso 'virtual_ip' para la configuración de IP flotante con el siguiente comando crm.

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 'servidor web' de nginx, cree el recurso con el siguiente comando.

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 haya terminado, verifique los nuevos recursos 'virtual_ip' y 'webserver' con el siguiente comando. Asegúrese de que todos los recursos tengan el estado 'iniciado'.

crm resource status

Finalmente, necesitamos agregar un grupo para la nueva configuración del servicio 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 creamos la IP flotante y el Servicio, ahora agregue esos recursos a un nuevo grupo llamado 'hakase_balancing' con el siguiente comando. Por supuesto, puede elegir su propio nombre de grupo aquí, solo asegúrese de reemplazar el nombre donde sea que se use.

sudo crm configure group hakase_balancing virtual_ip webserver

Se ha definido un nuevo grupo de recursos con el nombre 'hakase_balancing'. Puede comprobarlo con el siguiente comando.

crm resource show

Obtendrá un grupo llamado hakase_balancing con recursos de miembros 'virtual_ip' y 'webserver'.

La configuración del clúster se ha completado.

Paso 7 - Prueba

Probando 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'.

Probando el servidor web Nginx desde un navegador web. Visite la dirección IP flotante, el nombre de mi servidor de prueba es - ha-web.co . Use el nombre que ha elegido para su servidor aquí.

Todos los recursos están en el nodo 'web01'.

Prueba de clúster activo-pasivo o conmutación por error

Detenga el clúster en el servidor 'web01' ejecutando el siguiente comando en el nodo 'web01'.

crm cluster stop

Obtendrá el resultado 'INFO:Servicios de clúster detenidos '.

Ahora inicie sesión en el nodo 'web02' y verifique el estado del clúster.

crm status


Ahora obtiene el resultado de que el nodo 'web01' está 'Fuera de línea', y los recursos de virtual_ip y el servidor web se cambian al nodo 'web02'.

Cuando vuelva a visitar la IP flotante 'ha-web.co ', obtendrá la página web02.

Nginx High Availability with Pacemaker, Corosync y Crmsh en Ubuntu 16.04 se instaló y probó con éxito.


Ubuntu
  1. Cómo configurar su firewall de Ubuntu con UFW y establecer reglas de firewall

  2. Cómo configurar la alta disponibilidad de MariaDB con Heartbeat y DRBD en Ubuntu 16.04 LTS

  3. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

  4. Cómo instalar y configurar PHP y Nginx (LEMP) en Ubuntu 20.04

  5. Cómo configurar el clúster de alta disponibilidad de Nginx con Pacemaker en CentOS 7

Cómo instalar Django con PostgreSQL y Nginx en Ubuntu 16.04

Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 18.04

Cómo Instalar Wordpress con Nginx, MariaDB y HHVM en Ubuntu 15.04

Cómo instalar el conjunto de reglas básicas de OWASP en Modsecurity con Nginx en Ubuntu 20.04

Cómo configurar ModSecurity con Nginx en Debian/Ubuntu

Cómo configurar un servidor Seafile con Nginx en Ubuntu 18.04