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:

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:

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