This shows you the differences between two versions of the page.
saisp:labs:09:contents:07 [2014/04/28 15:57] razvan.deaconescu created |
saisp:labs:09:contents:07 [2014/05/05 14:24] (current) razvan.deaconescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 07. [BONUS] Load balancing în Varnish ==== | + | ==== 07. [BONUS - 10p] Load balancing în Varnish ==== |
- | Copierea mașinii virtuale web.qcow2 și configurarea unei adrese IP pentru a servi cereri HTTP. Configurarea Varnish pentru a servi pe rând din cele două servere. | + | Dorim să facem load balancing (denumit și [[https://www.varnish-cache.org/docs/3.0/tutorial/advanced_backend_servers.html#directors|directors]] în Varnish). Înainte de această configurare, opriți mașina virtuală ''web'' și creați o copie a imaginii ''web.qcow2'' într-un alt fișier, de exemplu ''web-copy.qcow2''. Apoi editați scriptul ''xlr8-start-kvm'' pentru a porni o nouă mașina ''web'', cu altă adresă IP. Această mașină web este al doilea back end. |
+ | <note tip> | ||
+ | Porniți doar copia mașinii virtuale, ca să nu aveți conflict de adresă IP. Apoi schimbați adresa IP în ''192.168.0.4'' în fișierul ''/etc/network/interfaces''. | ||
+ | |||
+ | Schimbați adresa MAC a copiei mașinii virtuale în scriptul ''xlr8-start-kvm'' ca să fie diferită de adresele MAC ale celorlalte mașini virtuale. | ||
+ | |||
+ | În scriptul ''xlr8-start-kvm'' folosiți o nouă interfață TAP, de exemplu ''tap3'', și stabiliți un nou port VNC, de exemplu '':3''. | ||
+ | </note> | ||
+ | |||
+ | <solution -hidden> | ||
+ | Fișierul ''xlr8-start-kvm'' trebuie actualizat pentru a permite a treia mașină virtuală:<code> | ||
+ | student@mjolnir:~/saisp$ cat xlr8-start-kvm | ||
+ | [...] | ||
+ | web_copy_hdd="web-copy.qcow2" | ||
+ | [...] | ||
+ | sudo kvm -hda "$web_copy_hdd" \ | ||
+ | -m 512 -smp 1 \ | ||
+ | -net nic,macaddr=52:54:00:12:34:53 \ | ||
+ | -net tap,ifname=tap3,script=no,downscript=no \ | ||
+ | -vnc :3 -daemonize | ||
+ | [...] | ||
+ | sudo brctl addif br-kvm tap3 | ||
+ | [...] | ||
+ | sudo ip link set dev tap3 up | ||
+ | [...] | ||
+ | </code> | ||
+ | De asemenea, în fișierul ''/etc/network/interfaces'' din sistemul de fișiere al mașinii virtuale ''web-copy.qcow2'', am configurat adresa IP ''192.168.0.4''. | ||
+ | |||
+ | Pornim mașinile virtuale folosind scriptul ''xlr8-start-kvm''. | ||
+ | </solution> | ||
+ | |||
+ | Configurați Varnish pe mașina virtuală ''varnish'' să folosească cele două servere web de pe celelalte două mașini virtuale în load balancing de tip round robin. | ||
+ | |||
+ | <note tip> | ||
+ | Va trebui să configurați directorul pe post de backend folosind ''set req.backend ...''. Urmăriți și exemplul de [[http://opentsdb.net/docs/build/html/user_guide/utilities/varnish.html|aici]]. | ||
+ | </note> | ||
+ | |||
+ | <solution -hidden> | ||
+ | Realizăm configurarea în fișierul ''/etc/varnish/default.vcl'':<code> | ||
+ | root@varnish:~# vi /etc/varnish/default.vcl | ||
+ | root@varnish:~# cat /etc/varnish/default.vcl | ||
+ | [...] | ||
+ | backend default { | ||
+ | .host = "192.168.0.2"; | ||
+ | .port = "80"; | ||
+ | } | ||
+ | backend new { | ||
+ | .host = "192.168.0.4"; | ||
+ | .port = "80"; | ||
+ | } | ||
+ | |||
+ | director sample round-robin { | ||
+ | { | ||
+ | .backend = default; | ||
+ | } | ||
+ | { | ||
+ | .backend = new; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | sub vcl_recv { | ||
+ | set req.backend = sample; | ||
+ | } | ||
+ | </code> | ||
+ | Repornim serviciul Varnish:<code> | ||
+ | root@varnish:~# service varnish restart | ||
+ | </code> | ||
+ | și apoi verificăm prin accese repetate folosirea unui back end și apoi a altuia. Pentru validare folosim comanda:<code> | ||
+ | root@varnish:~# varnishlog -i RxHeader -I Cookie | ||
+ | </code> | ||
+ | </solution> |