This shows you the differences between two versions of the page.
saisp:labs:05:contents:02 [2014/03/02 18:03] alexandru.carp |
saisp:labs:05:contents:02 [2014/03/23 21:48] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 01. LVS-DR (direct routing) ==== | + | ==== 02. [20p] LVS-TUN (tunneling) ==== |
- | 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. | + | In continuare, vom configura directorul pentru a folosi modul LVS-TUN. Apoi, vom observa diferentele fata de LVS-DR. |
- | Mai intai vom configura adresa virtuala pe director. Adaugam adresa **10.0.0.1/24** pe subinterfata **eth0:1** de pe **saisp-vm-1**: | + | Analog punctului anterior, definiti serviciul HTTP pe director, apoi cele doua realservere in modul tunneling (folositi parametrul ''-i''). |
+ | <solution -hidden> | ||
<code> | <code> | ||
- | root@saisp-vm-1:~# ip addr add dev eth0 10.0.0.1/24 label eth0:1 | + | root@saisp-vm-1:~# ipvsadm -A -t 10.0.0.1:80 |
+ | root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.20:80 -i | ||
+ | root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.30:80 -i | ||
</code> | </code> | ||
+ | </solution> | ||
- | Vom configura HTTP ca serviciu virtual. Trebuie să specificăm adresa si portul server-ului virtual și protocolul de nivel transport (TCP, în cazul nostru): | + | Pentru ca realserverele sa poata interpreta corect pachetele primite de la director, trebuie sa configuram cate o interfata tunel, de tip **ipip**, pe fiecare dintre acestea. |
+ | |||
+ | Interfata tunel trebuie sa aiba aceeasi adresa IP cu adresa virtuala a directorului. | ||
<code> | <code> | ||
- | root@saisp-vm-1:~# ipvsadm -A -t 10.0.0.1:80 | + | root@saisp-vm-2:~# ip tunnel add tun0 mode ipip local 10.0.0.20 |
+ | root@saisp-vm-2:~# ip addr add 10.0.0.1/24 dev tun0 | ||
+ | root@saisp-vm-2:~# ip link set tun0 up | ||
</code> | </code> | ||
- | Serviciul virtual a fost configurat, dar trebuie să adăugăm și servere reale: | ||
<code> | <code> | ||
- | root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.20:80 -g | + | root@saisp-vm-3:~# ip tunnel add tun0 mode ipip local 10.0.0.30 |
- | root@saisp-vm-1:~# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.30:80 -g | + | root@saisp-vm-3:~# ip addr add 10.0.0.1/24 dev tun0 |
+ | root@saisp-vm-3:~# ip link set tun0 up | ||
</code> | </code> | ||
- | Parametrul **-g** semnifică folosirea LVS-DR. | + | Porniti, din nou, Wireshark si realizati o captura pe interfata **br0** a masinii fizice. Observati pachetele incapsulate si diferentele fata de 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: | + | Stergeti resursa HTTP definita anterior pe director. |
- | * 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, //[[http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html|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**. <code> | + | Stergeti interfetele tunel create pe realservere: |
- | root@saisp-vm-2:~# iptables -t nat -A PREROUTING -d 10.0.0.1 -j REDIRECT | + | <code> |
- | root@saisp-vm-3:~# iptables -t nat -A PREROUTING -d 10.0.0.1 -j REDIRECT | + | root@saisp-vm-2:~# ip tunnel del tun0 |
+ | </code> | ||
+ | <code> | ||
+ | root@saisp-vm-3:~# ip tunnel del tun0 | ||
</code> | </code> |