I ett tidigare blogginlägg skrev vi om redundans och hur man bygger system som tål fel. Nästa naturliga steg i samma riktning är lastbalansering. En central byggsten i moderna distribuerade system. Där redundans säkerställer att systemet överlever fel, ser lastbalansering till att det fortsätter att prestera under belastning.
I det stora hela kan lastbalansering ses som en paraplyterm för flera olika typer av processer, men som alla delar principen av att dela upp jobb till flera noder. I denna artikeln fokuserar vi nätverkslastbalanserare, som jobbar genom att schemalägga olika nätverkskopplingar via flera back-end noder.
Vad är / gör en lastbalanserare?
En lastbalanserare (eng. load balancer) är en komponent i nätverks- eller applikationsarkitekturen som agerar som en intelligent proxy mellan klienter och backend-resurser. Den tar emot inkommande trafik (HTTP(S), TCP eller UDP) och distribuerar denna trafik över en pool av servrar baserat på definierade regler och algoritmer.
Rent tekniskt verkar lastbalanseraren ofta som en reverse proxy. Den terminerar klientanslutningar, analyserar metadata (t.ex. headers, cookies eller IP-adresser) och fattar routingbeslut i realtid. Detta gör det möjligt att både optimera resursanvändning och implementera avancerade funktioner såsom TLS-terminering (dekryptera inkommande HTTPS-trafik), caching, rate limiting och health checks.
En viktig aspekt när det kommer till lastbalansering och att bygga en fungerande struktur är health checking. Lastbalanseraren övervakar kontinuerligt backend-servrarnas status genom aktiva eller passiva kontroller. Om en nod inte svarar korrekt tas den automatiskt ur rotation, vilket bidrar till hög tillgänglighet och självhelande system.
Vilka använder lastbalanserare?
Lastbalansering är standard i princip alla system som måste hantera varierande eller hög trafik, samt tjänster som har stora krav på upptid och tillgänglighet. Exempelvis använder IoT plattformar och högtillgängliga internettjänster som streaming och e-handel lastbalanseringsstrategier för att vara tillgängliga dygnet runt. Oavsett när besökarna väljer att besöka tjänsten ska det bara fungera.
Service providers och molnleverantörer som beebyte erbjuder ofta lastbalansering som en managed service och anpassar där varje lösning efter behov. Tillsammans kan man hitta rätt teknik och sätta upp korrekta mätpunkter för t.ex failover. Allt för att förbättra svarstiderna och tillgängligheten för den specifika applikationen.
Men man ska inte tro att det bara är stora företag och tunga applikationer som mår bra av att använda sig av lastbalansering. En medelstor webbapplikation eller webbshop kan dra stor nytta av lastbalansering för att förbättra svarstider, minska latens och undvika single points of failure.
Lastbalansering med mjukvara vs. hårdvara
I mitten av 1990-talet implementerades lastbalansering via dedikerad hårdvara. Företag som F5 Networks, Citrix och Cisco sålde dedikerad hårdvara som skulle agera lastbalanserare. Innan detta var det standard att all trafik till en tjänst gick via en enda server, vilket blev ohållbart när den digitala utvecklingen trappade upp tempot. Tyvärr så låg prislappen för en av dess servrar mellan 100.000 – 250.000 dollar, vilket i sig inte blev hållbart då det endast var en liten del av marknaden som kunde ha råd att investera i dessa.
Idag dominerar istället den mjukvarubaserade lastbalanseringen. Dessa körs som vanliga processer eller containrar och kan distribueras horisontellt. Mjukvarulösningar kan dessutom integreras i moderna mikrotjänstarkitekturer och service meshes. Fördelarna med den mjukvarubaserade lastbalanseringen är:
Elasticitet – kan skalas upp och ner dynamiskt
Automation – integreras med CI/CD och Infrastructure as Code
Kostnadseffektivitet – kan köras på standard hårdvara
2 typer av lastbalansering
När man pratar om lastbalansering så brukar man prata om lager, eller Layers. Det kommer från den teoretiska modellen (OSI-modellen) som delar upp nätverk i olika lager. För lastbalanserare är Layer 4 och Layer 7 viktiga. Baserat på vilket lager lastbalanseraren använder så kommer trafiken förstås och hanteras på olika sätt.
Layer 4 (L4) – Transport
Lager 4 jobbar på transportnivå. Det vill säga hur data transporteras och inte vad datan innehåller. När den hanterar trafik tittar den på IP-adresser och portar och jobbar efter protokoll som TCP och UDP.
Detta ger mycket hög prestanda och låg latens, men begränsar insikten i applikationsdata och är inte lika flexibel i routingen.
Layer 7 (L7) – Application
Lager 7 är väldigt annorlunda från Lager 4 och fokusersr på vad trafiken faktiskt inehåller. Den jobbar efter protokol så som HTTP/HTTPS och gRPC. Den kan läsa URLer, metadata och bilder, samt cookies och sessionsdata och på sådant sätt bestämma vad som ska skickas vart.
Fördelarna med Lager 7 är att den kan hantera sessioner (sticky sessions) där den memorerar vilken server en klient blivit ansluten till tidigare, smartare routing, och kan möjliggöra A/B-testning och caching. Nackdelarna är dock att det kan vara lite långsammare då den kräver mer tid för analys och att uppsättningar är mer komplexa.
Kort sagt. Lager 4 kollar endast på adressen på paketet och skickar vidare, Lager 7 kollar innehållet och bedömer hantering.
Algoritmer i lastbalansering
Algoritmerna i en lastbalansering är kärnan i hur trafiken fördelas. Det är här själva “intelligensen” sitter. Logiken som avgör och bedömer vilken backend-nod som ska ta emot nästa request. Valet av algoritm påverkar direkt latens, throughput, resursutnyttjande och hur väl systemet hanterar ojämn belastning.
I praktiken handlar det om att optimera flera, ibland motstridiga, mål. Så som att minimera svarstid, maximera resursutnyttjande, undvika överbelastning på enskilda enheter, hantera sessioner på ett korrekt sätt.
Alla algoritmer kan delas in i två kategorier. Statiska eller dynamiska algoritmer:
Statiska – Använder sig av bestämda mönster och ignorerar aktuell serverstatus. Denna metod fungerar bäst på stabila och förutsägbara miljöer där det inte sker mycket förändring.
Dynamisk – Anpassar sig i realtid efter serverstatus och responstider för att optimera prestanda. Väldigt bra för oförutsägbar trafik som kan få toppar.
Olika typer av algoritmer
Det finns en mängd olika typer av algoritmer, de som är bra att känna till är:
Round Robin – Den enklaste metoden där varje server får en förfrågan i turordning. Effektiv i homogena miljöer.
Least Connections – Skickar trafik till den server som har minst antal aktiva anslutningar. Bra för varierande workload.
IP Hashing – Använder klientens IP-adress för att deterministiskt välja backend. Användbart för session persistence utan cookies.
Weighted Round Robin / Least Connections – Tilldelar olika vikter till servrar baserat på kapacitet. Kraftfullt i heterogena kluster.
Power of Two Choices – En algoritm där två servrar väljs slumpmässigt och den minst belastade används. Ger nära-optimal fördelning.
Verktyg för lastbalansering
Som tidigare nämnts så används lastbalansering nästan alltid via mjukvarubaserade verktyg. Det finns flera olika typer av verktyg som i stora drag fungerar likadant, men som har vissa skillnader i prestanda, flexibilitet och sättet de förstår trafiken på.
Några välkända namn inom lastbalanseringen är:
NGINX – En kombination av webbserver och reverse proxy som också kan användas som lastbalanserare och content cache. Känd för stabilitet och att den tar upp lite resurser. Bäst på att hantera webbtrafik, särskilt för webbsidor med hög trafik eller trafiktoppar. Passar bra för traditionella webbappar, hemsidor och API:er.
HAProxy – En renodlat och mycket snabb lastbalanserare byggd specifikt för att distribuera trafik. Den kan arbeta både på Layer 4 och på Layer 7. Pålitlig och stabil i stora produktionsmiljöer där en ren lastbalansering behövs för att hantera stora volymer där varje millisekund räknas.
Envoy – En modern proxy byggd för mikrotjänstarkitektur och distribuerade system. Envoy körs ofta som en “sidecar proxy” bredvid varje tjänst eller som en gateway. Den styr trafik dynamiskt via ett kontrollplan som kan ändra routing i realtid utan omstarter. Den har dock en väldigt hög komplexitet och lämpar sig inte för enklare applikationer.
Lastbalansering hos beebyte
Avskräckt eller intresserad? Lastbalansering kan verka mastigt, men i många fall är det högst användbart och kan leda till stor nytta om det används på korrekt sätt och det finns kompetens i hanteringen. Hos beebyte har vi möjlighet att sätta upp och managera lösningar med lastbalansering, utan extra krångel och med kompetenta och erfarna tekniker i bakgrunden.
Kontakta oss för att veta mer!
Läs även vårt kundcase med MinPrilla som använder lastbalanesring för att optimera sin webbshop och hantera stora mängder trafik varje dag.



