Aumento de la capacidad de carga para un sitio web en crecimiento

Aumento de la capacidad de carga para un sitio web en crecimiento

Mi sitio web actualmente se ejecuta en un servidor web dedicado (con LiteSpeed) y un servidor de base de datos MySQL dedicado. Es un sitio basado en descargas con una gran cantidad de contenido generado por el usuario, que se puede transmitir y descargar; también hay miles de miniaturas y contenido estático.

Estoy en una etapa en la que el servidor web ya no puede manejar la cantidad de tráfico, así que estoy buscando la mejor manera de aumentar la capacidad considerando la gran cantidad de contenido descargable.

Mi anfitrión sugiere duplicar todo en un segundo servidor web y distribuir la carga entre ellos usando DNS Made Easy o tener mi propio balanceador de carga (usando ldirector) frente a los dos servidores web.

¿Alguien podría aconsejar si el método anterior sería la mejor opción? ¿Alguien tiene alguna experiencia con DNS Made Easy y/o ldirector?

Agradecería cualquier ayuda.

Respuesta1

En primer lugar, debe comprender dónde se encuentra el cuello de botella antes de poder realizar algún progreso.

Los anfitriones recomiendan rápidamente hardware nuevo pero, en muchos casos, a menos que esté claro que tiene limitaciones de hardware, es posible que el hardware nuevo no produzca mejoras significativas.

Agregar hardware tiene rendimientos decrecientes si no se hace de manera inteligente. Pasar de un servidor a dos puede duplicar sus recursos, pero luego deberá pasar de 2->4, 4->8 para obtener el mismo aumento.

Monitorear y medir

Si no está monitoreando las métricas del sistema, los tiempos de carga y otros datos, ese es el primer lugar para comenzar. Las herramientas gratuitas como Munin y systat son excelentes para soluciones de servidor. Herramientas comohttp://Browsermob.comyhttp://webpagetest.orgpuede proporcionarle métricas centradas en el usuario.

Tráfico de segmentos

Normalmente, una transferencia directa de un sitio multimedia complejo a otro servidor no es muy eficaz. A menudo obtendrá resultados superiores por su inversión al segmentar el tráfico.

Por ejemplo, tenemos un cliente con un sitio de juegos flash muy ocupado (millones de visitas/día). Hemos descargado los juegos flash a un grupo de servidores económicos que ejecutan Nginx. Estos sistemas eliminan TB de tráfico/mes. Estos son cuadros de nivel básico y todo lo que ofrecen es contenido estático.

Ahora bien, en cuanto a los costos, estas dos cajas de entrada combinadas eran un 20% más baratas que el servidor principal. Obtuvimos una mejora de capacidad de más de 4 veces. Si simplemente hubiéramos clonado el servidor principal y equilibrado la carga, sospecho que, en el mejor de los casos, la mejora habría sido de 1,5 a 1,8 veces.

En resumen, esforzarse un poco en comprender las entrañas del problema de rendimiento puede ahorrarle mucho dinero en el futuro.

DNS simplificado

Esta es una solución DNS y realmente no aborda el equilibrio de carga. Es posible que estén hablando de DNS por turnos. No estoy seguro de por qué se incluyó esto en la ecuación en esta etapa.

director

Esta es una herramienta para administrar nodos en un clúster LVS. Una vez más, no estoy seguro de por qué se sugirió este artículo específico. Por lo general, solo usamos un equilibrador de carga (hardware o algo como Nginx/HA-Proxy) y enrutamos el tráfico a los servidores backend apropiados.

Respuesta2

El equilibrio de carga basado en DNS no es bueno por varias razones:

  1. Puede controlar cómo se accederá a sus servidores y no puede asignar el tráfico de manera diferente o uniforme entre los dos servidores.
  2. Más importante aún, esta forma de equilibrio de carga no reconoce fallas del servidor. Por lo tanto, perderá parte del tráfico si uno de los servidores falla inesperadamente.
  3. El almacenamiento en caché de DNS lo empeora aún más.

Prefiero utilizar una técnica de equilibrio de carga más inteligente como ldirectoro haproxy. Este tipo de equilibrio de carga le permite distribuir el tráfico de acuerdo con las especificaciones del servidor y utilizando varios factores (carga, número de conexiones, etc.).

Hay una cosa más importante a tener en cuenta. Dijiste que tienes una base de datos mysql y contenido de usuario en el servidor. Si va a distribuir el tráfico entre los dos servidores, necesita tener un mecanismo de sincronización entre los dos servidores. De lo contrario, los usuarios no siempre verán los mismos datos cuando accedan a un servidor diferente cada vez.

información relacionada