We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

¿Cómo hacer balanceo entre servidores?


Macf
01/09/2013, 12:06
Si de las 3 web solo 2 tienen un trafico considerable no seria mejor poner en su propio KS 16G cada una de esas 2 webs?, total, ibas a tener que contratar 2 servidores, pues ponte 1 web en cada uno y te quitas los problemas del balanceo de carga.

apocalipsis
01/09/2013, 11:13
Cita Publicado inicialmente por kinderpaco
Hola, ante todo, gracias a todos por vuestras respuestas.

He mirando el link que has pasado, me he centrado en el ejemplo 3, entiendo que redirecciona las peticiones http a dos máquinas.

Mi pregunta es:
Por ejemplo hay 50 peticiones, el programa manda a una máquina 25 clientes a la otra máquinas los 25 restantes? o como hace el reparto? qué criterios sigue?
El que tu le digas... es decir, puedes configurar para que todas las imagenes o ficheros estaticos vayan a un servidor y los php a otros, o que vaya cargando aleatoriamente (reparto 50%). Todo ello suponiendo que detecte que ambos servidores estan operativos (si detecta un servidor caido, envia todas las peticiones por el otro).
Personalmente creo que la mejor opcion es hacer un reparto basado en contenido, de este modo no tienes problemas con inicios de sesiones.

kinderpaco
31/08/2013, 16:49
Cita Publicado inicialmente por apocalipsis
Posiblemente la mejor opcion sea usar un reverse proxy como pound:

http://bestinlinux.com/pound-proxy-s...configuration/
Hola, ante todo, gracias a todos por vuestras respuestas.

He mirando el link que has pasado, me he centrado en el ejemplo 3, entiendo que redirecciona las peticiones http a dos máquinas.

Mi pregunta es:
Por ejemplo hay 50 peticiones, el programa manda a una máquina 25 clientes a la otra máquinas los 25 restantes? o como hace el reparto? qué criterios sigue?

apocalipsis
30/08/2013, 09:20
Cita Publicado inicialmente por djbill
Bueno, pues Rarok ya ha respondido casi lo mismo que te hubiera escrito yo.

Respecto al manejo de sesiones no se decirte muy bien, pero solo se que para evitar problemas lo ideal es que una vez un cliente tira contra uno de los nodos del balanceador lo mejor es que siga apuntando a él hasta que llegue un timeout programado; porque puede ser un dolor mantener sesiones entre nodos.

Un saludo.

Posiblemente aumentando el tiempo del TTL te sirva para solucionar parcialmente el problema. De todos modos, el problema del sistema por DNS es que si se te cae un servidor, pierdes la mitad de las visitas (pues DNS no sabe si esta o no habilitado el servidor al que apunta, salvo programacion especifica para comprobar cada x tiempo).

apocalipsis
30/08/2013, 09:18
Posiblemente la mejor opcion sea usar un reverse proxy como pound:

http://bestinlinux.com/pound-proxy-s...configuration/

djbill
30/08/2013, 08:57
Bueno, pues Rarok ya ha respondido casi lo mismo que te hubiera escrito yo.

Respecto al manejo de sesiones no se decirte muy bien, pero solo se que para evitar problemas lo ideal es que una vez un cliente tira contra uno de los nodos del balanceador lo mejor es que siga apuntando a él hasta que llegue un timeout programado; porque puede ser un dolor mantener sesiones entre nodos.

Un saludo.

Rarok
30/08/2013, 01:07
El proxy por DNS el mismo bind lo hace basta con repetir el mismo registro con distintas IPs, en la mayoría de las compilaciones por defecto cuando un mismo registro se repite hace round robin en las respuestas.
Esa es la solución más sencilla que he encontrado pero le he visto un problema, para páginas que simplemente es visitar y punto va bien, para, por ejemplo foros, usar balanceo por DNS me da problemas, se me rompen constantemente las sesiones y hay que relogear cada nada, imagino que tendría que buscar un método de que las sesiones fueran compartidas.

El proxy web no lo he probado pero existe mod_proxy en apache, así que sería lo suyo.
A este le veo un problema, en mi caso siendo wordpress el contenido se llega a cachear tanto que al final ni php ni mysql hacen prácticamente nada, siendo el propio apache el que procesa todo, si montase un web proxy, lo que haría es meter la carga de trabajo de dos apaches y todas esas peticiones por el mismo apache, con lo cual la carga distribuida de los otros iría casi entera al balanceador. No obstante para webs que tuviesen una carga importante de proceso en cada petición sería lo ideal

El balanceador hardware realmente es lo mejor y más profesional pero mi intención era probar a tirar con algo a ser posible de coste 0.


He de comentar para cualquier interesado que si, como en mi caso, la intención es hacer un balanceo en webs, el contenido ha de ser el mismo en varias y por tanto ha de estar siempre sincronizado, en el caso de las BBDD lo normal sería activar la replicación de las mismas. Para los propios archivos probé programando un rsync cada poco tiempo, pero seguramente existe una forma más limpia de monitorizar en tiempo real si se producen cambios y en ese momento enviar un diff de los cambios al otro equipo.

Sobre el tema de mantener las sesiones y la sincronización de sistemas de archivos me gustaría que alguien me indicase por dónde buscar.

kinderpaco
30/08/2013, 00:43
Hola djbill, muchas gracias por la información aportada.

Para el balanceo por DNS o Proxy WEB, qué programas permiten tal gestión o nos puedes recomendar (en Linux).

Gracias.

djbill
29/08/2013, 14:33
Buenas, la alta disponibilidad puedes hacerla de varias formas. Vamos a suponer que tienes tres servidores web con el mismo contenido y deseas balancear las visitas:

1) DNS: En el servidor DNS se pueden configurar varias IP para el mismo nombre de dominio de tal forma que con cada peticion va devolviendo una diferente entre un pool de IP's
2) Proxy WEB: Necesitas montar un servidor intermedio entre los servidores reales e internet de tal forma que el tráfico se envía al Proxy Web y este en funcion de unas reglas te balancea el tráfico.
3) Balanceador Hardware: Esta es la opcion que propone OVH, es mucho mas flexible, vale para mas servicio ademas del WEB; debería permitir muchisima carga...etc En definitiva no lo he probado.

Para la opcion de DNS necesitas tener tus propios DNS en servidores ajenos a los que tienen las WEB; por temas de rendimiento; para correr BIND no se necesita mucho, así que con dos VPS básico de OVH debería ser suficiente (Principal y Secuandario)

Para la opcion de Proxy; no tengo muy claro que tipo de servidor necesitaría, pero básicamente es correr un linux base mas apache con proxy. Se supone que el KS2 que tienes por ahí debería ser suficiente, la pega es que no tienes redundancia en disco por si rompe uno.

Un saludo.

kinderpaco
29/08/2013, 12:40
Hola, ovh ofrece esto: http://www.ovh.es/servidores_dedicad..._balancing.xml

Rarok
21/08/2013, 21:48
No pido un tutorial extensivo sino más bien o indicaciones base o sino links a sitios con más información.

Ahora mismo tengo un KS16G con 3 páginas web (wordpress) funcionando a media carga, a corto/medio plazo no me preocupa pero a medio/largo plazo y viendo como el tráfico está aumentando me gustaría saber cómo funciona un sistema para tener varios servidores ofreciendo la misma web con un servicio de balanceo de carga, de entrada tengo también un KS2G y de esas webs una de ellas tiene un nivel de carga muy bajo y no importaría si se fuese a tomar por saco así que me gustaría probar con ella.

No sé si es algo que se gestionaría desde un servidor DNS que vaya dando distintas IPs a cada petición o si es el propio Apache el que redirecciona. También tengo la pregunta, en el caso de servidores que no sé ni si están en el mismo datacenter, ¿es demasiado terrible el impacto en el rendimiento la sincronización de datos de archivos y BBDD?