VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Deel één. Inleiding
Deel twee. Instellen van Firewall- en NAT-regels
Deel drie. DHCP-configuratie
Deel vier. Configuratie van routering

Vorige keer spraken we over de mogelijkheden van NSX Edge met betrekking tot statische en dynamische routering, en vandaag gaan we het hebben over de load balancer.
Voordat we met de configuratie beginnen, wil ik heel kort de belangrijkste soorten load balancing herinneren.

Theorie

De meeste huidige oplossingen voor load balancing worden vaak in twee categorieën verdeeld: load balancing op de vierde (transport) en zevende (toepassings) lagen van het model. OSIHet OSI-model is niet de beste referentie bij het beschrijven van de methoden voor load balancing. Bijvoorbeeld, als een L4-load balancer ook TLS-terminatie ondersteunt, wordt het dan een L7-load balancer? Maar dat is hoe het is.

  • Een L4-load balancer is vaak een tussenliggende proxy die zich bevindt tussen de client en een set beschikbare backends en die TCP-verbindingen beëindigt (dat wil zeggen, zelf op SYN antwoordt), een backend kiest en een nieuwe TCP-sessie in die richting initieert door zelf SYN te verzenden. Dit type is vrij basis; er zijn ook andere mogelijkheden.
  • Een L7-load balancer verdeelt het verkeer op een 'fijnere' manier over de beschikbare backends dan een L4-load balancer. Hij kan besluiten welke backend te kiezen op basis van bijvoorbeeld de inhoud van het HTTP-bericht (URL, cookie, enz.).

Ongeacht het type kan de load balancer de volgende functies ondersteunen:

  • Service discovery – het proces van het bepalen van de set beschikbare backends (Static, DNS, Consul, Etcd, enz.).
  • De gezondheidstoetsing van ontdekte backends (actieve 'ping' naar de backend met een HTTP-verzoek, passieve probleemdetectie in TCP-verbindingen, aanwezigheid van meerdere opeenvolgende 503 HTTP-codes in de antwoorden, enz.).
  • De load balancing zelf (round robin, willekeurige selectie, hash van het IP-adres van de bron, URI).
  • TLS-terminatie en certificaatvalidatie.
  • Opties met betrekking tot beveiliging (authenticatie, tegen DoS-aanvallen, snelheidslimitering) en nog veel meer.

NSX Edge biedt ondersteuning voor twee uitrolmodi van de load balancer:

Proxy-modus, of one-arm. In deze modus gebruikt NSX Edge zijn IP-adres als bronadres bij het verzenden van een verzoek naar een van de back-ends. Zo vervult de load balancer tegelijkertijd de functies van Source en Destination NAT. De backend ziet al het verkeer als verzonden door de load balancer en beantwoordt het rechtstreeks. In dit schema moet de load balancer zich in hetzelfde netwerksegment bevinden als de interne servers.

Dit is hoe het verloopt:
1. De gebruiker verzendt een verzoek naar het VIP-adres (het adres van de load balancer), dat is geconfigureerd op Edge.
2. Edge selecteert een van de back-ends en voert destination NAT uit, waarbij het VIP-adres wordt vervangen door het adres van de geselecteerde backend.
3. Edge voert source NAT uit, waarbij het adres van de verzoekende gebruiker wordt vervangen door het zijne.
4. Het pakket wordt naar de geselecteerde backend verzonden.
5. De backend beantwoordt niet rechtstreeks de gebruiker, maar Edge, aangezien het oorspronkelijke adres van de gebruiker is gewijzigd in het adres van de load balancer.
6. Edge geeft het antwoord van de server aan de gebruiker door.
De onderstaande schema.
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Transparante of inline modus. In dit scenario heeft de load balancer interfaces in zowel het interne als het externe netwerk. Er is geen directe toegang tot het interne netwerk van buitenaf. De ingebouwde load balancer fungeert als een NAT-gateway voor de virtuele machines in het interne netwerk.

Het mechanisme is als volgt:
1. De gebruiker verzendt een verzoek naar het VIP-adres (het adres van de load balancer), dat is geconfigureerd op Edge.
2. Edge selecteert een van de back-ends en voert destination NAT uit, waarbij het VIP-adres wordt vervangen door het adres van de geselecteerde backend.
3. Het pakket wordt naar de geselecteerde backend verzonden.
4. De backend ontvangt het verzoek met het oorspronkelijke adres van de gebruiker (source NAT is niet uitgevoerd) en beantwoordt het rechtstreeks.
5. Het verkeer wordt opnieuw door de load balancer ontvangen, aangezien hij in de inline-configuratie doorgaans als de standaardgateway voor de serverfarm fungeert.
6. Edge voert source NAT uit om het verkeer naar de gebruiker te verzenden, waarbij hij zijn VIP gebruikt als source IP-adres.
De onderstaande schema.
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Praktijk

Op mijn testomgeving zijn 3 servers ingesteld met Apache, dat is geconfigureerd om via HTTPS te werken. Edge zal HTTPS-verzoeken balanceren volgens de round robin-methode, waarbij elke nieuwe aanvraag naar een nieuwe server wordt geproxy'd.
Laten we beginnen.

Genereer een SSL-certificaat dat door NSX Edge zal worden gebruikt
U kunt een geldig CA-certificaat importeren of een zelfondertekend certificaat gebruiken. In deze test zal ik een zelfondertekend certificaat gebruiken.

  1. Ga in de interface van vCloud Director naar de instellingen van de Edge-services.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. Ga naar het tabblad Certificaten. Kies in de actielijst voor het toevoegen van een nieuw CSR.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  3. Vul de benodigde velden in en klik op Keep.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  4. Selecteer de zojuist aangemaakte CSR en kies de optie self-sign CSR.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  5. Kies de geldigheidsduur van het certificaat en klik op Keep.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  6. Het zelfondertekende certificaat is verschenen in de lijst met beschikbare certificaten.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Stel het Applicatieprofiel in.
Applicatieprofielen bieden meer controle over netwerkverkeer en maken het beheer ervan eenvoudig en effectief. Hiermee kan het gedrag voor specifieke soorten verkeer worden gedefinieerd.

  1. Ga naar het tabblad Load Balancer en schakel de load balancer in. De optie Acceleration enabled stelt de load balancer in staat om sneller L4 load balancing in plaats van L7 te gebruiken.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. Ga naar het tabblad Applicatieprofiel om het applicatieprofiel in te stellen. Klik op +.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  3. Geef een naam op voor het profiel en kies het type verkeer waarvoor het profiel van toepassing zal zijn. Ik zal enkele parameters uitleggen.
    Persistentie – slaat en volgt sessiegegevens op, bijvoorbeeld: welke specifieke server uit de pool de gebruikersverzoek afhandelt. Dit garandeert dat gebruikersverzoeken naar dezelfde member van de pool worden geleid gedurende de hele levensduur van de sessie of bij volgende sessies.
    Enable SSL passthrough – door deze optie te kiezen, stopt NSX Edge met het beëindigen van SSL. In plaats daarvan vindt de beëindiging rechtstreeks op de servers plaats waarvoor de load balancing wordt uitgevoerd.
    Insert X-Forwarded-For HTTP header – stelt in staat om het oorspronkelijke IP-adres van de client te identificeren die via de load balancer verbinding maakt met de webserver.
    Enable Pool Side SSL – maakt het mogelijk aan te geven dat de gekozen pool uit HTTPS-servers bestaat.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  4. Aangezien ik HTTPS-verkeer ga balanceren, moet ik Pool Side SSL inschakelen en het eerder gegenereerde certificaat kiezen op het tabblad Virtuele Server Certificaten —> Service Certificate.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  5. Evenzo voor Pool Certificates —> Service Certificate.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

We creëren een pool van servers waarvan het verkeer zal worden gebalanceerd Pools.

  1. Ga naar het tabblad Pools. Klik op +.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. Geef een naam aan de pool, kies een algoritme (ik zal round robin gebruiken) en het type monitoring voor de health check van de backend. De optie Transparent geeft aan of de oorspronkelijke source IP van clients zichtbaar zijn voor interne servers.
    • Als de optie is uitgeschakeld, gaat het verkeer voor interne servers met het source IP van de load balancer.
    • Als de optie is ingeschakeld, zien interne servers het source IP van de clients. In zo'n configuratie moet NSX Edge optreden als de standaardgateway om ervoor te zorgen dat de geretourneerde pakketten door NSX Edge gaan.

    NSX ondersteunt de volgende load balancing-algoritmen:

    • IP_HASH – selectie van de server op basis van de resultaten van de hashfunctie voor source en destination IP van elk pakket.
    • LEASTCONN – belasting van inkomende verbindingen, afhankelijk van het aantal al bestaande verbindingen op een specifieke server. Nieuwe verbindingen worden naar de server met het minste aantal verbindingen gestuurd.
    • ROUND_ROBIN – nieuwe verbindingen worden om de beurt naar elke server gestuurd, volgens het gewicht dat aan die server is toegewezen.
    • URI – het linker gedeelte van de URI (voor de vraagteken) wordt gehasht en gedeeld door het totale gewicht van de servers in de pool. Het resultaat geeft aan welke server het verzoek ontvangt, waarbij wordt gegarandeerd dat het verzoek altijd naar dezelfde server wordt gestuurd, zolang alle servers beschikbaar blijven.
    • HTTPHEADER – belasting op basis van een specifieke HTTP-header die als parameter kan worden opgegeven. Als de header ontbreekt of geen waarde heeft, wordt het ROUND_ROBIN-algoritme toegepast.
    • URL – in elk HTTP GET-verzoek wordt er gezocht naar de URL-parameter die als argument is opgegeven. Als er een gelijkteken en waarde volgen, wordt de waarde gehasht en gedeeld door het totale gewicht van de actieve servers. Het resultaat geeft aan welke server het verzoek ontvangt. Dit proces wordt gebruikt om gebruikers-id's in verzoeken bij te houden en te waarborgen dat dezelfde gebruikers-id altijd naar dezelfde server wordt gestuurd, zolang alle servers beschikbaar blijven.

    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

  3. In het blok Members klikken we op + om servers aan de pool toe te voegen.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

    Hier moet worden opgegeven:
    • de naam van de server;
    • het IP-adres van de server;
    • de poort waarop de server verkeer zal ontvangen;
    • de poort voor health check (Monitor healthcheck);
    • gewicht (Weight) – met deze parameter kan de proportionele hoeveelheid ontvangen verkeer voor een specifiek lid van de pool worden gereguleerd;
    • Max Connections – het maximale aantal verbindingen naar de server;
    • Min Connections – het minimum aantal verbindingen dat de server moet verwerken voordat het verkeer naar het volgende lid van de pool kan worden doorgestuurd.

    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

    Dit is hoe de uiteindelijke pool van drie servers eruitziet.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Voeg een Virtual Server toe

  1. Ga naar het tabblad Virtual Servers. Klik op +.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. Schakel de virtuele server in met Enable Virtual Server.
    We assign a name to it, select the previously created Application Profile, Pool, and specify the IP address to which the Virtual Server will accept external requests. We specify the HTTPS protocol and port 443.
    Optional parameters here:
    Connection Limit – maximum number of simultaneous connections that the virtual server can handle;
    Connection Rate Limit (CPS) – maximum number of new incoming requests per second.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

The configuration of the load balancer is now complete, and we can check its functionality. The servers have a simple configuration that allows us to understand which server from the pool processed the request. During configuration, we selected the Round Robin load balancing algorithm, and the weight parameter for each server is one, so each subsequent request will be processed by the next server from the pool.
We enter the external address of the load balancer in the browser and see:
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

After refreshing the page, the request will be handled by the next server:
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

And once more – to check the third server from the pool:
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Upon checking, you can see that the certificate sent to us by Edge is the same one that we generated at the very beginning.

Checking the status of the load balancer from the Edge gateway console. For this, enter show service loadbalancer pool.
VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Configuring the Service Monitor to check the status of the servers in the pool
With the Service Monitor, we can track the status of the servers in the backend pool. If the response to the request does not match the expected one, the server can be removed from the pool to prevent it from receiving any new requests.
Three check methods are configured by default:

  • TCP-monitor,
  • HTTP-monitor,
  • HTTPS-monitor.

Let's create a new one.

  1. We go to the Service Monitoring tab and click +.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. We select:
    • a name for the new method;
    • an interval at which requests will be sent,
    • a response timeout,
    • monitoring type – HTTPS request using GET method, expected status code – 200(OK) and request URL.
  3. This concludes the setup of the new Service Monitor; now we can use it when creating a pool.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

Configuring Application Rules

Application Rules are a way to manipulate traffic based on certain triggers. With this tool, we can create advanced load balancing rules that may not be possible to configure through Application profiles or other services available on the Edge Gateway.

  1. Om een regel aan te maken, gaan we naar het tabblad Toepassingsregels van de load balancer.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  2. We kiezen een naam, het script dat de regel zal gebruiken, en drukken op Behouden.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  3. Nadat de regel is aangemaakt, moeten we de al ingestelde Virtuele Server bewerken.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer
  4. In het tabblad Geavanceerd voegen we de door ons aangemaakte regel toe.
    VMware NSX voor de kleintjes. Deel 5. Configuratie van de load balancer

In het bovenstaande voorbeeld hebben we de ondersteuning voor tlsv1 ingeschakeld.

Nog een paar voorbeelden:

Verkeer omleiden naar een andere pool.
Met dit script kunnen we verkeer naar een andere load balancing pool omleiden als de primaire pool niet werkt. Om de regel te laten werken, moeten er meerdere pools op de load balancer zijn geconfigureerd en moeten alle leden van de primaire pool zich in de status down bevinden. We moeten de naam van de pool opgeven, niet de ID.

acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME

Verkeer omleiden naar een externe bron.
Hier leiden we verkeer om naar een externe website als alle leden van de primaire pool in de status down zijn.

acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down

Nog meer voorbeelden here.

Dat was alles over de load balancer. Als je nog vragen hebt, vraag maar, ik ben er om te antwoorden.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster