teejuht
1.
|
Sissejuhatus |
2.
|
Installeerimine |
3.
|
Konfigureerimine |
4.
|
Käivitamine ja seiskamine |
5.
|
Monitoring |
Probleem mida järgnev jutt lahendada püüab seineb selles, et kas ei saaks kuidagi asja opitimiseerida, kui terve klassitäis arvuteid korraga (ja tunniaja pärast jälle) püüab külastada ühte ja sama kodulehekülge (nt. www.postimees.ee'd).
Klassikaliselt on arvutiklass ühe serveri taha ära maskeraaditud
ja igasse arvutisse tuuakse info eemalt internetist (antud juhul www.postimees.ee'st)
eraldi kohale.
Alltoodud joonis kujutab kolme võrgukaardiga serverit millel töötab programm
squid. On näha kahte alamvõrku (192.168.1.0, 192.168.2.0) millel istuvad nn.
klientarvutid.
Programmi squid roll seisneb selles, et kogu infovahetus väismaailmast klientide poole toimub läbi tema. Squid kuulab pealt klientide poolt sooritatavaid päringuid (nt. www.postimees.ee) ja lisaks sellele, et ta toob netist ära vastava materjali ning annab need üle päringu esitanud klendile talletab ta tolle materjali teatud ajaks (mõned päevad) oma andmebaasi (selle maht on ca 100 MB). Ja kui nüüd paari minuti või tunni pärast esitab keegi sama päringu (st. soovib netist alla laadida www.postimees.ee pealehte), siis squid ei lähe sellele enam netti järele vaid võtab materjali oma kohalikust andmebaasist ning annab kliendile.
Selline mehhanism toimib ja praktiliselt iga kolmas - neljas päring saab vastatud kasutades kohalikku materjali. See efekt on juba märgatav.
Siin on veel selline moment, et mitu squid serverit võivad teha omavahel koostööd.
Üks võimalus on see, et määrata oma squidile parent (vanem) - siis on nii, et päringud mis ei sisaldu enda kohalikus andmebaasis saadetakse parent squidile (see asub tavaliselt teises - suuremas, paremas masinas) ning too vaatab kust saab.
Teine võimalus on määrata oma squidile sibling (naaber) - siis on nii, et naabrid peavad efektiivselt ühte suurt andmebaasi mitme peale. Ja kui päring esitatakse ning kohalik squid ei leia oma andmebaasist vastust, siis kõigepealt külastab ta naabreid ja seejärel parent'i.
Ülalesitatud jutus kasutasin ma ilmestamiseks konkreetseid arve (minutid, päevad, 100 MB); nende arvude valik ja parent ja naabri valik võib osutuda keeruliseks ja teiste administraatoritega koostööd eeldavaks ettevõtmiseks.
Allpool on toodud ära sammud mida ma kasutasin squidi installeerimisel, konfigureerimisel, käivitamisel ja seismajätmisel:
Tarkvata saab aadressilt squid.nlanr.net
ja seal on ka palju lugemist!
samuti on oluline vaadata cache.eenet.ee
milline parent endale vailda (ilus oleks omanikelt luba küsida)
ja cache.online.ee/cache/cacheware.old.html
ideoloogilise poole pealt (autor Andres Kroonmaa)
1.
tõmbasin squid 2.0 ära
2.
lõin kasutaja (homeiga /usr/local/squid) ja grupi squid ja kõik
järgnevad
sammud sooritasin olles sisse loginud selle kasutaja alt.
3.
pakkisin /usr/local/squid alla lahti src-i
4.
tegin ./configure --prefix=/usr/local/squid
5.
make; make install
Ainus konf fail millega saab ja on vaja tegelda on squid.conf, minul on ta selline:
root@kopka# /usr/local/squid/etc/
$ egrep ^[^#] squid.conf
http_port 3128
icp_port 3130
cache_peer cache.tartu.eenet.ee
parent 3128 3130 no-query
cache_peer_domain cache.tartu.eenet.ee
!.ee
acl QUERY urlpath_regex cgi-bin
\?
no_cache deny QUERY
cache_mem 8 MB
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl sub1 src 192.168.1.0/255.255.255.0
acl sub2 src 192.168.2.0/255.255.255.0
acl kopka src 193.40.xxx.xxx/255.255.255.255
http_access allow manager localhost
http_access allow manager kopka
http_access allow sub1
http_access allow sub2
http_access allow kopka
icp_access allow
sub1
icp_access allow
sub2
icp_access allow
kopka
root@kopka#
Lühidalt kokkuvõttes realiseerib see konfiguratsioon järgmist:
- kuulatakse porte 3128 ja 3130
- vanemaks on cache.tartu.eenet.ee vastavate portidega kusjuures mitte
saata ICP (???) päringuid talle
- Küsida kõike peale .ee domainide
- acl access list: määrab masinad ja alamvõrgud kes
meie squidi kasutada saavad ja annab neile õigused
- samuti selle kust monitoringut teha saab
Esimene käivitamine tuleb taha selliselt:
/usr/local/squid/bin/squid -z
Mis loob nn. swap space kus squid hoiab oma andmeid.
ja hiljem käivitada, seisata ja muudetud konfiguratsiooni sättida sellise scriptiga (võib muidugi ka lihtsalt käske anda)
(Selle scripti avaldas Toomas Soome [email protected] listis, loodan, et autor
ei ole selle siin taas-avaldamise vastu)
#!/bin/sh
case $1 in
'start')
echo "Starting Squid
Cache service."
su - squid -c 'cd /opt/squid/bin;/opt/squid/bin/RunCache
> /dev/null
2>&1 &' >
/dev/null 2>&1
;;
'stop')
# Lööme igaks
juhuks RunCache maha
kill -9 `ps -fu squid
| grep RunCache| grep -v grep | awk '{print $2}'`
# Kas te oleksite nii
lahke ja hakkaksite nüüd seisma jääma?
/opt/squid/bin/squid
-k shutdown
sleep 30
echo "Squid Cache stopped."
;;
'reload')
/opt/squid/bin/squid
-k reconfigure
echo "Squid Cache reloaded."
;;
*)
echo "usage: $0 start|stop|reload"
;;
esac
exit 0
squid -h näitab ära kõik võimalikud võtmed.
Kusjuures RunCache'i roll on vaadata, et kui mõni squid ära
sureb siis ta tagasi tööle panna
Et log failid väga suureks ei kasvaks oleks vaja nt. cron'ist
aegajalt teha 'squid -k rotate' t või lihtsalt mõni squid
kelle pid on logs/squid.pid 'is ära tappa:
kill -USR1 `cat /etc/squid.pid` >/dev/null 2>&1
(Urmas Lett'i soovitus listist [email protected])
RunCache tõmbab automaatselt ise uue squidi üles.
kusjuures töötava squidi puhul on pilt niisugune:
root@kopka /usr/local/squid/logs/
$ ps auxf | grep squid
squid 19483
0.0 0.0 1112 0 ? SW
Dec 8 0:00 (RunCache)
squid 19488
0.0 0.0 2392 0 ? SW
Dec 8 0:00 \_ (squid)
squid 19489
0.1 18.6 16044 5752 ? S Dec 8
4:05 \_ (squid) -sY
squid 19495
0.0 0.2 808 64 ? S
Dec 8 0:00
\_ (unlinkd)
squid 31796
0.0 0.6 856 208 ? S
Dec 8 0:00
\_ (dnsserve
squid 31797
0.0 0.0 852 0 ? SW
Dec 8 0:00
\_ (dnsserve
squid 31798
0.0 0.0 852 0 ? SW
Dec 8 0:00
\_ (dnsserve
squid 31799
0.0 0.0 852 0 ? SW
Dec 8 0:00
\_ (dnsserve
squid 31800
0.0 0.0 852 0 ? SW
Dec 8 0:00
\_ (dnsserve
root@kopka /usr/local/squid/logs/
$
Kaval on panna tööle ka kaasapandud cgi script squidi töö
jälgimiseks (nt. selleks, et jälgida kuidas nn. hitte tuleb -
see on protsent läbi squidi esitatud päringutest, mida ta
oma kohalikust andmebaasist rahuldada sai).
See eeldab, et samas masinas on apache (või mõni muu
sarnane) webserver installeeritud.
gggg