Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- En OpenAPI-specifikation.
- ETT SOAP-API.
- Azure-resurser, till exempel ett Azure OpenAI-API, en HTTP-utlöst Azure-funktionsapp eller en logikapp.
API Management stöder även användning av andra Azure-resurser som en API-serverdel, till exempel:
- Ett Service Fabric-kluster.
- En anpassad tjänst.
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:
- Logga in på portalen och gå till din API Management-instans.
- I den vänstra menyn väljer du API:er>Serverdelar>+ Skapa ny serverdel.
- På Backend-sidan, gör följande:
- Ange ett namn för serverdelen och valfri beskrivning.
- 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.
- I Körnings-URL anger du URL:en för den serverdelstjänst som API-begäranden vidarebefordras till.
- Under Avancerat kan du också inaktivera validering av certifikatkedja eller certifikatnamn för serverdelen.
- Under Lägg till den här serverdelstjänsten i en serverdelspool kan du välja eller skapa en belastningsutjämningspool för serverdelen.
- Under Regel för kretsbrytare kan du också konfigurera en kretsbrytare för serverdelen.
- 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.
- 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:
I avsnittet Autentiseringsuppgifter för auktorisering i serverdelskonfigurationen väljer du fliken Hanterad identitet och väljer Aktivera.
I Klientidentitet väljer du antingen Systemtilldelad identitet eller en användartilldelad identitet som har konfigurerats i din instans.
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.
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/api
vanligtvis . 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.
- I Azure-portalen går du till din API Management-instans.
- I den vänstra menyn väljer du API:er>Backend> din backend.
- På serverdelssidan väljer du Inställningar>Inställningar Kretsbrytarinställningar>Lägg till ny.
- 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.
- I Azure-portalen går du till din API Management-instans.
- I den vänstra menyn väljer du API:er>Backend> din backend.
- På sidan Serverdelar väljer du fliken Lastbalanserare .
- Välj + Skapa ny pool.
- 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
- För developer - och Premium-nivåer kan en API Management-instans som distribueras i ett internt virtuellt nätverk utlösa HTTP 500-fel
BackendConnectionFailure
när gatewayens slutpunkts-URL och serverdels-URL är desamma. Om du stöter på den här begränsningen följer du anvisningarna i artikeln Om självlänkad API Management-begäran i internt virtuellt nätverksläge i Tech Community-bloggen. - För närvarande kan endast en regel konfigureras för en backend-kretsbrytare.
Relaterat innehåll
- Blogg: Använda Azure API Management-kretsbrytare och belastningsutjämning med Azure OpenAI Service
- Konfigurera en Service Fabric-serverdel med hjälp av Azure Portal.
- Snabbstart Skapa en serverdelspool i Azure API Management med Bicep för OpenAI-begäranden för belastningsutjämning
- Se Azure API Management som en Event Grid-källa för information om Event Grid-händelser som genereras av gatewayen när en kretsbrytare har utlösts eller återställts. Använd dessa händelser för att vidta åtgärder innan serverdelsproblem eskaleras.