que recientemente experimentó una inundación de tráfico en una aplicación de Facebook que he creado (sobre todo por el bien de la educación, no con la intención de comercialización)Arquitectura de una aplicación PHP en Amazon EC2
Ni que decir tiene, no lo hice pensar en la escalabilidad cuando creé la aplicación. Ahora estoy en una posición en la que mi exiguo servidor virtual alojado por MediaTemple no lo está cortando, y realmente se trata de E/S en bruto de la máquina. Dado que este proyecto me ha sido tan educativo hasta ahora, pensé que tomaría esto como una oportunidad para comprender la plataforma Amazon EC2.
La aplicación en sí se crea en PHP (utilizando Zend Framework) con un back-end MySQL. Utilizo el almacenamiento en caché de la aplicación siempre que sea posible con memcached. Pasé el fin de semana jugando con EC2, creando instancias, instalando los paquetes que deseo y montando un volumen de EBS en una instancia.
Pero, ¿cuál es el próximo paso lógico que dará buenos resultados para la escalabilidad? ¿Arranco una instancia AMI para MySQL y otra para el servicio Apache? ¿O acabo de replicar las instancias tantas veces como las necesito y luego hago algún tipo de equilibrio de carga en la interfaz? Idealmente, me gustaría tener una base de datos centralizada porque agrego estadísticas en todas las filas de bases de datos, sin embargo, este no es un requisito difícil (probablemente haya algunas soluciones específicas de aplicaciones que podría encontrar para solucionar esto)
Sé que esto probablemente no es una respuesta directa, por lo que las opiniones y sugerencias son bienvenidas.
Esto suena como mis primeros pasos exactos para tomar. Pregunta: ¿se puede montar un volumen EBS en varias instancias? Estoy pensando que podría almacenar el directorio/var/www en el servidor apache en EBS y los datos mysql en el servidor mysql en un EBS. –
Desafortunadamente no. Piense en un EBS como un disco duro, solo puede adjuntarse a una instancia a la vez. Puede clonarlos, pero el EBS clonado no obtiene ningún cambio ni nuevos datos. Su tarea es escribir un script que configure nuevas instancias automáticamente: verifica su código de subversión, configura apache, informa al equilibrador de carga que está listo para recibir solicitudes. Servicios como RightScale hacen esta parte más fácil, creo. –