This shows you the differences between two versions of the page.
saisp:labs:05:contents:03 [2014/03/23 21:48] alexandru.carp [02. LVS-TUN (tunneling)] |
saisp:labs:05:contents:03 [2014/03/24 16:30] (current) alexandru.carp [03. [20p] Linux-HA] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 02. [20p] LVS-TUN (tunneling) ==== | + | ==== 03. [20p] Linux-HA ==== |
- | In continuare, vom configura directorul pentru a folosi modul LVS-TUN. Apoi, vom observa diferentele fata de LVS-DR. | + | **Linux-HA** este o solutie de clustering. Vom configura un cluster simplu, format din două noduri. |
- | Analog punctului anterior, definiti serviciul HTTP pe director, apoi cele doua realservere in modul tunneling (folositi parametrul ''-i''). | + | {{:saisp:labs:05:contents:lab05-ha.jpg|}} |
- | <solution -hidden> | + | |
- | <code> | + | |
- | 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> | + | |
- | </solution> | + | |
- | 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. | + | Topologia conceptuala este cea din figura de mai sus. Observatii: |
+ | * Cele două realservere din topologia LVS vor fi configurate ca un cluster. | ||
+ | * Directorul din topologia LVS nu mai are nici un rol aici. Inchideti masina virtuala respectiva, pentru a nu consuma resurse inutil. | ||
+ | * Adresa IP prin care va fi accesibil serviciul HTTP este 10.0.0.50. | ||
+ | |||
+ | Pachetul ''heartbeat'' este deja instalat pe **saisp-vm-2** si **saisp-vm-3**. | ||
+ | |||
+ | Este necesar ca stațiile să se poată adresa una pe cealaltă folosind doar hostname-ul. Adăugați liniile corespunzătoare în /etc/hosts: | ||
- | Interfata tunel trebuie sa aiba aceeasi adresa IP cu adresa virtuala a directorului. | ||
<code> | <code> | ||
- | root@saisp-vm-2:~# ip tunnel add tun0 mode ipip local 10.0.0.20 | + | saisp-vm-2# echo "10.0.0.30 saisp-vm-3" >> /etc/hosts |
- | 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> | ||
- | |||
<code> | <code> | ||
- | root@saisp-vm-3:~# ip tunnel add tun0 mode ipip local 10.0.0.30 | + | saisp-vm-3# echo "10.0.0.20 saisp-vm-2" >> /etc/hosts |
- | 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> | ||
- | Porniti, din nou, Wireshark si realizati o captura pe interfata **br0** a masinii fizice. Observati pachetele incapsulate si diferentele fata de LVS-DR. | + | Fișierele de configurare pentru heartbeat se găsesc în directorul ''/etc/ha.d/''. Creați, **pe ambele stații**, fișierul ''ha.cf''. |
+ | * Dezactivați **auto-discovery** (Nodurile vor fi specificate manual) | ||
+ | <code>autojoin none</code> | ||
+ | * Specificați modul de comunicare (unicast), interfața pe care se comunică (eth0) și **adresa celuilalt nod** (Linux-HA poate folosi, de asemenea, broadcast sau multicast) | ||
+ | <code>ucast eth0 10.0.0.30</code> | ||
+ | * Specificați nodurile care participă la cluster. Va trebui să specificați **inclusiv nodul local** - numele unui nod trebuie întotdeauna să coincidă cu hostname-ul masinii: | ||
+ | <code>node saisp-vm-2 saisp-vm-3</code> | ||
- | Stergeti resursa HTTP definita anterior pe director. | + | Linux-HA oferă suport pentru autentificarea conexiunii. Să configurăm folosirea SHA1: |
- | + | * Fișierul de configurare corespunzător este ''authkeys'': | |
- | Stergeti interfetele tunel create pe realservere: | + | |
<code> | <code> | ||
- | root@saisp-vm-2:~# ip tunnel del tun0 | + | auth 1 |
+ | 1 sha1 42ade27dad9045964fab10a395ffe4e0f726a80b | ||
</code> | </code> | ||
+ | * Puteți genera un digest SHA1 folosind ''echo "my secret" | openssl sha1''. | ||
+ | * Fișierul ''authkeys'' trebuie să poată fi citit numai de root: ''chmod 600 /etc/ha.d/authkeys''. | ||
+ | |||
+ | Nu în ultimul rând, trebuie să configurăm serviciile oferite de cluster. În acest exemplu, vom configura HTTP. | ||
+ | * Creați fișierul de configurare ''/etc/ha.d/haresources'': | ||
<code> | <code> | ||
- | root@saisp-vm-3:~# ip tunnel del tun0 | + | saisp-vm-2 10.0.0.50 apache2 |
</code> | </code> | ||
+ | * Linia de mai sus configurează serviciile apache2 să ruleze inițial pe nodul ''saisp-vm-2''. Dacă acest nod pică, serviciile vor fi oferite de ''saisp-vm-3''. | ||
+ | * **Atentie:** Folositi **aceeasi linie** si pe saisp-vm-3 (resursa trebuie detinuta de un singur owner). | ||
+ | * Este important de observat că, în acest exemplu, serviciile rulează pe ambele noduri tot timpul. Ceea ce se schimbă este nodul cu care este asociată adresa IP. | ||
+ | |||
+ | Reporniți serviciul ''heartbeat'' pe ambele mașini și observați adresele lor IP. | ||
+ | |||
+ | Folosind un browser, accesati adresa http://10.0.0.50/ | ||
+ | |||
+ | Experimentați oprind serviciul heartbeat de pe ''saisp-vm-2''. După un timeout, ''saisp-vm-3'' va avea configurată adresa serviciului pe interfața sa eth0. | ||
+ | |||
+ | Accesati din nou adresa http://10.0.0.50/ dar observati ca de aceasta data va raspunde statia ''saisp-vm-3''. | ||
+ | |||
+ | **Atenție**: acest setup oferă redundanță la nivelul serviciilor, dar nu asigură și replicare. Într-o situație concretă, trebuie să ne asigurăm că ambele servere oferă aceleași informații. |