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.
- ¿Hay algún servidor de chat XMPP que admita el historial de chat como gmail [Detalles a continuación]?
- ¿Cómo ahorra Pinterest en costos de servidor?
- ¿Es factible utilizar los servicios de AWS desde otros servidores de alojamiento o VPS en lugar de EC2?
- ¿Cuál es la diferencia entre el servidor web y el servidor de aplicaciones? ¿Cuál es más importante? ¿Cómo se comunican entre ellos?
- ¿Cuál es el software de servidor web php / mysql gratuito más rápido?
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.