Felsöka Azure Load Balancer

Slutförd

Azure Load Balancer körs i transportlagret i nätverksstacken. Load Balancer publicerar en enda offentlig IP-adress som alla klienter ansluter till. Load Balancer använder sedan de egna reglerna för dirigering och översättning av adresser till att skicka inkommande TCP-förfrågningar till en uppsättning utgående adresser. Normalt är varje utgående adress associerad med en viss virtuell dator (VM) som kör en instans av ditt program.

Load Balancer använder en hälsoavsökning för att fastställa tillgängligheten för varje virtuell dator i serverdelspoolen. Load Balancer skickar bara förfrågningar till virtuella datorer som är felfria.

I exempelscenariot har du fått aviseringar om att Load Balancer inte kan dirigera förfrågningar till de virtuella datorerna i serverdelspoolen. Du misstänker att problemen beror på några ändringar i nätverkskonfigurationen som gjordes nyligen. Du måste dock ta reda på hur nätverksändringarna påverkar driften av Load Balancer.

I slutet av den här lektionen kan du:

  • Beskriva en vanlig Load Balancer-konfiguration och vilka komponenter som dirigerar förfrågningar till virtuella datorer.
  • Förklara vanliga problem som kan göra att Load Balancer inte fördelar förfrågningar till de virtuella datorerna.

Hur fungerar Load Balancer?

Azure Load Balancer innehåller många komponenter:

  • En IP-adress till klientdelen
  • En serverdelspool med adresser till virtuella datorer
  • En eller flera hanteringsregler
  • En hälsoavsökning
  • En samling virtuella datorer, vanligtvis i ett virtuellt nätverk

Följande diagram visar hur de olika element som används av Load Balancer fungerar tillsammans.

Diagram that shows the components of Azure Load Balancer.

Klientdelens IP-adress och serverdelspoolen

Load Balancer ger en transparent genomgående anslutning från en klient till ett program som körs på en samling virtuella datorer. Load Balancer lagrar IP-adresserna till de här virtuella datorerna i någonting som kallas för en serverdelspool. Load Balancer exponerar sin egen IP-adress till klientdelen för klienterna. När en klient skickar en förfrågan till den här adressen väljer Load Balancer IP-adressen till en virtuell dator ur serverdelspoolen. Load Balancer dirigerar sedan förfrågan via den här IP-adressen i serverpoolen till den virtuella datorn.

Klienten märker själv aldrig Load Balancer. Klienten ser en IP-adress eller ett DNS-namn och skickar förfrågningar till det här målet. Processen fungerar likadant som om klienten skulle kommunicera direkt med den virtuella datorn. När förfrågan tas emot på den virtuella datorn bevaras den ursprungliga klientens adress.

Dessutom har Load Balancer ingen insyn i nyttolasten för meddelanden som skickas från klienten till den virtuella datorn. Load Balancer granskar eller manipulerar inte innehållet i några meddelanden. Meddelanden adresseras bara om så att de skickas till den valda virtuella datorn.

Load Balancer väljer IP-adressen för en virtuell dator från serverdelspoolen via en algoritm som är utformad för att fördela förfrågningarna jämnt. Load Balancer genererar en hash med hjälp av följande information:

  • Källklientens IP-adress och port
  • Målets IP-adress och port
  • Nätverksprotokoll

Det hashade värdet används som nyckel till en tabell som innehåller IP-adresserna i serverdelspoolen.

Skalbarhet

Du kan starta fler VM-instanser och lägga till deras IP-adresser i serverdelspoolen när som helst. Load Balancer tar med de här nya instanserna när användarförfrågningar distribueras.

Load Balancer kan exponera fler än en offentlig IP-adress för klientdelen och du kan ha flera serverdelspooler. I det här schemat kan du återanvända samma instans av Load Balancer för att hantera förfrågningar i olika system.

Dirigeringsregler

Du definierar regler för belastningsutjämningen som anger hur förfrågningar till olika IP-adresser i klientdelen ska mappas mot serverdelspoolen. En belastningsutjämningsregel anger också vilket protokoll matchningen ska göras mot och eventuellt källans (klientens) och målets portar. Inkommande förfrågningar som kommer till en IP-adress i klientdelen och inte matchar kraven på protokoll och port ignoreras av Load Balancer. En belastningsutjämningsregel kan också konfigurera sessionspersistens så att en viss klient sannolikt kommer att få sina begäranden dirigerade till samma virtuella dator så att program som körs på en virtuell dator drar nytta av cachelagring för att lagra sessionsspecifik information.

Hälsotillståndsavsökningar

Load Balancer måste avgöra om de virtuella datorerna i serverdelspoolen är tillgängliga för hantering av förfrågningar. Tillgänglighet bestäms genom att lägga till en hälsoavsökning. En hälsoavsökning skickar regelbundna ping-meddelanden till en port du anger för de virtuella datorerna i serverdelspoolen. Du tillhandahåller en tjänst på de virtuella datorer som svarar på dessa pingmeddelanden med ett HTTP 200-meddelande (OK).

När den virtuella datorn inte svarar efter ett angivet antal försök förutsätter Load Balancer att den inte är felfri och tar bort den från listan över virtuella datorer som kan acceptera användarbegäranden. Arbetsbelastningen fördelas sedan mellan de återstående felfria virtuella datorerna. Load Balancer fortsätter att pinga virtuella datorer som inte svarar. Om den virtuella datorn börjar svara läggs den tillbaka till i listan över felfria virtuella datorer och börjar ta emot användarbegäranden igen.

Om du inte ställer in någon hälsoavsökning vet inte Load Balancer om en virtuell dator är felfri eller inte. I stället förutsätts att alla virtuella datorer kan svara.

Virtuellt nätverk

De virtuella datorer som refereras av serverdelspoolen finns i ett Azure Virtual Network-undernät. Du skyddar de virtuella datorerna i det här nätverket genom att konfigurera en nätverkssäkerhetsgrupp (NSG). En nätverkssäkerhetsgrupp implementerar regler för inkommande och utgående trafik som kan begränsa trafiken i det virtuella nätverket till en grupp väldefinierade slutpunkter.

Till exempel tillåter de virtuella datorerna i serverdelspoolen i Load Balancer vanligtvis inkommande trafik via port 80 (HTTP) och port 443 (HTTPS) som kommer från platser utanför det virtuella nätverket. De virtuella datorer kan dock blockera trafik som kommer via andra portar.

Symptom och orsaker till fel i Load Balancer

Problem uppstår när Load Balancer förlorar anslutningen till en eller flera virtuella datorer i serverdelspoolen. Här är några exempel på vanliga symptom:

  • Det går inte att nå programmet.
  • Det går inte att nå de virtuella datorer som kör programmet.
  • Långa svarstider.
  • Tidsgränsen för användarförfrågningar uppnås.

Det kan finnas flera orsaker till dessa problem. De är oftast kopplade till problem med avsökningar och datasökvägar.

Problem med avsökningar

Avsökningsproblem uppstår när en eller flera virtuella datorer i serverdelspoolen inte kan svara på hälsoavsökningens förfrågningar. Sådana problem kan bland annat bero på följande:

  • En felaktigt konfigurerad avsökning, till exempel fel webbadress eller port.
  • En virtuell dator som inte svarar på avsökningen eftersom den begärda porten inte är öppen.

Problem med datavägar

Problem med datavägar uppstår när en Load Balancer-instans inte kan dirigera en klientförfrågan till programmet som körs på en virtuell dator i serverdelspoolen. Här är några möjliga orsaker:

  • En NSG-regel eller brandvägg blockerar de portar eller IP-adresser som används av programmet.
  • En virtuell dator har kopplats ned eller svarar inte. Den virtuella datorn kan vara avstängd eller felaktig, eller så finns det något säkerhetsproblem som ett utgånget certifikat på servern.
  • Programmet svarar inte. De virtuella datorerna kan vara överbelastade, programmet kan lyssna på fel port eller så kraschar programmet.

Testa dina kunskaper

1.

Vad händer om ingen hälsoavsökning är konfigurerad och det inträffar ett fel på en virtuell dator?

2.

Du stängde en port i en nätverkssäkerhetsgrupp som används av ett virtuellt nätverk som är värd för de virtuella datorerna i Load Balancer-poolen. Hur påverkar det här belastningsutjämningen?