¿Cómo cargo el equilibrio en WordPress con 2 servidores web LAP y 1 base de datos Mysql?

Tener dos servidores de aplicaciones PHP con un único servidor de base de datos es una configuración bastante común. Esto significa que lo que su cliente está pidiendo es bastante común.

Al escalar un CMS horizontalmente, debemos considerar tres partes:

  • La base de datos
  • Los servidores de aplicaciones (detrás de un equilibrador de carga)
  • Los archivos cargados a través de la interfaz de usuario

El desafío de escalar un CMS es que permiten la publicación de contenido a través de su interfaz. La mayor parte del contenido se almacena en la base de datos, lo que lo pone inmediatamente a disposición de otros servidores de aplicaciones. Pero los archivos, que se almacenan en una carpeta de “carga” predefinida, deben compartirse o sincronizarse entre servidores de alguna manera.

En WordPress, los archivos a menudo se almacenan en “/ wp-content / uploads”. El desafío es cómo hacer que el contenido se comparta entre todos los servidores de aplicaciones, de modo que, cuando se carga un archivo en un servidor, otros servidores de aplicaciones pueden acceder a él.

Los métodos comunes para compartir archivos entre servidores de aplicaciones son:

  • Usando rsync
  • Usando NFS
  • Uso de Amazon S3 o Rackspace CloudFiles

rsync
Este es un comando de Linux muy fácil de usar, a menudo utilizado para hacer copias de seguridad o para transferir archivos de un servidor a otro. Tienes opciones aquí:

  • Restrinja la carga de archivos en un servidor y sincronice los archivos al segundo servidor (esto se puede hacer con la configuración del equilibrador de carga, según el equilibrador de carga que esté utilizando)
  • Permitir subir archivos a ambos servidores y ejecutar rsync en ambas direcciones

Como puede imaginar, una vez que tenga más de 2 servidores, rsync comienza a ser demasiado complicado.

NFS
Con mucho, la forma más común de compartir archivos. En la mayoría de las configuraciones, los archivos se almacenan en el servidor de la base de datos y se comparten a través de NFS con los clientes. Cada cliente tiene la carpeta NFS montada en “/ wp-content / uploads”.

Amazon S3 o Rackspace CloudFiles
Alternativamente, puede usar una solución en la nube para almacenar sus archivos cargados, como Amazon S3 o Rackspace CloudFiles. Estos no son gratuitos, pero son realmente baratos. Hay muchos complementos de WordPress para enviar los archivos cargados directamente a uno de estos servicios, para que los otros servidores de aplicaciones puedan acceder a ellos (en realidad, sería el navegador del cliente el que accede a los archivos directamente).

Conclusión
Aparte de los archivos, no hay mucha complejidad. Las sesiones se almacenan en la base de datos en la mayoría de los CMS de PHP, incluido WordPress, por lo que no debería haber ningún problema con eso.

Debe perfilar cuidadosamente su configuración actual para ver dónde están los cuellos de botella, si los hay.

Recientemente he llevado a cabo esto y el único problema enfrentado fue el 404 ocasional, posiblemente un poco de almacenamiento en caché. Simplemente usé un enlace simbólico en lugar de wp-content y luego moví todas mis 30 carpetas de wp-content a la nueva ubicación.