Prošli put smo govorili o mogućnostima NSX Edgea u smislu statičkog i dinamičkog usmjeravanja, a danas ćemo se pozabaviti load balancerom.
Prije nego što počnemo s postavljanjem, želio bih vas ukratko podsjetiti na glavne vrste balansiranja.
teorija
Sva današnja rješenja za balansiranje nosivosti najčešće se dijele u dvije kategorije: balansiranje na četvrtoj (transportnoj) i sedmoj (aplikacijskoj) razini modela.
- Balanser L4 najčešće je to srednji proxy koji stoji između klijenta i skupa dostupnih backend-ova, koji prekida TCP veze (to jest, neovisno odgovara na SYN), odabire backend i pokreće novu TCP sesiju u svom smjeru, neovisno šaljući SYN. Ova vrsta je jedna od osnovnih, moguće su i druge opcije.
- Balanser L7 distribuira promet preko dostupnih pozadinskih sustava "sofisticiranije" nego što to radi L4 balanser. Može odlučiti koju pozadinu odabrati na temelju, primjerice, sadržaja HTTP poruke (URL, kolačić itd.).
Bez obzira na vrstu, balanser može podržati sljedeće funkcije:
- Otkrivanje usluge je proces utvrđivanja skupa dostupnih pozadina (Static, DNS, Consul, Etcd, itd.).
- Provjera funkcionalnosti otkrivenih pozadina (aktivni “ping” pozadine pomoću HTTP zahtjeva, pasivna detekcija problema u TCP vezama, prisutnost nekoliko 503 HTTP kodova u odgovorima itd.).
- Samo balansiranje (round robin, nasumični odabir, izvorni IP hash, URI).
- TLS završetak i provjera certifikata.
- Opcije vezane uz sigurnost (provjera autentičnosti, sprječavanje DoS napada, ograničenje brzine) i još mnogo toga.
NSX Edge nudi podršku za dva načina implementacije balansera opterećenja:
Proxy način rada ili s jednom rukom. U ovom načinu rada, NSX Edge koristi svoju IP adresu kao izvornu adresu kada šalje zahtjev jednoj od pozadina. Dakle, balanser istovremeno obavlja funkcije izvornog i odredišnog NAT-a. Pozadina vidi sav promet koji šalje balanser i odgovara izravno na njega. U takvoj shemi, balanser mora biti u istom mrežnom segmentu s internim poslužiteljima.
Evo kako to ide:
1. Korisnik šalje zahtjev na VIP adresu (adresa balansera) koja je konfigurirana na Edge-u.
2. Edge odabire jednu od pozadina i izvodi odredišni NAT, zamjenjujući VIP adresu adresom odabrane pozadine.
3. Edge izvodi izvorni NAT, zamjenjujući adresu korisnika koji je poslao zahtjev svojom vlastitom.
4. Paket se šalje odabranoj pozadini.
5. Pozadina ne odgovara izravno korisniku, već Edgeu, budući da je izvorna adresa korisnika promijenjena u adresu balansera.
6. Edge korisniku prenosi odgovor poslužitelja.
Dijagram je ispod.
Transparentni ili inline način. U ovom scenariju, balanser ima sučelja na internoj i eksternoj mreži. Istodobno, ne postoji izravan pristup unutarnjoj mreži iz vanjske. Ugrađeni balanser opterećenja djeluje kao NAT pristupnik za virtualna računala na internoj mreži.
Mehanizam je sljedeći:
1. Korisnik šalje zahtjev na VIP adresu (adresa balansera) koja je konfigurirana na Edge-u.
2. Edge odabire jednu od pozadina i izvodi odredišni NAT, zamjenjujući VIP adresu adresom odabrane pozadine.
3. Paket se šalje odabranoj pozadini.
4. Pozadina prima zahtjev s originalnom adresom korisnika (izvorni NAT nije izvršen) i odgovara izravno na njega.
5. Promet ponovno prihvaća balanser opterećenja, budući da u inline shemi obično djeluje kao zadani pristupnik za farmu poslužitelja.
6. Edge izvodi izvorni NAT za slanje prometa korisniku, koristeći njegov VIP kao izvornu IP adresu.
Dijagram je ispod.
Praksa
Moj testni stol ima 3 poslužitelja koji pokreću Apache, koji je konfiguriran za rad preko HTTPS-a. Edge će izvršiti kružno balansiranje HTTPS zahtjeva, prosljeđujući svaki novi zahtjev novom poslužitelju.
Započnimo.
Generiranje SSL certifikata koji će koristiti NSX Edge
Možete uvesti važeći CA certifikat ili koristiti samopotpisani. Za ovaj test koristit ću samopotpisani.
- U sučelju vCloud Director idite na postavke rubnih usluga.
- Idite na karticu Certifikati. S popisa radnji odaberite dodavanje novog CSR-a.
- Ispunite obavezna polja i kliknite Zadrži.
- Odaberite novostvoreni CSR i odaberite opciju samopotpisnog CSR-a.
- Odaberite rok valjanosti certifikata i kliknite Zadrži
- Samopotpisani certifikat pojavljuje se na popisu dostupnih.
Postavljanje profila aplikacije
Aplikacijski profili daju vam potpuniju kontrolu nad mrežnim prometom i čine njegovo upravljanje jednostavnim i učinkovitim. Mogu se koristiti za definiranje ponašanja za određene vrste prometa.
- Idite na karticu Load Balancer i omogućite balanser. Ovdje omogućena opcija Acceleration omogućuje balanseru da koristi brže L4 balansiranje umjesto L7.
- Idite na karticu Profil aplikacije da postavite profil aplikacije. Pritisnite +.
- Postavite naziv profila i odaberite vrstu prometa za koji će se profil primjenjivati. Dopustite mi da objasnim neke parametre.
Upornost – pohranjuje i prati podatke o sesiji, na primjer: koji specifični poslužitelj u skupu servisira korisnički zahtjev. Ovo osigurava da se korisnički zahtjevi usmjeravaju na istog člana skupa tijekom trajanja sesije ili sljedećih sesija.
Omogući SSL prolaz – Kada je ova opcija odabrana, NSX Edge prestaje prekidati SSL. Umjesto toga, prekid se događa izravno na poslužiteljima koji se balansiraju.
Umetnite HTTP zaglavlje X-Forwarded-For – omogućuje određivanje izvorne IP adrese klijenta koji se spaja na web poslužitelj putem balansera opterećenja.
Omogućite SSL na strani bazena – omogućuje vam da odredite da se odabrani skup sastoji od HTTPS poslužitelja.
- Budući da ću balansirati HTTPS promet, moram omogućiti SSL na strani bazena i odabrati prethodno generirani certifikat u kartici Certifikati virtualnog poslužitelja -> Certifikat usluge.
- Slično za Pool Certificates -> Service Certificate.
Stvaramo skup poslužitelja, čiji će promet biti uravnotežen
- Idite na karticu Pools. Pritisnite +.
- Postavili smo naziv skupa, odabrali algoritam (koristit ću kružni postupak) i vrstu nadzora za pozadinu provjere zdravlja.Opcija Transparent označava jesu li početni izvorni IP-ovi klijenata vidljivi internim poslužiteljima.
- Ako je opcija onemogućena, promet za interne poslužitelje dolazi s izvorne IP adrese balansera.
- Ako je opcija uključena, interni poslužitelji vide izvornu IP adresu klijenata. U ovoj konfiguraciji, NSX Edge mora djelovati kao zadani pristupnik kako bi se osiguralo da vraćeni paketi prolaze kroz NSX Edge.
NSX podržava sljedeće algoritme balansiranja:
- IP_HASH – odabir poslužitelja na temelju rezultata hash funkcije za izvorni i odredišni IP svakog paketa.
- NAJMANJE KON – balansiranje dolaznih veza, ovisno o broju koji je već dostupan na pojedinom poslužitelju. Nove veze bit će usmjerene na poslužitelj s najmanje veza.
- ROUND_ROBIN – nove veze se redom šalju svakom poslužitelju, u skladu s težinom koja mu je dodijeljena.
- URI – lijevi dio URI-ja (ispred upitnika) raspršuje se i dijeli s ukupnom težinom poslužitelja u skupu. Rezultat pokazuje koji poslužitelj prima zahtjev, osiguravajući da se zahtjev uvijek usmjerava na isti poslužitelj, sve dok su svi poslužitelji dostupni.
- HTTPHEADER – balansiranje na temelju specifičnog HTTP zaglavlja, koje se može navesti kao parametar. Ako zaglavlje nedostaje ili nema nikakvu vrijednost, primjenjuje se algoritam ROUND_ROBIN.
- URL – Svaki HTTP GET zahtjev traži URL parametar naveden kao argument. Ako je iza parametra znak jednakosti i vrijednost, tada se vrijednost raspršuje i dijeli s ukupnom težinom pokrenutih poslužitelja. Rezultat pokazuje koji poslužitelj prima zahtjev. Ovaj se proces koristi za praćenje korisničkih ID-ova u zahtjevima i osiguravanje da se isti korisnički ID uvijek šalje na isti poslužitelj, sve dok su svi poslužitelji dostupni.
- U bloku Članovi kliknite + za dodavanje poslužitelja u skup.
Ovdje morate navesti:- naziv poslužitelja;
- IP adresa poslužitelja;
- port na kojem će poslužitelj primati promet;
- luka za provjeru ispravnosti (Monitor healthcheck);
- težina – pomoću ovog parametra možete prilagoditi proporcionalnu količinu prometa primljenog za određenog člana skupa;
- Max Connections – najveći broj veza s poslužiteljem;
- Minimalne veze – najmanji broj veza koje poslužitelj mora obraditi prije nego što se promet proslijedi sljedećem članu skupa.
Ovako izgleda konačni skup od tri poslužitelja.
Dodavanje virtualnog poslužitelja
- Idite na karticu Virtualni poslužitelji. Pritisnite +.
- Aktiviramo virtualni poslužitelj pomoću Enable Virtual Server.
Dajemo mu ime, odabiremo prethodno kreirani Application Profile, Pool i označavamo IP adresu na koju će Virtualni poslužitelj primati zahtjeve izvana. Specificiramo HTTPS protokol i port 443.
Izborni parametri ovdje:
Ograničenje veze – najveći broj istodobnih veza koje virtualni poslužitelj može obraditi;
Ograničenje brzine povezivanja (CPS) – najveći broj novih dolaznih zahtjeva u sekundi.
Ovo dovršava konfiguraciju balansera; možete provjeriti njegovu funkcionalnost. Poslužitelji imaju jednostavnu konfiguraciju koja vam omogućuje da razumijete koji je poslužitelj iz skupa obradio zahtjev. Tijekom postavljanja odabrali smo Round Robin algoritam balansiranja, a parametar Weight za svaki poslužitelj je jednak jedan, tako da će svaki sljedeći zahtjev obraditi sljedeći poslužitelj iz skupa.
Unesemo vanjsku adresu balansera u preglednik i vidimo:
Nakon osvježavanja stranice, zahtjev će obraditi sljedeći poslužitelj:
I opet - za provjeru trećeg poslužitelja iz skupa:
Prilikom provjere možete vidjeti da je certifikat koji nam šalje Edge isti onaj koji smo generirali na samom početku.
Provjera statusa balansera s konzole Edge pristupnika. Da biste to učinili, unesite prikaži bazen balansera opterećenja usluge.
Konfiguriranje Service Monitora za provjeru statusa poslužitelja u skupu
Korištenjem Service Monitora možemo pratiti status poslužitelja u backend skupu. Ako odgovor na zahtjev nije očekivani, poslužitelj se može izvaditi iz skupa tako da ne prima nove zahtjeve.
Prema zadanim postavkama konfigurirana su tri načina provjere:
- TCP-monitor,
- HTTP monitor,
- HTTPS-monitor.
Stvorimo novu.
- Idite na karticu Praćenje usluge, kliknite +.
- Odaberite:
- naziv za novu metodu;
- interval u kojem će se zahtjevi slati,
- vrijeme čekanja na odgovor,
- vrsta nadzora – HTTPS zahtjev korištenjem GET metode, očekivani statusni kod – 200(OK) i URL zahtjeva.
- Ovime je dovršeno postavljanje novog Monitora usluge; sada ga možemo koristiti prilikom stvaranja skupa.
Postavljanje pravila aplikacije
Pravila aplikacije način su manipuliranja prometom na temelju određenih okidača. Pomoću ovog alata možemo stvoriti napredna pravila za uravnoteženje opterećenja koja možda nisu moguća putem profila aplikacije ili drugih usluga dostupnih na Edge Gatewayu.
- Za izradu pravila idite na karticu Pravila aplikacije balansera.
- Odaberite naziv, skriptu koja će koristiti pravilo i kliknite Zadrži.
- Nakon što je pravilo kreirano, potrebno je urediti već konfigurirani virtualni poslužitelj.
- Na kartici Napredno dodajte pravilo koje smo izradili.
U gornjem primjeru omogućili smo tlsv1 podršku.
Još par primjera:
Preusmjerite promet na drugi bazen.
Ovom skriptom možemo preusmjeriti promet na drugi bazen za balansiranje ako glavni skup ne radi. Da bi pravilo funkcioniralo, više bazena mora biti konfigurirano na balanseru i svi članovi glavnog skupa moraju biti u neaktivnom stanju. Morate navesti naziv bazena, a ne njegov ID.
acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME
Preusmjerite promet na vanjski resurs.
Ovdje preusmjeravamo promet na vanjsko web mjesto ako svi članovi glavnog skupa ne rade.
acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down
Još više primjera
To je sve što se tiče balansera. Ako imate pitanja, pitajte, spreman sam odgovoriti.
Izvor: www.habr.com