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