[CentOS-es] Como "sincronizar" servidores web

Francesc Guitart fguitart en gmx.com
Mar Abr 8 16:41:45 UTC 2014


El 08/04/2014 10:19, Rodolfo Edgar escribió:
> Hola lista, mi pregunta es cómo "sincronizar" no sé si será la palabra
> correcta, pero lo que quiero es saber cómo hacer que dos o más
> servidores webs acepten peticiones según el tráfico, por ejemplo el
> servidor 1 esta procesando datos y tiene mucha carga, el servidor 2
> debe actuar como ayuda y también aceptar peticiones, el detalle es que
> se usa base de datos en un servidor y programción en php (supongo que
> los scripts php habrá que poner o estar en todos los servidores), no
> sé cómo podría hacer eso, estuve mirando algo en internet sobre rsync,
> pero más hablan sobre archivos.
> También había oído antes que eso se podría hacer con ntfs algo asi,
> pero no dieron detalles de cómo se podrían compartir datos de forma
> automática, que unos usuarios esten conectados a un servidor
> ingresando datos a una base de datos y otro servidor web ayude también
> haciendo lo mismo y escribiendo en alguna base de datos común.
> También dijeron que era algo similar a balanceo de carga, pero esa vez
> que vi un tutorial solo se hacia con datos estaticos, osea html, nada
> de programación y base de datos, ahí fue que escuché que hay que
> compartir de alguna manera con ntfs y no sé que más, estoy un poco
> falto es esa situación me podrían orientar amigos? de antemano les
> agradezco que me den pistas, se despide su amigo Edgar bye!

Lo que tu quieres es balanceo de carga. Se puede hacer de diferentes 
maneras, depende del presupuesto y de la carga que vaya a tener la web.

Una manera sencilla es hacerlo por DNS. Necesitarás dos servidores para 
la web (sincroniza los archivos de la web por NFS, GlusterFS o DRBD) y 
otro para la base de datos (esta en el servidor más potente ya que será 
atacada por los servidores web). Luego creas dos registros DNS con el 
mismo nombre pero que apuntan a cada uno de los dos servidores web:

www.ejemplo.com  10.111.123.120
www.ejemplo.com  10.111.123.121

El servidor DNS alternará sus respuestas con cada petición que reciba. 
No es el mejor método pero sirve. Cuando un servidor caiga tendrás un 
pequeño timeout y finalmente saltará al que está funcionando. Para 
solucionar esto implementa Hearbeat entre los dos servidores web para 
que cuando uno caiga el otro coja momentáneamente la IP del caído.

Otra solución para ahorrarte el tercer servidor (el de la base de datos) 
es configurar MySQL en modo replicación y poner en un servidor web el 
master de MySQL y en el otro el slave.

Finalmente también podrías añadir un proxy http (idealmente nginx) antes 
de los servidores web para balancear la carga. De paso acelerarías el 
tráfico ya que también haría de proxy. Para sitios con mucha carga este 
paso opcional sería deseable e incluso imprescindible.

Saludos.


-- 
Francesc Guitart


Más información sobre la lista de distribución CentOS-es