Dela via


Serverdelar i API Management

GÄLLER FÖR: Alla API Management-nivåer

En serverdel (eller API-serverdel) i API Management är en HTTP-tjänst som implementerar klientdels-API:et och dess åtgärder.

När du importerar vissa API:er konfigurerar API Management API-serverdelen automatiskt. API Management konfigurerar till exempel serverdelswebbtjänsten vid import:

API Management stöder även användning av andra Azure-resurser som en API-serverdel, till exempel:

Fördelar med back-end

API Management stöder serverdelsentiteter så att du kan hantera serverdelstjänsterna i ditt API. En serverdelsentitet kapslar in information om serverdelstjänsten, vilket främjar återanvändning mellan API:er och förbättrad styrning.

Använd bakändar för en eller flera av följande:

  • Auktorisera autentiseringsuppgifterna för begäranden till serverdelstjänsten
  • Dra nytta av API Management-funktioner för att underhålla hemligheter i Azure Key Vault om namngivna värden har konfigurerats för autentisering av huvud- eller frågeparameter.
  • Definiera regler för kretsbrytare för att skydda serverdelen från för många begäranden
  • Dirigera eller balansera belastningen av begäranden till flera bakändar

Konfigurera och hantera serverdelsentiteter i Azure Portal eller med hjälp av Azure-API:er eller verktyg.

Skapa ett backend

Du kan skapa en serverdel i Azure-portalen eller med hjälp av Azure-API:er eller verktyg.

Så här skapar du ett backend i portalen:

  1. Logga in på portalen och gå till din API Management-instans.
  2. I den vänstra menyn väljer du API:er>Serverdelar>+ Skapa ny serverdel.
  3. Backend-sidan, gör följande:
    1. Ange ett namn för serverdelen och valfri beskrivning.
    2. Välj en serverdelsvärdtyp, till exempel Azure-resurs om du använder en Azure-resurs som en funktionsapp eller en logikapp, anpassad URL för en anpassad tjänst, eller ett Service Fabric-kluster.
    3. I Körnings-URL anger du URL:en för den serverdelstjänst som API-begäranden vidarebefordras till.
    4. Under Avancerat kan du också inaktivera validering av certifikatkedja eller certifikatnamn för serverdelen.
    5. Under Lägg till den här serverdelstjänsten i en serverdelspool kan du välja eller skapa en belastningsutjämningspool för serverdelen.
    6. Under Regel för kretsbrytare kan du också konfigurera en kretsbrytare för serverdelen.
    7. Under Auktoriseringsuppgifter kan du konfigurera åtkomstuppgifter för att tillåta åtkomst till serverdelen. Alternativen omfattar en begäranderubrik, frågeparameter, klientcertifikat eller systemtilldelad eller användartilldelad hanterad identitet som konfigurerats i API Management-instansen.
    8. Välj Skapa.

När du har skapat en serverdel kan du uppdatera serverdelsinställningarna när som helst. Du kan till exempel lägga till en regel för överbelastningsskydd, ändra körnings-URL:en eller lägga till autentiseringsuppgifter.

Konfigurera hanterad identitet för auktoriseringsuppgifter

Du kan använda en systemtilldelad eller användartilldelad hanterad identitet som konfigurerats i API Management-instansen för att auktorisera åtkomst till serverdelstjänsten. Gör följande för att konfigurera en hanterad identitet för auktoriseringsuppgifter:

  1. I avsnittet Autentiseringsuppgifter för auktorisering i serverdelskonfigurationen väljer du fliken Hanterad identitet och väljer Aktivera.

  2. I Klientidentitet väljer du antingen Systemtilldelad identitet eller en användartilldelad identitet som har konfigurerats i din instans.

  3. I Resurs-ID anger du en Azure-måltjänst eller program-ID för ditt eget Microsoft Entra-program som representerar serverdelen. Exempel: https://cognitiveservices.azure.com för Azure OpenAI-tjänsten.

    För fler exempel, se policyreferensen authentication-managed-identity.

  4. Välj Skapa.

Kommentar

Tilldela även den hanterade identiteten lämpliga behörigheter eller en RBAC-roll för åtkomst till serverdelstjänsten. Om serverdelen till exempel är en Azure OpenAI-tjänst kan du tilldela den hanterade identiteten rollen Cognitive Services User.

Referensserverdel med set-backend-service-princip

När du har skapat en serverdel kan du referera till serverdelsidentifieraren (namn) i dina API:er. set-backend-service Använd principen för att dirigera en inkommande API-begäran till serverdelen. Om du redan har konfigurerat en serverdelswebbtjänst för ett API kan du använda set-backend-service principen för att omdirigera begäran till en serverdelsentitet i stället. Till exempel:

<policies>
    <inbound>
        <base />
        <set-backend-service backend-id="myBackend" />
    </inbound>
    [...]
<policies/>

Kommentar

Du kan också använda base-url. Formatet är https://backend.com/apivanligtvis . Undvik att lägga till ett snedstreck i slutet för att förhindra felkonfigurationer. Normalt ska base-url och HTTP(S)-slutpunktsvärdet i serverdelen matcha för att möjliggöra sömlös integrering mellan klientdelen och serverdelen. Observera att API Management-instanser lägger till serverdelstjänstens namn i base-url.

Du kan använda villkorsstyrd logik med set-backend-service principen för att ändra den effektiva serverdelen baserat på plats, gateway som anropades eller andra uttryck.

Här är till exempel en princip för att dirigera trafik till en annan serverdel baserat på gatewayen som anropades:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Deployment.Gateway.Id == "factory-gateway")">
                <set-backend-service backend-id="backend-on-prem" />
            </when>
            <when condition="@(context.Deployment.Gateway.IsManaged == false)">
                <set-backend-service backend-id="self-hosted-backend" />
            </when>
            <otherwise />
        </choose>
    </inbound>
    [...]
<policies/>

Kretsbrytaren

API Management exponerar en kretsbrytaregenskap i serverdelsresursen för att skydda en serverdelstjänst från att överbelastas av för många begäranden.

  • Egenskapen kretsbrytare definierar regler för att snubbla kretsbrytaren, till exempel antalet eller procentandelen felförhållanden under ett definierat tidsintervall och ett intervall med statuskoder som indikerar fel.
  • När kretsbrytaren körs slutar API Management att skicka begäranden till serverdelstjänsten under en definierad tid och returnerar ett svar på 503 Tjänsten är inte tillgänglig för klienten.
  • Efter den konfigurerade resans varaktighet återställs kretsen och trafiken återupptas till serverdelen.

Brytaren för det bakomliggande systemet är en implementering av kretsbrytarmönstret så att systemet kan återhämta sig från överbelastningssituationer. Den utökar allmänna principer för hastighetsbegränsning och samtidighetsbegränsning som du kan implementera för att skydda API Management-gatewayen och dina serverdelstjänster.

Kommentar

  • För närvarande stöds inte kretsbrytaren i förbrukningsnivån för API Management.
  • På grund av den distribuerade karaktären hos API Management-arkitekturen är regler för kretsbrytare ungefärliga. Olika instanser av gatewayen synkroniseras inte och tillämpar regler för kretsbrytare baserat på information om samma instans.
  • För närvarande kan endast en regel konfigureras för en backend-kretsbrytare.

Exempel

Använd Azure-portalen, API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en kretsbrytare i en serverdel. I följande exempel utlöses kretsbrytaren i myBackend i API Management-instansen myAPIM när det finns tre eller fler 5xx statuskoder som anger serverfel inom en timme.

Kretsbrytaren i det här exemplet återställs efter 1 timme. Om ett Retry-After huvud finns i svaret accepterar kretsbrytaren värdet och väntar på den angivna tiden innan begäranden skickas till serverdelen igen.

  1. I Azure-portalen går du till din API Management-instans.
  2. I den vänstra menyn väljer du API:er>Backend> din backend.
  3. På serverdelssidan väljer du Inställningar>Inställningar Kretsbrytarinställningar>Lägg till ny.
  4. På sidan Skapa ny kretsbrytare konfigurerar du regeln:
    • Regelnamn: Ange ett namn för regeln, till exempel myBackend.
    • Antal fel: Ange 3.
    • Felintervall: Låt standardvärdet vara 1 timme.
    • Kodintervall för felstatus: Välj 500–599.
    • Resans varaktighet: Låt standardvärdet vara 1 timme.
    • Kontrollera 'Retry-After'-rubriken i HTTP-svar: Välj True (Accept).

Belastningsutjämningspool

API Management stöder serverdelspooler när du vill implementera flera serverdelar för ett API och belastningsutjämningsbegäranden över dessa serverdelar. En pool är en samling backends som behandlas som en enda entitet för belastningsutjämning.

Använd en serverdelspool för scenarier som följande:

  • Sprid belastningen till flera serverdelar, som kan ha enskilda serverdelsbrytare.
  • Flytta belastningen från en uppsättning serverdelar till en annan för uppgradering (blågrön distribution).

Kommentar

  • Du kan inkludera upp till 30 backends i en pool.
  • På grund av API Management-arkitekturens distribuerade karaktär är belastningsutjämningen för serverdelen ungefärlig. Olika instanser av gatewayen synkroniseras inte och belastningsutjämning baseras på information om samma instans.

Alternativ för belastningsutjämning

API Management stöder följande alternativ för belastningsutjämning för serverdelspooler:

Alternativ för belastningsutjämning Beskrivning
Resursallokering Begäranden distribueras jämnt över serverdelarna i poolen som standard.
Viktad Vikter tilldelas till serverdelarna i poolen och begäranden distribueras baserat på den relativa vikten för varje serverdel. Användbart för scenarier som blågröna distributioner.
Prioritetsbaserad Serverdelar är ordnade i prioritetsgrupper. Begäranden skickas först till grupper med högre prioritet. inom en grupp fördelas begäranden jämnt eller enligt tilldelade vikter.

Kommentar

Serverdelar i grupper med lägre prioritet används endast när alla serverdelar i grupper med högre prioritet inte är tillgängliga eftersom regler för kretsbrytare har utlösts.

Medvetenhet om session

Med något av föregående alternativ för belastningsutjämning kan du aktivera sessionsmedvetenhet (sessionstillhörighet) för att säkerställa att alla begäranden från en specifik användare under en session dirigeras till samma serverdel i poolen. API Management anger en sessions-ID-cookie för att upprätthålla sessionstillståndet. Det här alternativet är användbart, till exempel i scenarier med serverdelar som AI-chattassistenter eller andra konversationsagenter för att dirigera begäranden från samma session till samma slutpunkt.

Kommentar

Sessionsmedvetenhet i belastningsutjämningspooler släpps först till AI Gateway Earlyupdate group.

Hantera cookies för sessionsmedvetenhet

När du använder sessionsmedvetenhet måste klienten hantera cookies på rätt sätt. Klienten måste lagra Set-Cookie huvudvärdet och skicka det med efterföljande begäranden för att upprätthålla sessionstillståndet.

Du kan använda API Management-principer för att ange cookies för sessionsmedvetenhet. För assistent-API:et (en funktion i Azure OpenAI i Azure AI Foundry Models) måste klienten till exempel behålla sessions-ID:t, extrahera tråd-ID:t från brödtexten och behålla paret och skicka rätt cookie för varje anrop. Dessutom måste klienten veta när en cookie ska skickas eller när en cookierubrik inte ska skickas. Dessa krav kan hanteras på lämpligt sätt genom att definiera följande exempelprinciper:

<policies>
  <inbound>
    <base />
    <set-backend-service backend-id="APIMBackend" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
    <set-variable name="gwSetCookie" value="@{
      var payload = context.Response.Body.As<JObject>();
      var threadId = payload["id"];
      var gwSetCookieHeaderValue = context.Request.Headers.GetValueOrDefault("SetCookie", string.Empty);
      if(!string.IsNullOrEmpty(gwSetCookieHeaderValue))
      {
        gwSetCookieHeaderValue = gwSetCookieHeaderValue + $";Path=/threads/{threadId};";
      }
      return gwSetCookieHeaderValue;
    }" />
    <set-header name="Set-Cookie" exists-action="override">
      <value>Cookie=gwSetCookieHeaderValue</value>
    </set-header>
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

Exempel

Använd portalen, API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en serverdelspool. I följande exempel konfigureras serverdelen myBackendPool i API Management-instansen myAPIM med en serverdelspool. Exempel på serverdelar i poolen heter backend-1 och backend-2. Båda serverdelarna finns i gruppen med högst prioritet. inom gruppen har backend-1 en större vikt än backend-2.

  1. I Azure-portalen går du till din API Management-instans.
  2. I den vänstra menyn väljer du API:er>Backend> din backend.
  3. På sidan Serverdelar väljer du fliken Lastbalanserare .
  4. Välj + Skapa ny pool.
  5. Gör följande på sidan Skapa ny belastningsutjämningspool :
    • Namn: Ange ett namn för poolen, till exempel myBackendPool.
    • Beskrivning: Ange en beskrivning om du vill.
    • Lägg till serverdelar i poolen: Välj en eller flera serverdelar att lägga till i poolen.
    • Serverdelsvikt och prioritet: Välj Anpassa vikt och prioritet för att konfigurera vikten och prioriteten för varje serverdel i poolen. Om du till exempel har lagt till två serverdelar med namnet backend-1 och backend-2 anger du vikten för backend-1 till 3 och vikten för backend-2 till 1 och anger prioriteten för båda serverdelarna till 1.
    • Välj Skapa.

Begränsningar