Enviat: 10/Gen/2011 - 21:43
Hola Jaume,
Com a aplicatiu per obtenir estadístiques de l'squid tens el calamaris o el mateix webalizer. Segurament la lentitud pel que fa la navegació no sigui deguda al col·lapse del Fortigate (pensa que és una molt bona màquina) sinó a un problema d'integració entre el Fortigate i el mateix servidor Linkat. El problema en qüestió és que el Fortigate prioritza ports i un dels ports prioritzats és el 53 que és el responsable de resoldre noms. O sigui, que la lentitud que esteu tenint en determinats moments és degut a la resolució de noms. El servidor Linkat, a banda de tenir el servei proxy cache en marxa, té un servidor de noms i aquest servidor de noms s'ha de tunnejar per tal que el Fortigate no interfereixi.
Així doncs la primera cosa que s'ha de fer és modificar el fitxer:
/etc/named.conf
i descomentar (treure el símbol #) de les línies següents:
query-source address * port 53;
transfer-source * port 53;
notify-source * port 53;
si fas això i després reinicies el servei (amb la instrucció: rcnamed restart) ja tindràs el problema resolt.
Pel que fa el proxy, i si el vols afinar cal que tinguis present les regles següents:
- Per cada Giga d'espai en disc, squid requereix de 10 Mb de memòria RAM. Així doncs si tens un ordinador amb 2 Gb de RAM, jo deixaria 1 Gb per al sistema operatiu i el Giga restant el farem servir per a l'squid de la forma següent:
512 Mb de RAM per al paràmetre cache_mem:
cache_mem 512 MB
que és la memòria de treball de l'squid. Compte que NO és la memòria màxima que fa servir l'squid sinó la memòria RAM de treball.
A partir d'aquí, s'ha de tenir en compte la relació 10 Mb de RAM per cada Giga de cache tenint en compte que les mides de cache en disc recomanades són d'uns 20 - 30 i que no es recomana més.
Així doncs si vols tenir una cache per a l'squid d'uns 20 Gb et caldran uns 200 Mb de memòria addicional.
Per tant tenim:
512 Mb de RAM de memòria de treball + 200 Mb per tenir en memòria la taula de fitxers que t'he comentat i uns 20 Mb addicionals. Així doncs l'squid ocuparà aproximadament uns 732 Mb de memòria RAM en total.
Un altre aspecte important que s'ha de tenir en compte és que el directori on es desen els objectes de la cache (el paràmetre cache_dir ho controla) sigui una partició independent amb un seguit de requisits.
El paràmetre cache_dir que hauries de tenir per al teu cas seria aquest:
cache_dir aufs /var/cache/squid 20480 16 256
(20480 és la mida en Mb o sigui 20 Gb, i aufs és el sistema de fitxers que utilitza squid. La resta són els directoris de 1r i 2n nivell).
Bé, quins requisits ha de tenir aquesta partició:
1- El sistema de fitxers ha de ser ext2 o bé xfs
2- La partició ha d'estar muntada amb l'atribut noatime. Pensa que cada vegada que accedeixes a un fitxer queda gravada la data d'accés. Amb aquest atribut el sistema operatiu no dedica recursos i s'accelera força la velocitat de l'squid.
Utilitza la versió 3 del paquet squid. La versió que s'instal·la és la 2.7 estable i té un comportament molt bo. Els programadors varen reescriure de zero la versió 3 d'squid i diuen que millora tot i que tinc muntatges fets amb la 2.7 i la 3 i no he aconseguit veure diferències significatives.
Un altre aspecte a tenir en compte és el nombre de fitxers que squid pot obrir. De forma predeterminada, i t'ho dic de memòria, es poden obrir 4096 fitxers i aquest límit s'ha d'incrementar per tal de no limitar les prestacions d'squid. Així doncs, edita el fitxer:
/etc/init.d/squid
i cap a la línia 147 modifica el paràmetre: ulimit i posa la línia següent:
ulimit -n 16386
(per tenir un màxim de 16000 i escaig fitxers oberts alhora).
I finalment el tema de la cache de vídeo. Bé aquest és un tema que es pot veure des d'un altre punt de vista. Més que desar el vídeo en disc es pot limitar el consum d'ample de banda mentre es visualitza el vídeo. Aquesta limitació es pot dur a terme i dóna bons resultats aplicant la política de delaypools que té squid.
Com podem crear un delaypools per limitar el consum d'ample de banda de youtube, vimeo, google video, etc.? S'ha d'editar el fitxer /etc/squid/squid.conf i afegir:
1- Crea l'acl següent:
acl restringir url_regex -i "/etc/squid/acl/delaypoolsSi.acl"
(restringir serà el nom de la nostra acl)
2- I afegeix les línies següents:
delay_pools 1
delay_class 1 2
delay_access 1 allow restringir
delay_parameters 1 262144/1048576 -1/-1
3- El contingut del fitxer /etc/squid/acl/delaypoolsSi.acl és el següent:
.youtube.com
video.google.com
.vimeo.com
Com podràs veure, aquest fitxer conté tots aquells llocs web que vulguis limitar el consum d'ample de banda.
Els valors 262144/1048576 volen dir el següent (expressats en bytes):
262144 (velocitat en bytes per segon o l'equivalent a 2 Mbps de limitació d'amplada de banda. Pensa que la teva ADSL pot tenir 2, 4 6 o 8 Mbps).
1048576 (és a dir 1 Mbyte). Aquest és un valor límit a partir del qual s'aplica la restricció a 2 Mbps de consum d'ample de banda. Fins al 1r Mega no hi ha cap limitació.
Si tots els ordinadors del centre els fas passar per proxy, llavors aquesta limitació implica que tens controlat el consum d'ample de banda i si tens una ADSL de 4 Mbps, com a molt l'accés a youtube consumirà un màxim de 2 Mbps (compte, valor màxim o límit) deixant la resta per a d'altres usos.
Espero que et resulti útil aquesta recepta / curset accelerat sobre proxies.
:-)
Joan de Gracia
Projecte Linkat