Introductie
Load balancing is een essentieel onderdeel van zeer beschikbare infrastructuren die vaak worden gebruikt om de prestaties en betrouwbaarheid van websites, applicaties, databases en andere services te verbeteren door de werklast te verdelen over meerdere servers.
A web infrastructure with no load balancing might look something like the following:
In dit voorbeeld maakt de gebruiker rechtstreeks verbinding met de webserver op yourdomain.com. Als deze enkele webserver uitvalt, kan de gebruiker de website niet langer bereiken. Bovendien, als veel gebruikers tegelijkertijd proberen toegang te krijgen tot de server en deze de belasting niet aankan, kunnen ze langzame laadtijden ervaren of helemaal geen verbinding kunnen maken.
Dit enkele faalpunt kan worden verminderd door een load balancer en minstens één extra webserver aan de achterkant te introduceren. Meestal leveren alle backend-servers identieke inhoud, zodat gebruikers consistente inhoud ontvangen ongeacht welke server reageert.
In het bovenstaande voorbeeld heeft de gebruiker toegang tot de load balancer, die het verzoek van de gebruiker doorstuurt naar een backend-server, die vervolgens rechtstreeks reageert op het verzoek van de gebruiker. In dit scenario is het enkele faalpunt nu de load balancer zelf. Dit kan worden verminderd door een tweede load balancer te introduceren, maar voordat we dat bespreken, laten we eens kijken hoe load balancers werken.
Wat voor soort verkeer kunnen load balancers verwerken?
Load balancer-beheerders maken doorstuurregels voor vier hoofdtypen verkeer:
- HTTP — Standaard HTTP-balancering leidt verzoeken om op basis van standaard HTTP-mechanismen. De Load Balancer stelt de
X-Forwarded-For
,X-Forwarded-Proto
enX-Forwarded-Port
headers in om de back-ends informatie te geven over het oorspronkelijke verzoek. - HTTPS — HTTPS-balancering functioneert hetzelfde als HTTP-balancering, met toevoeging van versleuteling. Versleuteling wordt op twee manieren afgehandeld: ofwel met SSL-doorgeven die de versleuteling behoudt tot aan de backend, of met SSL-beëindiging die de decryptiebelasting op de load balancer plaatst maar het verkeer onversleuteld naar de backend stuurt.
- TCP — Voor toepassingen die geen gebruik maken van HTTP of HTTPS, kan ook TCP-verkeer worden gebalanceerd. Bijvoorbeeld verkeer naar een databasecluster kan worden verdeeld over alle servers.
- UDP — Meer recentelijk hebben sommige load balancers ondersteuning toegevoegd voor het balanceren van kerninternetprotocollen zoals DNS en syslogd die UDP gebruiken.
Deze doorstuurregels zullen het protocol en de poort definiëren op de load balancer zelf en deze toewijzen aan het protocol en de poort die de load balancer zal gebruiken om het verkeer naar de backend te routeren.
Hoe kiest de load balancer de backend-server?
Load balancers kiezen welke server ze een verzoek naar doorsturen op basis van een combinatie van twee factoren. Ze zorgen er eerst voor dat elke server die ze kunnen kiezen daadwerkelijk adequaat reageert op verzoeken, en gebruiken vervolgens een vooraf geconfigureerde regel om te selecteren uit die gezonde pool.
Gezondheidscontroles
Load balancers moeten alleen verkeer doorsturen naar “gezonde” backend-servers. Om de gezondheid van een backend-server te controleren, proberen gezondheidscontroles regelmatig verbinding te maken met backend-servers met behulp van het protocol en poort gedefinieerd door de doorstuurregels om ervoor te zorgen dat servers luisteren. Als een server niet slaagt voor een gezondheidscontrole en dus geen verzoeken kan verwerken, wordt deze automatisch uit de pool verwijderd en wordt er geen verkeer naar doorgestuurd totdat deze weer reageert op de gezondheidscontroles.
Load Balancing-algoritmen
Het load balancing algoritme dat wordt gebruikt, bepaalt welke van de gezonde servers aan de achterkant wordt geselecteerd. Enkele van de veelgebruikte algoritmen zijn:
Round Robin — Round Robin betekent dat servers sequentieel worden geselecteerd. De load balancer selecteert de eerste server op zijn lijst voor het eerste verzoek, gaat dan in volgorde verder naar beneden de lijst, en begint opnieuw bovenaan wanneer hij het einde bereikt.
Least Connections — Least Connections betekent dat de load balancer de server selecteert met de minste verbindingen en wordt aanbevolen wanneer het verkeer resulteert in langere sessies.
Source — Met het Source-algoritme zal de load balancer selecteren welke server te gebruiken op basis van een hash van het bron-IP-adres van het verzoek, zoals het IP-adres van de bezoeker. Deze methode zorgt ervoor dat een bepaalde gebruiker consistent verbinding maakt met dezelfde server.
De beschikbare algoritmen voor beheerders variëren afhankelijk van de specifieke load balancing-technologie die wordt gebruikt.
Hoe gaan load balancers om met status?
Sommige toepassingen vereisen dat een gebruiker blijft verbinden met dezelfde backend-server. Een Source-algoritme creëert een affiniteit op basis van client-IP-informatie. Een andere manier om dit op het webtoepassingsniveau te bereiken, is via sticky sessions, waarbij de load balancer een cookie instelt en alle verzoeken van die sessie worden doorgestuurd naar dezelfde fysieke server.
Redundante Load Balancers
Om de load balancer als een enkel punt van falen te verwijderen, kan een tweede load balancer worden aangesloten op de eerste om een cluster te vormen, waarbij elk de gezondheid van de anderen controleert. Elk van hen is even bekwaam in het detecteren van storingen en herstel.
In het geval dat de hoofd-load balancer uitvalt, moet DNS gebruikers naar de tweede load balancer leiden. Omdat DNS-wijzigingen geruime tijd kunnen kosten om te worden verspreid over het internet en om deze failover automatisch te maken, zullen veel beheerders systemen gebruiken die flexibele IP-adres-hermapping mogelijk maken, zoals Gereserveerde IP’s. Op verzoek IP-adres-hermapping elimineert de verspreidings- en caching-problemen inherent aan DNS-wijzigingen door een statisch IP-adres te bieden dat eenvoudig kan worden herverdeeld wanneer dat nodig is. De domeinnaam kan geassocieerd blijven met hetzelfde IP-adres, terwijl het IP-adres zelf wordt verplaatst tussen servers.
Zo kan een zeer beschikbare infrastructuur met behulp van Gereserveerde IP’s eruit zien:
Conclusie
In dit artikel hebben we een overzicht gegeven van load balancer-concepten en hoe ze in het algemeen werken. Voor meer informatie over specifieke load balancing-technologieën, kunt u kijken naar:
DigitaleOceans Load Balancer Service
- Hoe maak je je eerste DigitaleOceans Load Balancer aan
- Hoe SSL-doorvoer te configureren op DigitaleOceans Load Balancers
- Hoe SSL-beëindiging te configureren op DigitaleOceans Load Balancers
- Hoe TCP-verkeer in evenwicht te brengen met DigitaleOceans Load Balancers
HAProxy
- Een inleiding tot HAProxy en Load Balancing-concepten
- Hoe zeer beschikbare HAProxy-servers in te stellen met Keepalived en Gereserveerde IP’s op Ubuntu 14.04
- Load Balanceren WordPress met HAProxy
Nginx
Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing