<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Viva el Pixel &#187; Varnish</title>
	<atom:link href="http://www.vivaelpixel.com/tag/varnish/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vivaelpixel.com</link>
	<description>Blog sobre Tecnologia y marketing online</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:57:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Protegerse de ataques DoS/DDoS con Varnish</title>
		<link>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/</link>
		<comments>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 15:22:49 +0000</pubDate>
		<dc:creator>Andy Kaiser</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Varnish]]></category>
		<guid isPermaLink="false">http://www.vivaelpixel.com/?p=681</guid>
		<description><![CDATA[Un reverse proxy puede proteger o minimizar los efectos del ataque Dos/DDoS. Varnish Cache Reverse Proxy, además de acelerar una aplicación web, protege efectivamente ante ataques DoS/DDoS al enviar sólo las peticiones que son completas al servidor web.]]></description>
			<content:encoded><![CDATA[<p>Los ataques de denegación de servicios (D0S) y la variante distribuida (DD0S) suelen ser relativamente habituales. Una vez iniciado el ataque DDoS <a href="http://www.codigogeek.com/2008/02/08/que-hacer-ante-un-ataque-ddos/" target="_blank" class="liexternal">algunos opinan que no es posible detenerlo</a>, otros en cambio que <a href="http://foro.elhacker.net/tutoriales_documentacion/intentando_detener_un_ddos-t137442.0.html" target="_blank" class="liexternal">es posible intentar detener el ataque</a>.  Sin entrar en detalles sobre como resolver estos ataques, es interesante indicar como un <em>reverse proxy</em> puede proteger o minimizar los efectos del ataque Dos/DDoS.</p>
<h3>Varnish Cache</h3>
<p><a href="http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" class="liinternal">Varnish Cache Reverse Proxy</a>, además de acelerar una aplicación web, protege efectivamente ante ataques DoS/DDoS al enviar sólo las peticiones que son completas al servidor web. La configuración dependerá del escenario final, sea un solo servidor o arquitecturas basadas en varios servidores. En caso de disponer de un solo servidor e IP podemos configurar el servidor web (Apache) en la IP local y el puerto 80, por ejemplo <em>127.0.0.1:80</em>. Por otro lado, configuramos Varnish en la IP pública y el puerto 80.</p>
<h3>Ejemplo real</h3>
<p>El siguiente gráfico muestra un ejemplo real de como Varnish actúa en el caso de un ataque DoS. Con 550 peticiones al segundo, el servidor tenia una carga no superior a 0.5 y el ataque no afecto al funcionamiento de la web basada en el gestor de contenidos <a href="http://ez.no" target="_blank" class="liexternal">eZ Publish</a>.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-686" title="varnish-dos" src="http://www.vivaelpixel.com/wp-content/uploads/2010/03/varnish-dos.jpg" alt="" width="430" height="333" /></p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish+-+http://b2l.me/mgs8h&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-meneame">
			<a href="http://meneame.net/submit.php?url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/" rel="nofollow" class="external" title="Enviar a Meneame">Enviar a Meneame</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish&amp;summary=Un%20reverse%20proxy%20puede%20proteger%20o%20minimizar%20los%20efectos%20del%20ataque%20Dos%2FDDoS.%20Varnish%20Cache%20Reverse%20Proxy%2C%20adem%C3%A1s%20de%20acelerar%20una%20aplicaci%C3%B3n%20web%2C%20protege%20efectivamente%20ante%20ataques%20DoS%2FDDoS%20al%20enviar%20s%C3%B3lo%20las%20peticiones%20que%20son%20completas%20al%20servidor%20web.&amp;source=Viva el Pixel" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="Compartir con del.icio.us">Compartir con del.icio.us</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;t=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-bitacoras">
			<a href="http://bitacoras.com/anotaciones/http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/" rel="nofollow" class="external" title="Enviar a Bitacoras">Enviar a Bitacoras</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Varnish Reverse Proxy</title>
		<link>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/</link>
		<comments>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:42:44 +0000</pubDate>
		<dc:creator>Andy Kaiser</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Varnish]]></category>
		<guid isPermaLink="false">http://www.vivaelpixel.com/?p=146</guid>
		<description><![CDATA[Actualmente las aplicaciones web requieren decenas de consultas SQL para generar una sola página (por ejemplo en el caso de los gestores de contenido). Esto se convierte en el cuello de botella más común en las webs de millones de páginas vista. En estos casos podemos utilizar varias estrategias de cache, por ejemplo el uso [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente las aplicaciones web requieren decenas de consultas SQL para generar una sola página (por ejemplo en el caso de los gestores de contenido). Esto se convierte en el cuello de botella más común en las webs de millones de páginas vista. En estos casos podemos utilizar varias estrategias de cache, por ejemplo el uso de <a href="http://www.memcached.org/" target="_blank" class="liexternal">memcached </a>y/o el uso de reverse proxies como <a href="http://nginx.net/" target="_blank" class="liexternal">Nginx</a>, <a href="http://www.danga.com/perlbal/" target="_blank" class="liexternal">Perlbal</a>, <a href="http://www.squid-cache.org/" target="_blank" class="liexternal">Squid </a>and <a href="http://varnish.projects.linpro.no/" target="_blank" class="liexternal">Varnish</a>. La elección de uno u otro dependerá de cada proyecto, pero en este post hablaré sobre Varnish Cache, el cual he usado con éxito en varios proyectos.</p>
<h3>Historia</h3>
<p>Varnish fue creado por el periódico noruego <a href="http://www.vg.no/" target="_blank" class="liexternal">Verdens Gang</a> (VG). El diseño y desarrollo inicial fue realizado por el consultor danés <a href="http://en.wikipedia.org/wiki/Poul-Henning_Kamp" target="_blank" rel="nofollow" class="liwikipedia">Poul-Henning Kamp</a> y actualmente, el desarrollo, está gestionado por la consultora noruega <a href="http://www.redpill-linpro.com/" target="_blank" class="liexternal">Linpro</a>.</p>
<p>Varnish tiene licencia de código abierto (en concreto licencia FreeBSD), pero existe soporte comercial por parte de Linpro y otros.</p>
<h3>Arquitectura</h3>
<p>Quizás lo más destacable de Varnish es que desde el principio se diseño y programó teniendo en cuenta los sistemas operativos modernos, resumiendo, es un <a href="http://varnish.projects.linpro.no/wiki/ArchitectNotes" target="_blank" class="liexternal">programa moderno</a>.</p>
<p>Varnish almacena los datos en la memoria virtual y deja la tarea de decidir lo que se almacena en la memoria y lo que se guarda en el disco al sistema operativo. Esto ayuda a evitar la situación en la que el sistema operativo comienza a copiar<em> </em>datos al disco cuando la aplicación esta haciendo lo mismo.</p>
<p>Una característica significativa de Varnish es que cada conexión cliente se asigna a un subproceso  independiente. Cuando se alcanza el límite configurado en el número de subprocesos activos, las conexiones entrantes se colocan en cola y sólo cuando esta cola alcanza su límite configurado será rechazado las conexiones entrantes.</p>
<p>Con el fin de reducir el número de llamadas al sistema a un mínimo, los datos de registro o logs se almacenan en la memoria compartida, y la tarea de escribir los registros en el disco se delega a una aplicación separada.</p>
<h3>Características</h3>
<p>Podemos destacar las siguientes características de Varnish:</p>
<ul>
<li>Diseño moderno</li>
<li>VCL, es un lenguaje de configuración que permite una gran flexibilidad y adaptación. Incluso es posible añadir <a href="http://varnish.projects.linpro.no/wiki/ArchitectureInlineC" target="_blank" class="liexternal">código C</a> con lo que es posible expandir Varnish sin modificar el código fuente.</li>
<li><em>Load balancing</em></li>
<li>Soporte parcial de<em> <a href="http://www.w3.org/TR/esi-lang" target="_blank" class="liexternal">ESI</a></em></li>
<li><a href="http://varnish.projects.linpro.no/wiki/WebGui" target="_blank" class="liexternal">Web GUI</a> (<em>Beta</em>), muy útil en caso de configuraciones en cluster</li>
<li>Posibilidad de cambiar configuraciones sobre la marcha</li>
<li>Reescritura y redireccionamiento de url (no es necesario un programa externo)</li>
<li>Consulta de estadísticas y logs en tiempo real</li>
</ul>
<h3>Rendimiento</h3>
<p>Como ya he comentado anteriormente, el rendimiento de Varnish y otros <em>reverse proxies </em>(como por ejemplo Squid) depende de múltiples factores y la configuración que se utilice, por lo que siempre es recomendable analizar cada situación y decidirse por una aplicación u otra. Por ejemplo en <a href="http://deserialized.com/reverse-proxy-performance-varnish-vs-squid-part-2" target="_blank" class="liexternal">este post</a> podemos ver una comparación entre Squid y Varnish.</p>
<h3>Ejemplos reales</h3>
<p>Estas son algunas webs de alto tráfico  que utilizan Varnish</p>
<ul>
<li><a href="http://www.vg.no/" target="_blank" class="liexternal">vg.no</a></li>
<li><a href="http://www.mashable.com" target="_blank" class="liexternal">mashable.com</a></li>
<li><a href="http://www.wikia.com" target="_blank" class="liexternal">wikia.com</a></li>
<li><a href="http://www.creativecommons.org" target="_blank" class="liexternal">creativecommons.org</a></li>
<li><a href="http://wordpress.com/" target="_blank" class="liexternal">wordpress.com</a></li>
</ul>
<p>Por último, en uno de mis proyectos, el cliente quería separar completamente de Internet el acceso a su gestor de contenidos, pero mantener una web actualizada al segundo y con posibilidades de disponer de servidores distribuidos en Europa y América. Con estos requisitos, implementamos Varnish en los servidores públicos del cliente cacheando el servidor de contenido que se encontraba en la red privada del cliente. Gracias a esta arquitectura, los visitantes de la web solo acceden al servidor de Varnish, con lo que no tienen acceso a otros servicios como por ejemplo php, mysql o ssh. A su vez, el usuario final visualiza las páginas en menor tiempo al cargarlas desde Varnish.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Varnish+Reverse+Proxy+-+http://b2l.me/cjn9d&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-meneame">
			<a href="http://meneame.net/submit.php?url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" rel="nofollow" class="external" title="Enviar a Meneame">Enviar a Meneame</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy&amp;summary=Actualmente%20las%20aplicaciones%20web%20requieren%20decenas%20de%20consultas%20SQL%20para%20generar%20una%20sola%20p%C3%A1gina%20%28por%20ejemplo%20en%20el%20caso%20de%20los%20gestores%20de%20contenido%29.%20Esto%20se%20convierte%20en%20el%20cuello%20de%20botella%20m%C3%A1s%20com%C3%BAn%20en%20las%20webs%20de%20millones%20de%20p%C3%A1ginas%20vista.%20En%20estos%20casos%20podemos%20utilizar%20varias%20estrategias&amp;source=Viva el Pixel" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="Compartir con del.icio.us">Compartir con del.icio.us</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;t=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-bitacoras">
			<a href="http://bitacoras.com/anotaciones/http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" rel="nofollow" class="external" title="Enviar a Bitacoras">Enviar a Bitacoras</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
