Well-Architected Framework-perspektiv på Azure Load Balancer
Belastningsutjämningsprocessen distribuerar nätverkstrafik till en grupp på två eller flera bakomliggande servrar. Azure Load Balancer är en Azure-intern tjänst som utför Layer-4-belastningsutjämning för UDP (User Datagram Protocol) och Transmission Control Protocol (TCP). Load Balancer hjälper till att ge låg svarstid och hög tillgänglighet för regionala och globala distributioner.
Den här artikeln förutsätter att du som arkitekt har granskat alternativ för belastningsutjämning i Azure och valt Load Balancer för din arbetsbelastning. Vägledningen i den här artikeln innehåller arkitektoniska rekommendationer som mappas till principerna för Well-Architected Framework-pelarna.
Viktig
Använda den här guiden
Varje avsnitt har en checklista för design som presenterar arkitekturområden som är viktiga tillsammans med designstrategier som är lokaliserade till teknikomfånget.
Dessutom ingår rekommendationer för de teknikfunktioner som kan hjälpa till att materialisera dessa strategier. Rekommendationerna representerar inte en fullständig lista över alla konfigurationer som är tillgängliga för Load Balancer och dess beroenden. I stället listar de de viktigaste rekommendationerna som mappats till designperspektiven. Använd rekommendationerna för att skapa ditt konceptbevis eller för att optimera dina befintliga miljöer.
Grundläggande arkitektur som visar de viktigaste rekommendationerna:
Azure Virtual Machines-grundläggande arkitektur.
Teknikomfång
Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurser:
- Lastbalanserare
Den här vägledningen fokuserar på SKU för Standard Load Balancer. SKU:er för Basic Load Balancer och Gateway Load Balancer ligger utanför omfånget för den här artikeln.
Not
För HTTP-program bör du överväga Azure Application Gateway eller Azure Front Door i stället för Load Balancer. De här alternativen hanterar belastningsutjämning och tillhandahåller även funktioner som WAF(Web Application Firewall) och TLS-avslutning (Transport Layer Security).
Mer information finns i:
Tillförlitlighet
Syftet med grundpelarna för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att bygga upp tillräckligt med motståndskraft och möjlighet att snabbt återhämta sig från fel.
Principer för tillförlitlighetsdesign tillhandahålla en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.
Checklista för design
Påbörja din designstrategi baserat på checklistan för designgranskning för tillförlitlighet. Fastställ dess relevans för dina affärskrav samtidigt som du tänker på nivåerna och funktionerna för virtuella datorer . Utöka strategin till att omfatta fler metoder efter behov.
Förstå effekten av Microsoft-stödda garantier. Utöver andra komponenter i arkitekturen ska du även dela in serviceavtal (SLA) i tillförlitlighetsmålet för din arbetsbelastning. Tänk på följande viktiga punkter:
Om den belastningsutjämnade slutpunkten inte kan ansluta till alla fungerande bakgrundsservrar under en hel minut anses den minuten som otillgänglig. Men om minst en begäran lyckas inom samma minut, även om andra misslyckas, anses den minuten inte vara stilleståndstid.
Stilleståndstid inkluderar inte minuter som orsakas av SNAT-portöverbelastning (Source Network Address Translation). Se till att du konfigurerar arbetsbelastningen så att den hanterar det förväntade antalet anslutningar och öppnar portar i enlighet med detta.
Stöd för zonredundans i din arbetsbelastningsarkitektur. Vi rekommenderar Standard Load Balancer SKU. Den har tillförlitlighetsfunktioner, till exempel stöd för tillgänglighetszoner, trafikdistribution över flera regioner och möjlighet att hantera fler instanser i serverdelspoolen. Den här funktionen hjälper till att motstå fel på zon-, regional- och enskild VM-instansnivå. Tänk på begränsningar, till exempel back-end-poolens maximala storlek.
Not
I Load Balancer hanterar du antalet lastbalanserade virtuella datorer, men inte antalet Load Balancer-instanser. Du kan konfigurera en Load Balancer-instans som zonredundant eller fästa den i en zon om arbetsbelastningen behöver samordna virtuella datorer i en enda zon. Klientdels-IP-adressens zonindelat eller multizonkonfiguration avgör redundansen för belastningsutjämning.
Stöd för regional redundans i din arbetsbelastningsarkitektur. Du kan konfigurera Load Balancer som en global lastbalanserare. I den här konfigurationen har Load Balancer en statisk offentlig IP-adress för anycast som sänder till flera regioner. När klienter begär den här IP-adressen går deras begäranden till den närmaste serverinstansen. Load Balancer ansluter till regionala lastbalanserare för att distribuera trafiken effektivt.
Utvärdera ändringar i nätverksstacken för att stödja tillförlitlig skalning. Överväg att skala ut backend-poolen med hjälp av autoskalningsregler. Var medveten om potentiell SNAT-portöverbelastning för utgående trafik. Du kan lösa problemet genom att använda Azure NAT Gateway för enklare konfiguration, men förstå att den saknar redundans i tillgänglighetszonen. Du kan också använda Load Balancer för extra zonredundans. För mer information, se Utgående anslutningar.
Minimera potentiella fel. Analysera felläge och identifiera åtgärder. I följande tabell visas typer av fel och hur du åtgärdar dem.
Misslyckande Förmildrande omständighet Trafiken dirigeras till ohälsosamma programinstanser. Övervaka hälsotillståndet för belastningsinstanser. Implementera HTTP-hälsoavsökningar som omfattar kontroller av arbetsbelastningsberoenden. Trafiken dirigeras till en region som har ett avbrott. Distribuera extra instanser i en annan region. Lägg till en global lastbalanserare för att omdirigera trafik till den nya regionen. Arbetsbelastningens användarbas har utökats för att stödja användare i en ny region och de har hög svarstid. Programmet har nu ett stort antal timeouter och fel. Distribuera extra instanser i en ny region och lägg till dem i tjänstkonfigurationen. Som global lastbalanserare dirigerar Azure Load Balancer trafik närmare användarna. Dirigera trafik till felfria instanser. Du kan använda HTTP eller TCP för hälsoavsökningar. Om du vill ge bättre statussvar kan du överväga att skapa en HTTP-slutpunkt för hälsokontroller, även för icke-HTTP-appar. Den här metoden är särskilt användbar för att kontrollera beroenden och databaser. Utan HTTP-avsökningar förlitar sig lastbalanseraren på TCP-anslutningar, vilket kanske inte återspeglar den virtuella datorns hälsotillstånd korrekt.
Du kan konfigurera hälsoavsökningen i Load Balancer. Mer information finns i designanvisningar för hälsoundersökningar.
Rekommendationer
Rekommendation | Fördel |
---|---|
Välj Standard Load Balancer SKU. Mer information finns i SKU-jämförelse. |
Den här SKU:n stöder tillförlitlighetsfunktioner, till exempel tillgänglighetszoner och belastningsutjämning för flera regioner. |
Konfigurera regler för att mappa frontendens IP-adress till backend-servrarnas IP-adresser för att aktivera belastningsutjämning. Serverdelsadresspoolen bör ha minst två serverdelsslutpunkter för belastningsutjämning för redundans. |
Regler är kärnan i belastningsutjämningsalgoritmen. Utan den här konfigurationen är distributionslägena inaktiverade. |
Konfigurera hälsoprober. – Ange avsökningsintervallet och tröskelvärdena. Tänk på kompromissen mellan hur snabbt du kan identifiera fel och antalet begäranden till slutpunkten. – Utvärdera om du vill skicka trafik till instanserna när alla instanser har statusen ohälsosam. Du kan använda den här konfigurationen för att implementera en graciös nedbrytningsupplevelse. Mer information finns i AllProbedUp. |
Endast felfria serverdelspoolinstanser får nya anslutningar. Den här konfigurationen hjälper till att upprätthålla hög tillgänglighet och tillförlitlighet eftersom den dirigerar trafik bort från instanser med feltillstånd. |
Konfigurera privata och offentliga IP-adresser så att de är zonredundanta. IP-adressen avgör zonredundansen för Lastbalanseraren. | Zonredundans hjälper arbetsbördan att motstå zonfel. När en zon misslyckas kan tjänsterna redundansväxla till en av de återstående zonerna. |
Säkerhet
Syftet med säkerhetspelare är att tillhandahålla konfidentialitet, integritet och tillgänglighet garantier för arbetsbelastningen.
Designprinciperna för Security tillhandahåller en övergripande designstrategi för att uppnå dessa mål genom att tillämpa metoder för den tekniska utformningen av lastbalanseraren.
Checklista för design
Inled din designstrategi baserat på checklistan för designgranskning av säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsläget. Utöka strategin till att omfatta fler metoder efter behov.
Granska säkerhetsbaslinjer. För att förbättra säkerhetsläget för din applikation som lastbalanseras av Azure Load Balancer, granska säkerhetsbaslinjen för Azure Load Balancer.
Skydda backend-servrar. Distribuera resurser i ett virtuellt nätverk som inte har direkt internetexponering. Fronta det virtuella nätverket med en lastbalanserare. Helst bör lastbalanseraren ha brandväggsfunktioner. För HTTP-program bör du överväga Application Gateway eller Azure Front Door. För icke-HTTP-program bör du överväga Load Balancer med en privat IP-adress (intern lastbalanserare) och dirigera trafik via Azure Firewall för ökad säkerhet. Mer information finns i Intern lastbalanserare.
Du kan också använda Load Balancer som omvänd proxy. I så fall har lastbalanseraren en offentlig IP-adress med SNAT, som exponerar resurser samtidigt som deras IP-adresser maskeras.
Not
För att filtrera trafik till backend-servrar, använd nätverkssäkerhetsgrupper (NSG) på de undernät som innehåller framdelen och bakdelen. Tillämpa inte NSG:er direkt på Load Balancer-tjänsten. När NSG:er tillämpar regler tar de hänsyn till källportarna, målportarna och adressintervallen för de ursprungliga datorerna och måldatorerna, inte lastbalanseraren.
Design för privat anslutning. Load Balancer fungerar med Azure Private Link. Om du sprider programresurser mellan virtuella nätverk kan du ansluta resurser i olika virtuella nätverk. Använd peering för virtuella nätverk eller placera Private Link framför den interna lastbalanseraren. Alternativet Private Link ger säkrare åtkomst utan att behöva en offentlig IP-adress. Det begränsar också åtkomsten från icke-anslutna nätverk.
Du kan auktorisera privata länkar via rollbaserad åtkomstkontroll för att begränsa åtkomsten till endast de identiteter som behöver den.
Skydda ditt program mot hot på nätverksgränsen. För design som använder Load Balancer som startpunkt implementerar du trafikkontroll på slutpunktsnivå. Den här designen har inte inbyggda säkerhetsfunktioner som en WAF, så du måste lägga till extra åtgärder för att skydda HTTP-program. För mer information, se Public Load Balancer. Se också till att du skyddar lastbalanserarens slutpunkter från DDoS-attacker (Distributed Denial-of-Service).
Kryptera nätverkstrafik. Load Balancer fungerar på Layer 4 och har fullt stöd för belastningsutjämning av TCP- och UDP-trafik. Load Balancer stöder inte SSL (Secure Sockets Layer) och TLS-avslutning. För HTTPS-belastningsutjämning på programlagret använder du Application Gateway.
Rekommendationer
Rekommendation | Fördel |
---|---|
Konfigurera klientdelens IP-adress till en privat IP-adress i ett virtuellt nätverk. | Den här metoden hjälper till att säkerställa att klientdelens IP-adress och virtuella nätverk förblir isolerade från direkt internetexponering. Den interna lastbalanseraren kan inte ta emot inkommande trafik från Internet, vilket minskar potentiella attackvektorer. |
Skydda den offentliga lastbalanseraren med Azure DDoS Protection. | En DDoS Protection-plan ger avancerat skydd, inklusive identifieringsfunktioner som övervakar slutpunkten för hot och tecken på missbruk. |
Kostnadsoptimering
Kostnadsoptimering fokuserar på identifiera utgiftsmönster, prioritera investeringar inom kritiska områden och optimera i andra för att uppfylla organisationens budget samtidigt som affärskraven uppfylls.
Designprinciper för kostnadsoptimering tillhandahåller en övergripande designstrategi för att uppnå dessa mål och göra kompromisser vid behov i den tekniska design som rör Lastbalanseraren och dess miljö.
Checklista för design
Påbörja din designstrategi baserat på checklistan för designgranskning och kostnadsoptimering för investeringar. Finjustera designen så att arbetsbelastningen är i linje med den budget som allokeras för arbetsbelastningen. Din design bör använda rätt Azure-funktioner, övervaka investeringar och hitta möjligheter att optimera över tid.
Inkludera kostnader för balansering av faktorlaster i din kostnadsmodell. Tänk på primära faktorer, till exempel mängden data som Load Balancer bearbetar och antalet regler för inkommande och utgående belastningsutjämning. För en exakt kostnadsuppskattning använder du trafikloggar för att mäta dina inkommande och utgående trafikbehov.
Ange kontroller för utgifter. Logga och analysera kostnader för Load Balancer. Om du vill hantera kostnaderna effektivt använder du Microsoft Cost Management- för att skapa budgetar och konfigurera aviseringar. Kostnader kan ackumuleras baserat på mängden loggade data och lagringstiden, vilket påverkar bandbredd och lagringskostnader.
Ta bort oanvända resurser. Identifiera och ta bort instanser av oanvänd lastbalanserare. Analysera loggar för att utvärdera användningen. Ta bort instanser av lastbalanserare som inte är associerade med virtuella serverdelsdatorer. Granska trafikloggarna för att hitta underanvända resurser.
Optimera flödeskostnader. Använd effektiva protokoll och datakomprimering för att minska belastningen på trafikflödet och minimera kostnaderna.
För att optimera kostnaderna kan du minska antalet regler. I stället för att ha regler som använder enskilda IP-adresser och portar för varje slutpunkt definierar du en regel för ett portintervall i klientdelen som ansluter till en serverdelspool.
Implementera optimering i backend-flödena. Till exempel kan flera databasfrågor som en lastbalanserare fångar upp öka kostnaderna per fråga. Om du vill förhindra den här extra kostnaden bör du överväga att implementera en lagrad procedur för att konsolidera frågesekvensen.
Utvärdera kostnaden för åtgärder. Överväg resurskostnader och driftskostnader, till exempel underhåll, skalning och efterlevnad. Regler för lastbalanserare kan avsevärt påverka kostnaderna. Minska antalet regler för att optimera ekonomiska kostnader och hanteringskostnader.
Rekommendationer
Rekommendation | Fördel |
---|---|
Normalt beräknar du kostnader med hjälp av priskalkylatorn för Azure. | Du kan konvertera förväntad trafikanvändning till kostnadsuppskattningar, vilket gör det enklare att planera och budgetera. |
Utvärdera antalet regler och minska dem om möjligt. Utvärdera om du kan använda en regel för att sammanfatta ett portintervall i stället för att definiera flera regler för enskilda IP-adresser. Du kan till exempel använda inkommande NAT-regler för att mappa IP-adresser och portar till en serverdelspool i stället för till enskilda virtuella datorer. |
Konsoliderade regler optimerar kostnader och förenklar åtgärder. När du skalar upp eller ned kan du lägga till eller ta bort IP-adresser från serverdelspoolen utan att ändra några regler. |
Operational Excellence
Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.
Designprinciperna för Operational Excellence tillhandahåller en övergripande designstrategi för att uppnå dessa mål för driftskraven för arbetsbelastningen.
Checklista för design
Påbörja din designstrategi baserat på checklistan för designgranskning för Operational Excellence för att definiera processer för observerbarhet, testning och distribution som rör Load Balancer.
Använd infrastruktur som kod. Distribuera och konfigurera Load Balancer tillsammans med andra nätverkskomponenter, till exempel virtuella nätverk, nätverkspeering, privata slutpunkter och NSG:er. Bekanta dig med resurstypen Microsoft.Network loadBalancers.
Använd lagerbaserad distribution för hub-and-spoke-arkitekturer. Distribuera hubben först eftersom den ändras mindre ofta än den arbetsbelastning som distribueras i ekernätverket. Distribuera lastbalanseraren med arbetsbördan. Om du återanvänder en enskild lastbalanserare över flera arbetsbelastningar bör du överväga att placera den i hubben.
Implementera ett omfattande system för nätverksövervakning. Implementera diagnostikfunktioner, till exempel flerdimensionella mått för att få insikter och aviseringar i realtid, resursloggar baserade på hälsohändelseschemat och Azure Monitor Insights-instrumentpanelen för en omfattande övervakning av lastbalanserare.
Rekommendationer
Rekommendation | Fördel |
---|---|
Använd flerdimensionella mått. Om du vill minimera överdrivna aviseringar anger du aggregeringstypen till Average och använder ett datafönster på fem minuter som har ett tröskelvärde på 95%. Mer information finns i Konfigurera aviseringar för flerdimensionella mått. Granska exemplen för inkommande och utgående tillgänglighet. |
Omfattande realtidsinsikter och aviseringskonfiguration ger förbättrad identifiering av problem och aktiverar snabba svar. |
Samla in resursloggar. Lastbalanserarposter beror på hälsohändelsens schema. | Loggar innehåller detaljerade poster över händelser så att du snabbt kan identifiera och lösa problem. |
Använd den inbyggda Azure Monitor Insights-instrumentpanelen för Load Balancer. | Visualisering underlättar välinformerade designval och hjälper dig att snabbt identifiera, diagnostisera och åtgärda problem. |
Under underhållsåtgärder anger du administratörstillståndet till Down för att ta bort en serverdelsinstans från rotationen utan att störa befintliga anslutningar. Den här konfigurationen säkerställer att inga nya anslutningar vidarebefordras till serverdelsinstansen, medan befintliga anslutningar avslutas korrekt. |
Den här konfigurationen för administratörsläge minskar omkostnaderna och komplexiteten när du tar ut en VM från belastningsutjämningsrotationen för regelbundet underhåll eller patchning. Som ett alternativt alternativ för att ta bort en serverdelsinstans från rotationen kan du använda NSG:er för att blockera trafik från Load Balancer-hälsoavsökningen eller klientens IP-adresser och portar. Det här alternativet ökar komplexiteten. |
Prestandaeffektivitet
Prestandaeffektivitet handlar om upprätthålla användarupplevelsen även när belastningen ökar genom att hantera kapaciteten. Strategin omfattar skalning av resurser, identifiering och optimering av potentiella flaskhalsar och optimering för högsta prestanda.
Designprinciperna för prestandaeffektivitet tillhandahåller en designstrategi på hög nivå för att uppnå dessa kapacitetsmål för den förväntade användningen.
Checklista för design
Börja din designstrategi utifrån checklistan för designgranskning för prestandaoptimering för att definiera en baslinje baserad på viktiga prestandaindikatorer för Load Balancer.
Fastställa nätverkets prestandamål. Lastbalanseraren har ingen gräns för den trafik som den kan stödja. Men när du definierar prestandamål och planerar för kapacitet bör du testa nätverksprestanda.
Använd stresstestning för att förstå arbetsbelastningens bandbreddskrav. Inkludera lastbalanseraren i dessa tester. Om en enda VM-skalningsuppsättning med flera virtuella datorer inte räcker kan du lägga till en annan skalningsuppsättning med hjälp av samma lastbalanserare. Om de virtuella datorerna inte tar emot begäranden tillräckligt snabbt kan du behöva justera nätverkskomponenterna, till exempel lägga till fler lastbalanserare. Men i stället för att ändra lastbalanseraren bör du överväga att göra designändringar och optimera arbetsbelastningen för att hantera belastningen bättre.
Förstå gränserna när du utformar din skalningsstrategi. För att uppfylla prestandakraven och skala din arbetsbelastning lägger du till eller tar bort virtuella datorer från serverdelspoolen. En enskild serverdelspool i Standard Load Balancer kan hantera upp till 5 000 virtuella datorer.
Load Balancer tillämpar inte dataflödesgränser. Men dataflödesgränser för virtuella datorer och virtuella nätverk gäller fortfarande. Mer information finns i VM-nätverksbandbredd.
Hantera begäranden snabbt. Standard Load Balancer har en nivå som dirigerar trafik till serverdelsslutpunkter baserat på deras geografiska närhet till användaren.
Load Balancer stöder även belastningsdistribution baserat på sessionspersistence. När funktionen aktiveras dirigeras begäranden från samma klient konsekvent till samma back-endserver som hanterade deras tidigare sessioner.
Samla in data för att analysera prestanda. Load Balancer flerdimensionella mått kan analysera tjänstens prestanda. Konfigurera aviseringar för att identifiera prestandaändringar. Använd verktyg som Azure Monitor Insights-instrumentpanelen för att visualisera status för Load Balancer. Se till att resurshälsofunktionen övervakar hälsostatusen och håll dig informerad om prestandaproblem och avbrott.
Optimera nätverkstrafik. Bearbeta inte samma data flera gånger i separata steg. Utför i stället alla nödvändiga beräkningar i batch och lagra sedan data. Den här metoden minskar svarstiden och minimerar nätverkstrafiken, vilket förbättrar övergripande prestanda.
Rekommendationer
Rekommendation | Fördel |
---|---|
Välj den globala nivån i Standard Load Balancer om du har globala användare. | Den här nivåns geo-närhetsdistributionsläge hanterar användarbegäranden från slutpunkter i närmaste region, vilket förbättrar prestandan. |
Utvärdera om du ska aktivera sessionspersistens när du vill att begäranden från samma användare ska dirigeras till samma server. Ur ett tillförlitlighetsperspektiv rekommenderar vi inte den här metoden. Om du använder det här alternativet bör programmet återställas korrekt utan att störa användarsessioner. Det finns också en belastningsutjämningsavvägning eftersom den begränsar flexibiliteten att distribuera trafik över flera serverdelar jämnt. |
Sessionspersistence kan optimera prestanda och upprätthålla kontinuitet för användarsessioner, särskilt när program förlitar sig på att underhålla tillståndsinformation lokalt. Men det finns kompromisser. |
Under skalningsprocessen skickar du en probingsignal tills programmet är fullständigt initierat och redo att hantera förfrågningar. Under inskalning skickar du en avsökningssignal för nya anslutningar på slutpunkten som skalas tillbaka. Väntande begäranden om befintliga anslutningar fortsätter att bearbetas. |
Hälsokontroller kan hjälpa till att optimera skalningsprocesser. De hjälper till att säkerställa att programmet kan hantera den inkommande belastningen under utskalningen. Före en inskalningsåtgärd möjliggör de en smidig minskning av instanser utan att störa pågående verksamheter. |
Azure-principer
Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör Load Balancer och dess beroenden. Några av föregående rekommendationer kan granskas via Azure Policy. Du kan till exempel kontrollera om:
- Lastbalanserare, exklusive Grundläggande SKU-lastbalanserare, har resiliensfunktioner aktiverade för offentliga IP-adresser i framsidan.
- Resursloggar är aktiverade för att spåra aktiviteter och händelser som inträffar på dina resurser och ge synlighet och insikter om ändringar.
Omfattande styrning finns i de inbyggda definitionerna Azure Policy för Load Balancer och andra principer som kan påverka säkerheten för trafikdistributionen.
Azure Advisor-rekommendationer
Azure Advisor är en anpassad molnkonsult som hjälper dig att följa metodtipsen för att optimera dina Azure-distributioner. Advisor-rekommendationerna är anpassade till Well-Architected Framework-pelare.
Mer information finns i rekommendationerna i Azure Advisor.