01. [20p] LVS-DR (direct routing)

Serviciul pentru care vom face load-balancing este HTTP. Serverul de web Apache2 este deja instalat pe realservere. Directorul va imparti cererile venite din partea clientului catre cele 2 realservere.

Pe director este deja instalat pachetul ipvsadm necesar configurării load balancing-ului.

Mai intai vom configura adresa virtuala pe director. Adaugam adresa 10.0.0.1/24 pe subinterfata eth0:1 de pe saisp-vm-1:

root@saisp-vm-1:~# ip addr add dev eth0 10.0.0.1/24 label eth0:1

Vom configura HTTP ca serviciu virtual. Trebuie să specificăm adresa si portul serverului virtual și protocolul de nivel transport (TCP, în cazul nostru).

root@saisp-vm-1:~# ipvsadm -A -t 10.0.0.1:80

Serviciul virtual a fost configurat, dar trebuie să adăugăm și servere reale:

root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.20:80 -g
root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.30:80 -g

Parametrul -g semnifică folosirea LVS-DR.

Trebuie, de asemenea, să “convingem” RS-urile să răspundă la cereri pe adresa VS-ului. Există cel puțin două posibilități pentru acest lucru:

  • configurarea adresei VS pe o interfață de loopback a RS. Această metodă are neajunsul că un RS ar putea răspunde unei cereri ARP pentru VS. Problema astfel creată se numește, în LVS, The ARP Problem.
  • utilizarea unei reguli iptables care face RS-ul să accepte pachete, chiar dacă adresa VS-ului nu este configurată pe nicio interfață. Vom folosi această abordare.
root@saisp-vm-2:~# iptables -t nat -A PREROUTING -d 10.0.0.1 -j REDIRECT
root@saisp-vm-3:~# iptables -t nat -A PREROUTING -d 10.0.0.1 -j REDIRECT

Acum puteți utiliza serviciul configurat.

Verificati functionarea deschizand in browser adresa http://10.0.0.1 Folosind CTRL+F5, faceti refresh de cateva ori si observati cum apar, pe rand, paginile de pe cele 2 realservere.

Folosind Wireshark, porniti o captura pe interfata br0 de pe masina fizica. Observati adresele IP si MAC din:

  • pachetele care circula de la client spre director;
  • pachetele care circula de la director spre realservere;
  • pachetele care se intorc de la realservere catre client.

Pentru a vizualiza starea VS-ului, folositi parametrul -l:

root@saisp-vm-1:~# ipvsadm -l

Pentru a afisa detalii despre conexiunile gestionate de VS, adaugati si parametrul -c:

root@saisp-vm-1:~# ipvsadm -l -c

Pe langa configuratia de baza pe care am realizat-o, putem seta parametri aditionali.

De exemplu, vom activa scheduler-ul de tip round-robin, apoi vom configura un maxim de 4 conexiuni simultane pentru fiecare RS:

root@saisp-vm-1:~# ipvsadm -E -t 10.0.0.1:80 -s rr
root@saisp-vm-1:~# ipvsadm -e -t 10.0.0.1:80 -r 10.0.0.20:80 -x 4
root@saisp-vm-1:~# ipvsadm -e -t 10.0.0.1:80 -r 10.0.0.30:80 -x 4

Parametrul -E desemneaza editarea serviciului (in cazul nostru, s-a modificat scheduler-ul).

Parametrul -e desemneaza editarea realserverului (in cazul nostru, s-a modificat limita maxima de conexiuni).

In browser, faceti refresh de cateva ori si observati cum dupa 8 refresh-uri, directorul nu va mai trimite cererile catre realservere.

Pentru RS-uri cu configurație hardware diferită, se pot folosi valori diferite ale numărului maxim de conexiuni. Alternativ, se poate defini o pondere (weight) diferită pentru fiecare server și se poate folosi un scheduler ponderat (de exemplu, wrr) pe VS.

Pentru a sterge serviciul definit, folosim parametrul -D:

root@saisp-vm-1:~# ipvsadm -D -t 10.0.0.1:80

In plus, pe realservere vom sterge regulile iptables definite:

root@saisp-vm-2:~# iptables -t nat -F
root@saisp-vm-3:~# iptables -t nat -F
saisp/labs/05/contents/01.txt · Last modified: 2014/04/04 11:38 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0