Escalar un sitio web LAMP alojado en EC2

Escalar un sitio web LAMP alojado en EC2

Soy muy nuevo en todo esto: recientemente logré lanzar mi sitio web en EC2. Como siguiente paso, quiero aprender a escalar el sitio web. Tengo una idea general, pero quería recibir comentarios de los expertos sobre cómo hacerlo.

Mi sitio web está basado en LAMP pero también tiene un servidor Red5 que permite a los usuarios grabar mensajes y también usarlo para reproducirlos.

Actualmente, esta es la arquitectura que planeo configurar para el escalado inicial. Implemente cuatro instancias EC2 pequeñas para los siguientes propósitos:

Instancia-1: en esta instancia ejecutaré la base de datos MySql

Instancia-2: En esta instancia ejecutaré el servidor red5

Instancia-3 e Instancia-4 Estas 2 instancias se utilizarán para implementar el sitio web y tendrán Apache ejecutándose en ellas. Se comunicarán con el servidor mysql en la Instancia-1 y el servidor red5 en la Instancia-2 utilizando la dirección IP interna. Cuando sea necesario, lanzaré otra instancia del mismo

EBS: tendré un EBS de, digamos, 50 GIG donde se almacenarán todos los datos de MySQL. También red5 utilizará este EBS para almacenar los mensajes de vídeo.

Equilibrador de carga: utilice el equilibrador de carga proporcionado por Amazon para equilibrar la carga de la Instancia 3 y la Instancia 4.

Esto es lo que tengo en mente. Podría estar muy lejos, así que tengan paciencia conmigo. Además, no he tenido en cuenta el caso de escalar el servidor MySql ya que actualmente no tengo idea de cómo se hará y si es necesario o no inicialmente.

Soy consciente de que Amazon también ofrece escalado automático y escalado de MySQL, pero no quiero entrar en eso ahora.

Se agradecen sus comentarios. Gracias.

Respuesta1

Hay toda una serie de artículos sobre este tema @http://altaescalabilidad.com

No he usado AWS, pero tengo experiencia ejecutando instancias virtuales en un centro de datos, usando instancias virtuales de rackspace y appengine.

La forma de escalar (aumentar o reducir) está determinada en gran medida por lo que intenta hacer. Algunas aplicaciones requerirán un uso intensivo de E/S, otras requerirán un uso intensivo de la CPU. Su cuello de botella puede ser E/S entrante, potencia de procesamiento o E/S backend, o una combinación de los tres en cantidades variables dependiendo de dónde se encuentre en el ciclo de vida de su aplicación. Todos requerirán una estrategia ligeramente diferente.

Al utilizar algo como AWS, en general desea escalar y debe comenzar con el fin en mente y mantener sus aplicaciones débilmente acopladas. Esto le permitirá crear otra instancia para escalar según la demanda. Está bien mantener su instancia de base de datos en la misma instancia que su aplicación principal cuando está comenzando, pero eso suele ser lo primero que se escinde en su propio servidor.

Por lo tanto, podría comenzar con todo ejecutándose en una instancia. Luego comienzas a recibir algo de tráfico y notas que la base de datos está consumiendo tu CPU. Entonces mueves la base de datos a otra instancia y todo está genial. Hasta que empiezas a tener más tráfico... y notas que tu interfaz no puede seguir el ritmo del tráfico. Entonces, inicias un par de instancias más, las cargas y estás contento por un tiempo, y escalas hasta tal vez una docena de servidores web... Pero luego obtienes algo más de tráfico, y mientras el front-end mantiene arriba, ahora su máquina de base de datos está comenzando a funcionar. Entonces replicas tu base de datos en un maestro y un par de esclavos, y todo está bien... y así sucesivamente.

Respuesta2

Trabajé en Amazone EC2/EBS, etc. hace algún tiempo cuando se lanzó y moví con éxito uno de los sitios grandes desde hosts físicos a sus entornos.

He documentado algunas de mis experiencias en mi blog como http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/Hay más publicaciones pero no puedo pegar el enlace aquí. Espero que te pueda ayudar.

información relacionada