<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: Tutorial para hacer un balanceador de carga (load balancer) de servidores de base de datos con PHP</title>
	<atom:link href="http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/</link>
	<description>El blog de un geek que comparte la odisea de aprender algo casi todos los días</description>
	<lastBuildDate>Tue, 22 May 2012 23:06:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<item>
		<title>Por: gustavo</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-96130</link>
		<dc:creator>gustavo</dc:creator>
		<pubDate>Thu, 14 Oct 2010 19:13:03 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-96130</guid>
		<description>Gracias por el post. Excelente.
Mi unica pregunta aqui es: cuando se hacen inserts, deletes o updates a la Base de Datos, es necesario hacerlo en las N replicas que tenemos de las bases de datos, sin importar si están sobrecargados o no, es correto?
En ese caso, una consulta a mi sistema que implique un insert nuevo a la BD o delete, repercutiría en tardanza de nuevo debido a que debo esperar a que se escriban los cambios en cada replica de la Base de Datos, es correcto?
Si es así, entonces este diseño funcionaría solamente para bases de datos de consulta...

Espero puedan responder.

Gracias a todos,</description>
		<content:encoded><![CDATA[<p>Gracias por el post. Excelente.<br />
Mi unica pregunta aqui es: cuando se hacen inserts, deletes o updates a la Base de Datos, es necesario hacerlo en las N replicas que tenemos de las bases de datos, sin importar si están sobrecargados o no, es correto?<br />
En ese caso, una consulta a mi sistema que implique un insert nuevo a la BD o delete, repercutiría en tardanza de nuevo debido a que debo esperar a que se escriban los cambios en cada replica de la Base de Datos, es correcto?<br />
Si es así, entonces este diseño funcionaría solamente para bases de datos de consulta&#8230;</p>
<p>Espero puedan responder.</p>
<p>Gracias a todos,</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: matias</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-95337</link>
		<dc:creator>matias</dc:creator>
		<pubDate>Thu, 23 Sep 2010 00:00:04 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-95337</guid>
		<description>fijate aca , esto funciona . http://www.excedesoft.com/blog/php-sesiones-y-balanceo-de-carga/</description>
		<content:encoded><![CDATA[<p>fijate aca , esto funciona . <a href="http://www.excedesoft.com/blog/php-sesiones-y-balanceo-de-carga/" rel="nofollow">http://www.excedesoft.com/blog/php-sesiones-y-balanceo-de-carga/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Martin</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-78571</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Tue, 16 Jun 2009 00:08:03 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-78571</guid>
		<description>Mis felicitaciones por el articulo, Muy completo, ahora mismo ando trabajando en balancear la carga de mySQL con otro server, pero las conexiones van lentisimas, aun no se porque va tan lento, tenes alguna idea de que puede ser ?</description>
		<content:encoded><![CDATA[<p>Mis felicitaciones por el articulo, Muy completo, ahora mismo ando trabajando en balancear la carga de mySQL con otro server, pero las conexiones van lentisimas, aun no se porque va tan lento, tenes alguna idea de que puede ser ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: hola, muy buen articulo</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-78313</link>
		<dc:creator>hola, muy buen articulo</dc:creator>
		<pubDate>Mon, 08 Jun 2009 16:28:02 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-78313</guid>
		<description>hola, felicitarte por la explicacion es muy buena, tanto la replicacion como el failover. Entender lo entiendo, pero a la hora de implementar es mas dificil podrias especificarme algunas cosillas?

como por ejemplo el script como seria
o donde se ejecuta el script cuando llega la pregunta de internet?, en el index del servidor inicial?</description>
		<content:encoded><![CDATA[<p>hola, felicitarte por la explicacion es muy buena, tanto la replicacion como el failover. Entender lo entiendo, pero a la hora de implementar es mas dificil podrias especificarme algunas cosillas?</p>
<p>como por ejemplo el script como seria<br />
o donde se ejecuta el script cuando llega la pregunta de internet?, en el index del servidor inicial?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Lucas Zallio</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-48562</link>
		<dc:creator>Lucas Zallio</dc:creator>
		<pubDate>Sun, 12 Oct 2008 07:23:43 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-48562</guid>
		<description>Matías, Quizá al principio no se comporte exactamente como un balanceador, pero llegado un momento, todos tendrán una carga similar ya que cuando estén todos por sobre el nivel mímino aceptable, se elegirá el menos cargado y así sucesivamente. 

En vez del proxy, lo evitamos modificando las N bases de datos al mismo tiempo cuando es necesario. Nuestra situación es un tanto especial porque las dos bases en las que, por ahora, implementamos esto, son ambas esclavas de otra tercera que jamás participa del chequeo.

Al principio hacíamos algo así como el DB Sharding, pero no resultó porque no teníamos idea de cuando ni qué sección se utilizaría. Y estábamos como al principio.

Por ahora esto nos resultó. Mantiene una carga pareja entre los dos servidores de bases de datos y, si bien aveces se frena un poco cuando tiene que realizar mas de un chequeo, sigue siendo más rápido que las opciones que probamos anteriormente.

Estos comentarios dan para otro post completo XD. Thanks again.</description>
		<content:encoded><![CDATA[<p>Matías, Quizá al principio no se comporte exactamente como un balanceador, pero llegado un momento, todos tendrán una carga similar ya que cuando estén todos por sobre el nivel mímino aceptable, se elegirá el menos cargado y así sucesivamente. </p>
<p>En vez del proxy, lo evitamos modificando las N bases de datos al mismo tiempo cuando es necesario. Nuestra situación es un tanto especial porque las dos bases en las que, por ahora, implementamos esto, son ambas esclavas de otra tercera que jamás participa del chequeo.</p>
<p>Al principio hacíamos algo así como el DB Sharding, pero no resultó porque no teníamos idea de cuando ni qué sección se utilizaría. Y estábamos como al principio.</p>
<p>Por ahora esto nos resultó. Mantiene una carga pareja entre los dos servidores de bases de datos y, si bien aveces se frena un poco cuando tiene que realizar mas de un chequeo, sigue siendo más rápido que las opciones que probamos anteriormente.</p>
<p>Estos comentarios dan para otro post completo XD. Thanks again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Matías</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-48153</link>
		<dc:creator>Matías</dc:creator>
		<pubDate>Thu, 09 Oct 2008 15:29:35 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-48153</guid>
		<description>En realidad el chequeo en el servidor cargado es el correr el script php y responder el request PHP. Además, si no tenés un servidor de proxy en el medio, el primero a probar es sí mismo que ya viene cargado de por sí. Por lo que no estás haciendo balanceo de carga sino más bien un failover; balanceo de carga sería si tratás que todos estén más o menos equitativamente cargados.

En cuanto a lo del proxy de lectura, es lo ideal. Por lo general vas a tener un sistema de bases de datos armados con replicación. Ergo, tenés un master y esclavos que son copias de ese master. Por lo tanto, las conexiones de escritura se tienen que hacer siempre en la misma base de datos o quedás con inconsistencias.

Para algo más ad-hoc tal vez quieras revisar lo que es DB Sharding. Esto es, repartir una sola base de datos en varios servidores y, según a qué parte quieras acceder, es el servidor al que te tenés que conectar. Toda la administración de conexiones para que ande todo se hace también con algo así como un proxy.</description>
		<content:encoded><![CDATA[<p>En realidad el chequeo en el servidor cargado es el correr el script php y responder el request PHP. Además, si no tenés un servidor de proxy en el medio, el primero a probar es sí mismo que ya viene cargado de por sí. Por lo que no estás haciendo balanceo de carga sino más bien un failover; balanceo de carga sería si tratás que todos estén más o menos equitativamente cargados.</p>
<p>En cuanto a lo del proxy de lectura, es lo ideal. Por lo general vas a tener un sistema de bases de datos armados con replicación. Ergo, tenés un master y esclavos que son copias de ese master. Por lo tanto, las conexiones de escritura se tienen que hacer siempre en la misma base de datos o quedás con inconsistencias.</p>
<p>Para algo más ad-hoc tal vez quieras revisar lo que es DB Sharding. Esto es, repartir una sola base de datos en varios servidores y, según a qué parte quieras acceder, es el servidor al que te tenés que conectar. Toda la administración de conexiones para que ande todo se hace también con algo así como un proxy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Lucas Zallio</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-47739</link>
		<dc:creator>Lucas Zallio</dc:creator>
		<pubDate>Mon, 06 Oct 2008 20:14:04 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-47739</guid>
		<description>Matías, tu punto es muy bueno, gracias por participar. Sin embargo, el chequeo en el servidor cargado es sólo un &quot;if&quot; ya que el resto se hace en los demás servidores. Y si bien puede llevar su tiempo, es siempre menor a la respuesta de un único servidor. 

Probe hacer también lo que decis sobre el modelo cliente-servidor para llevar un log local del load de los servers; sin embargo tardaba más en responder la &quot;mini-db&quot; con los loads que un request http de los otros servers.

El problema principal del load balancer MySql es que no es posible modificar las bases de datos, es sólo lectura (al menos por ahora). Con esta solución se puede modificar en todas o algunas más allá de la carga del server. No probé lo del proxy, pero supongo que debe funcionar de manera similar.

Siempre es bienvenida la review de gente grosa en el tema, gracias de nuevo!</description>
		<content:encoded><![CDATA[<p>Matías, tu punto es muy bueno, gracias por participar. Sin embargo, el chequeo en el servidor cargado es sólo un &#8220;if&#8221; ya que el resto se hace en los demás servidores. Y si bien puede llevar su tiempo, es siempre menor a la respuesta de un único servidor. </p>
<p>Probe hacer también lo que decis sobre el modelo cliente-servidor para llevar un log local del load de los servers; sin embargo tardaba más en responder la &#8220;mini-db&#8221; con los loads que un request http de los otros servers.</p>
<p>El problema principal del load balancer MySql es que no es posible modificar las bases de datos, es sólo lectura (al menos por ahora). Con esta solución se puede modificar en todas o algunas más allá de la carga del server. No probé lo del proxy, pero supongo que debe funcionar de manera similar.</p>
<p>Siempre es bienvenida la review de gente grosa en el tema, gracias de nuevo!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Matías</title>
		<link>http://elezeta.net/2008/10/06/tutorial-para-hacer-un-balanceador-de-carga-load-balancer-de-servidores-de-base-de-datos-con-php/comment-page-1/#comment-47738</link>
		<dc:creator>Matías</dc:creator>
		<pubDate>Mon, 06 Oct 2008 19:43:33 +0000</pubDate>
		<guid isPermaLink="false">http://elezeta.net/?p=1247#comment-47738</guid>
		<description>No es por pincharte el globo o similar pero hay un serio problema con este método. Si los primeros servidores están muy congestionados y/o no disponibles, de tal forma que la lectura del la carga que se hace via web tarda 1 ó 2 segundos, tenés esa demora en redireccionar el tráfico correspondiente.

Como si fuese poco, también implica tener un servidor web andando en los servidores de base de datos, cosa que no sólo que no es recomendable sino que a veces no es posible tampoco.

Agregale el hecho que eso no distribuye la carga equitativamente tampoco sino que atora el primer servidor antes de pasar al segundo.

Lo que yo haría sería usar alguna solución específica para eso:
MySQL proxy: http://dev.mysql.com/doc/mysql-ha-scalability/en/mysql-proxy.html
MySQL Load Balancer: http://dev.mysql.com/doc/mysql-ha-scalability/en/load-balancer.html

Si no es posible, tendría que emularlo de alguna forma desarrollando un modelo cliente-servidor en el que el servidor recibe de parte de los clientes updates con la carga de cada uno (via SNMP o similar) y luego la aplicación PHP tiene una forma para obtener el servidor con menos carga (podría ser que el servidor actualice una mini base de datos que el script en PHP lea para decdir).</description>
		<content:encoded><![CDATA[<p>No es por pincharte el globo o similar pero hay un serio problema con este método. Si los primeros servidores están muy congestionados y/o no disponibles, de tal forma que la lectura del la carga que se hace via web tarda 1 ó 2 segundos, tenés esa demora en redireccionar el tráfico correspondiente.</p>
<p>Como si fuese poco, también implica tener un servidor web andando en los servidores de base de datos, cosa que no sólo que no es recomendable sino que a veces no es posible tampoco.</p>
<p>Agregale el hecho que eso no distribuye la carga equitativamente tampoco sino que atora el primer servidor antes de pasar al segundo.</p>
<p>Lo que yo haría sería usar alguna solución específica para eso:<br />
MySQL proxy: <a href="http://dev.mysql.com/doc/mysql-ha-scalability/en/mysql-proxy.html" rel="nofollow">http://dev.mysql.com/doc/mysql-ha-scalability/en/mysql-proxy.html</a><br />
MySQL Load Balancer: <a href="http://dev.mysql.com/doc/mysql-ha-scalability/en/load-balancer.html" rel="nofollow">http://dev.mysql.com/doc/mysql-ha-scalability/en/load-balancer.html</a></p>
<p>Si no es posible, tendría que emularlo de alguna forma desarrollando un modelo cliente-servidor en el que el servidor recibe de parte de los clientes updates con la carga de cada uno (via SNMP o similar) y luego la aplicación PHP tiene una forma para obtener el servidor con menos carga (podría ser que el servidor actualice una mini base de datos que el script en PHP lea para decdir).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

