4 ago 2010

Comenzando con SQUID - El WEB Proxy Cache

Voy a tomar desde las FAQ's de Squid, lo que a mi entender resulta interesante  tener en cuenta, a la hora de diseñar y configurar un web proxy-cache (Squid).

¿ Cual es el tamaño del sistema que necesito para ejecutar Squid ?
  No hay reglas rígidas y rápidas. El recurso más importante  para Squid es la memoria física, colocar la mayor cantidad de memoria que se pueda.
Los procesadores no necesitan ser ultra rápidos, es recomendable comprar aquellos que sean económicos en el tiempo.
El disco de sistema sera el mayor cuello de botella, por lo tanto, discos rápidos son importantes para altos volumenes de cache. La performance de los discos SCSI generalmente es mejor que la de los discos ATA. Los discos SATA tienen una performance intermedia entre los discos SCSI y ATA. El disco de sistema y el disco de logfile pueden ser IDE, sin perder performance.
La relación memory-to-disk puede ser importante. Recomendamos 32 MB de RAM por cada GB de espacio de disco que se planea usar para cache.



¿ Es correcto usar discos separados para Squid ?
  Si, ejecutar squid sobre discos separados a los cual se ejecuta es sistema operativo es muchas veces una muy buena idea.
En general, el tiempo de búsqueda es lo que se espera optimizar o mas precisamente, la cantidad total de búsquedas que el sistema puede mantener. Por esta razón, es mejor tener la cache_dir sobre discos pequeños separados, que sobre un gran disco (especialmente con SCSI).
Si el sistema es muy exigido en E/S, desearas tener el sistema operativo y los directorios de log en discos separados.


¿ Que "cache_dir" size debo utilizar ?
  En este capitulo suponemos que se esta dedicando una porción entera del disco para el cache_dir de squid, como es a menudo.
En términos generales, configurar el tamaño del cache_dir igual que el tamaño de la partición, no suele ser una elección acertada. Primero por que Squid no es muy tolerante a ejecutarse fuera del espacio de disco. Sobre el tamaño limite del cache_size, squid usara un poco de espacio extra para el swap.state y algo mas de espacio temporal como área de trabajo, por ejemplo cuando re construye el swap.state.  Así que en cualquier caso asegurarse de dejar espacio extra para esto, o la cache entrara en un ciclo infinito de crash-rebuild.
La segunda razón es la fragmentación, los sistemas de archivos (filesystems) por si mismos pueden hacer mucho para evitar la fragmentación, y para ser efectivo necesitan espacio para optimizar la ubicación de los archivos. Si el disco esta lleno, la optimización es muy difícil y cuando el disco esta 100% lleno la optimización es imposible. Ten tú disco fragmentado y este sera seguramente tu peor cuello de botella.


¿ Como puedo ver estadísticas de squid a nivel de sistema ?
  Las distribuciones de squid incluyen una utilidad llamada cachemgr.cgi, la cual puede ser usada para ver las estadísticas de squid con un browser.


¿ Por que no puedo ejecutar Squid como Root ?
  Ni lo voy a traducir, es obvio.


¿ Puedes decirme una manera de Upgrade Squid con un tiempo mínimo de Downtime ?
  Esta es una técnica que fue descrita por Radu Greab.
Iniciar un segundo servidor (instancia)  Squid sobre un puerto HTTP sin uso (supongamos el 4128). Esta instancia de Squid probablemente no necesite una disco cache grande. Cuando esta segunda instancia (server) ha finalizado de recargar el almacenamiento de disco, cambiar el valor de http_port en squid.conf de ambas instancias. Configurar la instancia original para usar el puerto 5128 y la segunda para usar el puerto 3128. Después, ejecutar "squid -k reconfigure" para ambos Squids. Los nuevos requerimientos irán al segundo Squid ahora sobre el puerto 3128 y el primer Squid terminara de manejar sus actuales requerimientos. Después de unos minutos, es seguro el shutdown del primer squid y upgrade este. Posteriormente simplemente repite los pasos en orden inverso.

La instalación de Squid es sencilla, y esta bien documentada en las faq's de squid, aunque hay que tener en mente las facilities o helpers que se utilizaran, por ejemplo snmp.
En mi laboratorio estoy usando un FreeBSD 8.0, recompile el kernel para que estuviera 100% acorde al hardware y a la utilidad que le voy a dar. Instale Squid 2.7.9 desde los ports (compilando), esta versión tengo entendido que al día de la fecha es la mas estable y parcheada de todas.