Cómo escalar WordPress con HAProxy y GlusterFS

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Aprende a escalar tu sitio de WordPress en múltiples servidores. Este tutorial explica cómo configurar un sistema de archivos replicado con GlusterFS para almacenar y compartir tu sitio de WordPress entre varios servidores. Además, configuraremos HAProxy para balancear la carga de tráfico entre estos servidores de manera uniforme.

En un tutorial anterior, mostramos cómo escalar sitios de WordPress utilizando NFS. Sin embargo, este enfoque requiere un servidor dedicado para alojar la unidad compartida NFS, lo que introduce un único punto de fallo.

Con GlusterFS, no necesitas un servidor dedicado, ya que puede instalarse directamente en los servidores que comparten información. Esto elimina el riesgo de un único punto de fallo.

Como se mencionó, configuraremos un sistema de archivos replicado para alojar nuestro sitio de WordPress. Las modificaciones realizadas en el disco se replicarán casi instantáneamente entre los servidores. Si la red tiene una velocidad mínima de 1 GB, la latencia será imperceptible.

Infraestructura

HostnameSistema OperativoRol
lb1DebianBalanceador de carga HAProxy
wordpress1DebianNodo de WordPress y GlusterFS
wordpress2DebianNodo de WordPress y GlusterFS
wordpress3DebianNodo de WordPress y GlusterFS

Implementación de HAProxy

HAProxy es un balanceador de carga rápido y sencillo de configurar.

  1. Conéctate al servidor HAProxy mediante SSH.
  2. Instala HAProxy:bashCopiarEditarsudo apt install haproxy
  3. Abre el archivo de configuración de HAProxy en un editor de texto, como VIM.
  4. Configura HAProxy para balancear el tráfico entre los tres servidores de WordPress.
  5. Guarda los cambios y cierra el editor.

Instalación y configuración de GlusterFS

Para compartir la instalación de WordPress entre los servidores, se requiere instalar GlusterFS. Realiza las siguientes tareas en cada servidor:

  1. Instalar GlusterFS:
    sudo apt install glusterfs-server
  2. Crear un directorio en cada servidor para el brick de GlusterFS:

    sudo mkdir -p /srv/data/wordpress

Preparar los servicios en los hosts y la resolución de nombres

Entramos en los archivos de hosts y añadimos los 3 tres servidores en resolución directa. Realiza las siguientes tareas en cada servidor:

  1. Entrar en /etc/hosts:
    nano /etc/hosts
  2. Añadir todos los hosts en cada servidor:

    192.168.1.2 wordpress1
    192.168.1.3 wordpress2
    192.168.1.4 wordpress3

Arrancar y configuraro en el arranque

Para iniciar el servicio glusterd en ambos servidores, ejecute:

sudo systemctl start glusterd.service

Para habilitar el servicio para que se inicie automáticamente al arranque, ejecute:

sudo systemctl enable glusterd.service

Verifique el estado del servicio con:

sudo systemctl status glusterd.service

Añadir peers de GlusterFS y crear el brick replicado

  1. Conéctate a uno de los servidores de WordPress.
  2. Añade los otros servidores como peers:

    gluster peer probe wordpress2
    gluster peer probe wordpress3
  3. Verifica el estado de los peers:

    sudo gluster peer status
  4. Crea un volumen replicado llamado wordpress-vol utilizando los tres servidores:

    sudo gluster volume create wordpress-vol replica 3 transport tcp \
    wordpress1:/srv/data/wordpress \
    wordpress2:/srv/data/wordpress \
    wordpress3:/srv/data/wordpress

    Si el volumen de GlusterFS está en la misma partición que el sistema raíz de Linux, añade force al comando:

    sudo gluster volume create wordpress-vol replica 3 transport tcp \
    wordpress1:/srv/data/wordpress \
    wordpress2:/srv/data/wordpress \
    wordpress3:/srv/data/wordpress force
  5. Inicia el volumen wordpress-vol:

    gluster volume start wordpress-vol
  6. Verifica la configuración del volumen:

    sudo gluster volume info
  7. Limita el acceso al volumen únicamente a los servidores de WordPress:

    sudo gluster volume set wordpress-vol auth.allow wordpress1,wordpress2,wordpress3

Montar el brick replicado

Este paso debe realizarse en todos los servidores de WordPress. Montaremos el volumen replicado de GlusterFS como el directorio raíz del sitio web.

  1. Edita el archivo fstab:

    sudo vi /etc/fstab
  2. Añade la siguiente línea para hacer que el montaje sea persistente. Cambia wordpress1 por wordpress2 o wordpress3 según corresponda:

    wordpress1:/wordpress-vol /var/www/html glusterfs defaults,_netdev,log-level=WARNING,log-file=/var/log/gluster.log 0 0
  3. Guarda los cambios y cierra el editor.
  4. Monta el volumen:

    sudo mount -a