Tillgängligheten av applikationer har aldrig tagits på så stort allvar som idag när vi använder appar för mer än bara kommunikation, vare sig det är personligt eller professionellt och när appar är affären.
Applikationer som inte ständigt är online eller är instabila förlorar sina användare och relevans och blir så småningom föråldrade. Det hände blixtsnabbt. Eftersom internet aldrig sover och fungerar 24 timmar om dygnet, 7 dagar i veckan, måste samma idé gälla för appar.
Skalbarhet är avgörande för att göra detta och säkerställa applikationstillgänglighet. Lastbalansering är en av de viktigaste komponenterna för att säkerställa tillgänglighet. Många tror fortfarande att lastbalansering kan åstadkommas med ett enkelt skript.
Så är dock inte fallet. Bara det ger åtkomst till program över hela världen - när som helst och från vilken enhet som helst.
I det här inlägget ska vi ta en djupgående titt på lastbalansering, dess algoritmer och hur det relaterar till mikrotjänster, bland annat. Låt oss börja!
Vad är lastbalansering?
När efterfrågan på en webbplats eller affärsapplikation växer, kommer en enda server snart inte att kunna hantera hela belastningen. Organisationer fördelar arbetsbelastningen över flera servrar för att tillfredsställa efterfrågan. Denna metod, känd som "belastningsbalansering", förhindrar att en enskild server blir överbelastad, vilket kan göra att den saktar ner, släpper förfrågningar eller till och med kraschar.
Lastbalansering fördelar nätverkstrafiken lika för att undvika fel på grund av resursöverbelastning. Applikationer, webbplatser, databaser och andra datorresurser fungerar bättre och är mer tillgängliga med den här metoden. Det hjälper också till med korrekt och snabb behandling av användarförfrågningar.
Ur användarens perspektiv fungerar lastbalansering som en osynlig mellanhand mellan en klient och en samling servrar, vilket säkerställer att anslutningsförfrågningar inte släpps. Applikationer, webbplatser, databaser och onlinetjänster skulle med största sannolikhet kollapsa om efterfrågan blev för stor utan lastbalansering.
Hundratusentals användarförfrågningar kan skickas till en enda webbplats med hög trafik på samma gång. Flera servrar krävs för att korrekt fylla webbsidor med det begärda innehållet, såsom text, bilder, video och ljudströmning. Lastbalansering används vanligtvis i högtrafikerade webbserverfarmar, såväl som DNS-servrar, databaser och FTP-platser (File Transfer Protocol).
Om en enskild server är överbelastad kan detta fungera dåligt eller till och med krascha. Lastbalanserare minskar risken för stillestånd genom att fördela användarförfrågningar jämnt mellan en samling servrar. Om en av servrarna i gruppen misslyckas omdirigeras trafiken till andra servrar i gruppen. En lastbalanserare lägger automatiskt till nya servrar i trafikdistributionsprocessen när de läggs till i serverpoolen.
Hur fungerar lastbalansering?
Det fungerar enligt följande:
- När en klient tar emot en begäran, till exempel via en webbläsare eller en applikation, försöker den ansluta till servern.
- När en lastbalanserare tar emot en begäran dirigerar den den till en av servrarna i en servergrupp baserat på etablerade mönster av algoritmen (eller farmen).
- Servern tar emot anslutningsbegäran och svarar klienten via lastbalanseraren.
- När lastbalanseraren tar emot svaret matchar den klientens IP-adress med IP-adressen för den valda servern. Därefter sänds svaret med paketet.
- SSL-avlastning är processen att dekryptera data med hjälp av krypteringsprotokollet Security Socket Layer så att servrar inte behöver göra det.
- Processen upprepas tills sessionen är över.
Lastbalanseringsmetoder
För att välja vilken av servrarna i en serverfarm som tar emot nästa begäran, använder varje lastbalanseringsteknik en uppsättning kriterier. Det finns fem typiska metoder för lastbalansering:
- LISTA MED NAMNEN I CIRKEL: Detta är standardmetoden och den fungerar precis som den låter. Lastbalanseraren distribuerar förfrågningar i ett roterande mönster, börjar med den första servern i gruppen och fortsätter ner till botten, där den väntar på att bli anropad igen. Denna metod säkerställer att varje server hanterar ungefär samma antal anslutningar.
- Viktad Round Robin: Detta tillvägagångssätt tilldelar varje server en vikt (eller preferens) som i allmänhet är proportionell mot dess kapacitet. Ju fler förfrågningar en server tar emot, desto högre vikt. En server med ett viktvärde på två får till exempel dubbelt så många förfrågningar som en server med ett viktvärde.
- Sticky Session: Detta tillvägagångssätt, även känt som sessionsbeständighet, ansluter vissa klienter och servrar under en session. För att upprätta länken använder lastbalanseraren en cookie eller användarens IP-adress för att identifiera ett användarattribut. När anslutningen har upprättats, skickas användarens förfrågningar till samma server tills sessionen avslutas. Detta optimerar nätverksresurserna samtidigt som användarupplevelsen förbättras.
- Minsta anslutningar: Den här strategin förutsätter att alla förfrågningar resulterar i en lika stor serverbörda. Som ett resultat får servern med det minsta antalet förfrågningar nästa förfrågan.
- IP Hash: Denna algoritm genererar en unik hashnyckel baserad på klientens och serverns käll- och destinations-IP-adresser. Nyckeln används för att dirigera begäran och gör att en förlorad anslutning till samma server kan återupptas.
Hårdvara vs. Mjukvarulastbalanserare
Hårdvarulastbalanserare
Fysisk hårdvara, såsom en apparat, utgör hårdvarulastbalanserare. Dessa dirigerar trafik till servrar beroende på faktorer som antalet befintliga anslutningar, processoranvändning och serverprestanda. Hårdvarulastbalanserare har proprietär firmware som måste underhållas och uppdateras när nya versioner och säkerhetskorrigeringar blir tillgängliga.
Maskinvarulastbalanserare ger ofta högre prestanda och kontroll, såväl som ett bredare utbud av funktioner som Kerberos-autentisering och SSL-hårdvaruacceleration, men de kräver viss nivå av hanterings- och underhållsexpertis. Eftersom hårdvarulastbalanserare är mindre flexibla och skalbara än mjukvarulastbalanserare, finns det en benägenhet att överprovisionera hårdvarulastbalanserare.
Programvara Load Balancer
Mjukvarulastbalanserare är vanligtvis lättare att ställa in än sina motsvarigheter i hårdvaran. De är också mer kostnadseffektiva och anpassningsbara, och de fungerar bra med mjukvaruutvecklingsmiljöer. Programvarumetoden låter dig anpassa lastbalanseraren till din miljös exakta krav. Den ökade flexibiliteten kan komma på bekostnad av ytterligare tid för att sätta upp lastbalanseraren.
Mjukvarubalanserare ger dig större flexibilitet att göra ändringar och uppdateringar än hårdvara, som har en mer sluten låda. Förpackade virtuella maskiner kan användas som mjukvarulastbalanserare (VM). Virtuella maskiner kommer att spara lite inställningstid, men de kanske inte har all funktionalitet som finns tillgänglig i deras hårdvarumotsvarigheter.
Enkel implementering av lastbalansering
Vi kommer att använda Spring Cloud-biblioteket för att bygga appar som ansluter till andra appar på ett belastningsbalanserat sätt. När vi behandlar förfrågningar om fjärrtjänster kan vi enkelt konstruera lastbalansering med vilken teknik vi vill. Betrakta följande kod som ett exempel. Vi börjar med en grundläggande serverapplikation.
Servern kommer bara att ha en HTTP-slutpunkt och kommer att användas i flera fall. Sedan bygger vi en klientapp som använder Load Balancer för att distribuera förfrågningar över flera serverinstanser.
server
Vi börjar med en grundläggande Fjäderkänga applikation för vår exempelserver:
Till att börja med injicerar vi en anpassningsbar variabel som heter instans_ID. Detta hjälper oss att skilja mellan många instanser som är i drift. Efter det skapar vi en enda HTTP GET-slutpunkt som returnerar ett meddelande och instans-ID.
Standardinstansen med ID 1 kommer att fungera på port 8080. Vi behöver bara lägga till några programparametrar för att starta en andra instans:
Klient
Låt oss nu ta en titt på klientkoden. Det är här Load Balancer kommer in, så låt oss börja med att införliva den i vår applikation:
Efter det utvecklar vi en implementering av ServiceInstanceListSupplier. Detta är ett av de viktigaste gränssnitten i Load Balancer. Den anger hur vi hittar tillgängliga tjänsteinstanser.
Vi hårdkodar två separata instanser av vår exempelserver i vår exempelapplikation. De körs på samma system men använder separata portar:
Skapa en LoadBalancerConfiguration-klass nu:
Den här klassen har bara ett syfte: den skapar en belastningsbalanserad WebClient-byggare för att göra fjärrförfrågningar. Vår anteckning använder ett fiktivt namn för tjänsten.
Detta beror på det faktum att vi sannolikt inte kommer att veta de exakta värdnamnen och portarna för att köra instanser i förväg. Som ett resultat använder vi ett fiktivt namn som platshållare, och ramverket kommer att ersätta faktisk information när det väljer en körande instans.
Låt oss sedan göra en konfigurationsklass som kommer att användas för att instansiera vårt utbud av serviceinstanser. Observera att vi använder samma alias som tidigare:
Vi kan nu bygga den riktiga klientapplikationen. Låt oss skicka 10 frågor till exempelservern med hjälp av WebClient-bönan från tidigare:
Vi kan se från utgången att vi lastbalanserar mellan två separata instanser:
Lastbalansering i Microservices
Mikrotjänstarkitektur används av flera företag, som Netflix och Amazon, för att utveckla affärsapplikationer som en uppsättning löst sammankopplade tjänster. Hyperskala och kontinuerlig leverans för komplicerade applikationer är bara två av anledningarna till att gå över till denna distribuerade, löst sammankopplade arkitektur.
Dessa företags team har implementerat Agile- och DevOps-strategier för att producera appar snabbare och med en lägre felfrekvens än traditionella metoder. Du måste dock hitta en balans mellan den distribuerade arkitekturens komplexitet och applikationens krav, skalkrav och begränsningar av tiden till marknaden.
Under så många år har applikationsleveranskontroller (ADC) varit avgörande för att uppfylla servicenivåkraven för företagsapplikationer som är värd för lokalt eller i molnet. En klient som använder en mikrotjänstbaserad applikation behöver inte veta om de instanser som tillhandahåller den för att kunna växa klienten och mikrotjänsterna oberoende.
Detta är just den frånkoppling som tillhandahålls av en omvänd proxy eller en lastbalanserare. Återigen är lastbalansering lösningen för att säkerställa att mikrotjänster kan hantera efterfrågan, säkerhet och tillgänglighet.
När du kombinerar traditionell nord-sydlig lastbalansering mellan klient- och mikrotjänster-baserade appar med East-West-distribution för horisontell skalbarhet, får du ett rejält uppsving. Målet är att upprätthålla den säkra och reglerade miljö som IT kräver utan att offra utvecklingsförmåga eller DevOps automatisering krav.
Fördelar
Lastbalansering ger olika fördelar genom att förbättra resursutnyttjande, dataleverans och svarstid för webbplatser och appar med hög trafik, såväl som databaser som får ett stort antal frågor. Lastbalansering säkerställer att användarförfrågningar uppfylls snabbt och korrekt i scenarier med hög trafik.
De sparar användarna förvärringen av att hantera tröga program och resurser. Lastbalansering hjälper också till att undvika stillestånd och förenkla säkerheten, vilket minskar risken för förlorad produktivitet och inkomster för ditt företag.
- Lastbalansering ger flexibiliteten att lägga till och ta bort servrar som efterfrågan kräver, förutom att hantera trafiken till optimal effektivitet. Eftersom trafik omdirigeras till andra servrar under underhåll är det också möjligt att utföra serverunderhåll utan att störa användarna.
- Lastbalansering ger inbyggd redundans genom att dela upp trafiken mellan en uppsättning servrar. Du kan omedelbart avleda belastningen till andra servrar om en misslyckas, vilket minimerar påverkan på användarna.
- Om användningen av en applikation eller webbplats ökar kan den ökade trafiken försämra dess prestanda om den inte hanteras effektivt. Med lastbalansering kan du lägga till en riktig eller virtuell server för att möta efterfrågan utan att störa tjänsten. Lastbalanseraren identifierar nya servrar när de kommer online och integrerar dem enkelt i driften. Den här metoden är att föredra framför att migrera en webbplats från en överbelastad server till en ny, vilket ofta innebär lite driftstopp.
Slutsats
Lastbalansering är en kritisk komponent i moderna, feltoleranta system. Vi kan helt enkelt konstruera appar som distribuerar förfrågningar till flera tjänsteinstanser med hjälp av olika lastbalanseringsmetoder. Företag måste stödja komplicerade IT-system för att kunna tillhandahålla applikationer på ett säkert sätt.
Konfiguration, distribution och underhåll av mikrotjänster över flera domäner kan vara felbenägen, dyr och tidskrävande. IT bör använda bästa praxis och teknik för automation, synlighet, analys och orkestrering som är kompatibla med deras agila och DevOps-processer för att göra installationen och underhållet av dessa mikrotjänster enklare.
Kommentera uppropet