Si tienes tus páginas hospedadas en Dreamhost y tienes un poco de tráfico habrás notado ya cuales son las consecuencias, desde que a cada rato se quede “tonto” el apache, hasta que los administradores te apliquen medidas de throttling para limitar el número de hits que puedes recibir por minuto. Esta última acaba in utilizándote la web por la distribución y limitación de hits.
La evolución natural de cualquier arquitectura web es la de la distribución de carga en los frontales, esto es, en los servidores web, añades tantos servidores web como sean necesarios y así se reduce considerable la carga.
Está claro que este tipo de soluciones no son para los de bajo de presupuesto, pero hay una forma de emular este comportamiento conociendo como funcionan la arquitectura de hosting de Dreamhost.
Dreamhost usa clusters de webservers, con el fin de mejorar la disponibilidad del servicio (supongo). Hasta 3 nodos he visto yo en mi cuenta.
Cuando damos de alta un dominio nos asigna a uno de estos webservers. El objetivo es conseguir que nuestra web se vea por uno ó más webservers.
Para ello el método que he usado es el siguiente:
- Crear un subdominio del dominio principal. Por ejemplo www2.miweb.com y con directorio www2.miweb.com
- En gestión de dominios, seleccionar el enlace DNS del dominio principal. De esta forma vemos que IP se le ha asignado a www2.miweb.com. En mis pruebas siempre se le asignaba una IP distinta que correspondía a uno de los webservers del cluster.
Ahora se pueden adoptar dos vías, o bien la del balanceo de carga (load balancing) o distribución de carga (load distribution) y todas ellas mediante el uso del módulo de apache mod_rewrite.
Para balanceo de carga, necesitamos usar las reglas de tipo RewriteMap (y un script de balanceo) y para distribución de carga con reglas del tipo RewriteRule.
Yo he optado por éste último porque tenía identificado que parte de mi web (no es ésta) generaba mucha carga (imágenes generadas en tiempo real). Por lo tanto, mediante reglas de tipo rewriterule redirecciono todo el tráfico que cumple el patrón (imágenes) y las redirijo al otro servidor (www2.miweb.com). De esta forma, los usuarios sin modificar sus URLs siguen accediendo con total normalidad a toda la web.
En el subdominio www2.miweb.com no es necesario copiar todos los contenidos de www.miweb.com, perfectamente puedes usar enlaces simbólicos a todo o parte de los elementos que se vayan a servir por ese subdominio.
Si no conoces mod_rewrite te recomiendo estos enlaces:
- Apache 1.3 URL Rewriting Guide (en inglés). Una estupenda guía llena de ejemplos prácticos, incluso el de cómo implementar el balanceo de carga con reglas rewritemap.
- Module mod_rewrite URL Rewriting Engine (en inglés). Documentación oficial.
- Mod_rewrite Wizard. Un asistente para generar las reglas de tipo rewriterule. Muy cómodo y recomendable.
- Mod_rewrite cheatsheet. Un “chuletario” de lo más importante del mod_rewrite.
Obviamente, buscando en Google aparecen miles de recursos más y probablemente en castellano, yo no los he buscado, y también es probable que la documentación del Apache2 tenga los mismos manuales actualizados y en español.
Espero que os sirva.
Otro día os comento como evitar al “processwatcher” asesino y conseguir paliar sus “kill -9″ de todos tus procesos ![]()


0 Responses to “Load balancing con Dreamhost”
Leave a Reply