I det här scenariot konsoliderar en organisation flera API:er internt med hjälp av Azure API Management som distribuerats i ett virtuellt nätverk.
Arkitektur
Ladda ned en Visio-fil med den här arkitekturen.
Föregående diagram beskriver en fullständig livscykel för interna API:er som förbrukas av externa användare.
Dataflöde
Dataflödena enligt följande:
- Utvecklare checkar in kod till en GitHub-lagringsplats som är ansluten till en CI/CD-pipelineagent som är installerad på en virtuell Azure-dator.
- Agenten push-överför bygget till API-programmet som finns på ILB-App Service-miljön.
- Azure API Management använder de föregående API:erna via HOST-huvuden som anges i API Management-principen.
- API Management använder App Service-miljön DNS-namn för alla API:er.
- Application Gateway exponerar API Management-utvecklaren och API-portalen.
- Azure Privat DNS används för att dirigera trafiken internt mellan App Service-miljön, API Management och Application Gateway.
- Externa användare använder den exponerade utvecklarportalen för att använda API:erna via den offentliga IP-adressen för Application Gateway.
Komponenter
- Med Azure Virtual Network kan Azure-resurser kommunicera säkert med varandra, internet och lokala nätverk.
- Med Azure Privat DNS kan domännamn lösas i ett virtuellt nätverk utan att du behöver lägga till en anpassad DNS-lösning.
- Azure API Management hjälper organisationer att publicera API:er till externa utvecklare, partner och interna utvecklare för att använda sina data och tjänster.
- Application Gateway är en lastbalanserare för webbtrafik som hjälper dig att hantera trafik till dina webbprogram.
- Intern lastbalanserare App Service-miljön är en Azure App Service-funktion som ger en helt isolerad och dedikerad miljö för säker körning av App Service-appar i hög skala.
- Azure DevOps är en tjänst för att hantera din utvecklingslivscykel och innehåller funktioner för planering och projekthantering, kodhantering, bygge och lansering.
- Application Insights är en utökningsbar tjänst för programprestandahantering (APM) för webbutvecklare på flera plattformar.
- Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera modeller.
Alternativ
- I ett Azure Lift and Shift-scenario som distribueras till ett virtuellt Azure-nätverk kan serverdelsservrar åtgärdas direkt via privata IP-adresser.
- Om du använder lokala resurser kan API Management-instansen nå tillbaka till den interna tjänsten privat via en Azure VPN Gateway och EN IPSec-anslutning (Internet Protocol Security) eller ExpressRoute som gör ett azure-hybridscenario och ett lokalt hybridscenario.
- Befintliga DNS-leverantörer eller DNS-leverantörer med öppen källkod kan användas i stället för den Azure-baserade DNS-tjänsten.
- Interna API:er som distribueras utanför Azure kan fortfarande dra nytta av att exponera API:erna via API Management Service.
Information om scenario
I det här scenariot är en organisation värd för flera API:er med hjälp av Azure Application Service Environment (ILB App Service-miljön) och de vill konsolidera dessa API:er internt med hjälp av Azure API Management (APIM) som distribueras i ett virtuellt nätverk. Den interna API Management-instansen kan också exponeras för externa användare för att möjliggöra användning av API:ernas fulla potential. Den här externa exponeringen kan uppnås med azure Application Gateway-vidarebefordringsbegäranden till den interna API Management-tjänsten, som i sin tur förbrukar DE API:er som distribueras i App Service-miljön.
- Webb-API:erna hanteras via skyddat HTTPS-protokoll och kommer att använda ett TLS-certifikat.
- Programgatewayen konfigureras också via port 443 för säkra och tillförlitliga utgående anrop.
- API Management-tjänsten är konfigurerad för att använda anpassade domäner med hjälp av TLS-certifikat.
- Granska den föreslagna nätverkskonfigurationen för App Service-miljön
- Det måste finnas ett uttryckligt omnämnande om port 3443 som gör det möjligt för API Management att hantera via Azure Portal eller PowerShell.
- Använd principer i APIM för att lägga till ett VÄRDhuvud för DET API som finns på App Service-miljön. Detta säkerställer att App Service-miljön lastbalanserare vidarebefordrar begäran korrekt.
- API Management accepterar App Service-miljön DNS-post för alla appar som finns under App Service-miljön. Lägg till en APIM-princip för att uttryckligen ange HOST-huvudet så att App Service-miljön lastbalanserare kan skilja mellan appar under App Service-miljön.
- Överväg att integrera med Azure Application Insights, som även visar mått via Azure Monitor för övervakning.
- Om du använder CI/CD-pipelines för att distribuera interna API:er kan du skapa en egen värdbaserad agent på en virtuell dator i det virtuella nätverket.
Potentiella användningsfall
- Synkronisera kundadressinformation internt när kunden har gjort en ändring.
- Locka utvecklare till din plattform genom att exponera unika datatillgångar.
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Tillförlitlighet
Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över grundpelare för tillförlitlighet."
Tillgänglighet
Du kan distribuera Azure API Management-tjänsten som en distribution med flera regioner för högre tillgänglighet och även för att minska svarstiderna. Den här funktionen är endast tillgänglig i Premium-läge. API Management-tjänsten i det här specifika scenariot använder API:er från App Service-miljön. Du kan också använda APIM för API:er som finns i den interna lokala infrastrukturen.
App Service-miljön kan använda Traffic Manager-profiler för att distribuera trafiken som finns på App Service-miljön för högre skalning och tillgänglighet.
Motståndskraft
Även om det här exempelscenariot handlar mer om konfiguration bör API:erna som finns på App Service-miljön vara tillräckligt motståndskraftiga för att hantera fel i begäranden, som så småningom hanteras av API Management-tjänsten och Application Gateway. Överväg mönster för återförsök och kretsbrytare i API-designen. Allmän vägledning om hur du utformar motståndskraftiga lösningar finns i Designa elastiska program för Azure.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.
Eftersom det föregående exempelscenariot finns helt i ett internt nätverk distribueras API Management och App Service-miljön redan i en skyddad infrastruktur (Azure Virtual Network). Du kan integrera Application Gateways med Microsoft Defender för molnet för att tillhandahålla ett smidigt sätt att förhindra, identifiera och reagera på hot mot miljön. Allmän vägledning om hur du utformar säkra lösningar finns i Azure Security-dokumentationen.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.
API Management erbjuds på fyra nivåer: utvecklare, basic, standard och premium. Du hittar detaljerad vägledning om skillnaden på dessa nivåer i prisvägledningen för Azure API Management här.
Kunder kan skala API Management genom att lägga till eller ta bort enheter. Varje enhets kapacitet beror på dess nivå.
Kommentar
Du kan använda utvecklarnivån för utvärdering av API Management-funktionerna. Du bör inte använda utvecklarnivån för produktion.
Om du vill visa beräknade kostnader och anpassa efter dina distributionsbehov kan du ändra antalet skalningsenheter och App Service-instanser i Priskalkylatorn för Azure.
På samma sätt kan du hitta prisvägledningen för App Service-miljön s.
Du kan konfigurera priser för Application Gateway beroende på vilken nivå och vilka resurser som krävs.
Prestandaeffektivitet
Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.
Skalbarhet
Du kan skala ut API Management-instanser beroende på ett antal faktorer, till exempel antal och frekvens för samtidiga anslutningar, typ och antal konfigurerade principer, storlek på begäran och svar samt svarstiderna på API:erna. Skalning av instansalternativ är tillgängliga på nivåerna Basic, Standard och Premium, men är bundna av en övre skalningsgräns på nivåerna Basic och Standard. Instanserna kallas enheter och kan skalas upp till högst två enheter på Basic-nivån, fyra enheter på standardnivån och valfritt antal enheter på Premium-nivån. Alternativ för automatisk skalning är också tillgängliga för att aktivera utskalning baserat på regler.
App Service-miljön är utformade för skalning med gränser baserat på prisnivån. Du kan konfigurera de appar som finns under App Service-miljön för att skala ut (antal instanser) eller skala upp (instansstorlek) beroende på programmets krav.
Automatisk skalning av Azure Application Gateway är tillgänglig som en del av zonredundant SKU i alla globala Azure-regioner. Se funktionen för offentlig förhandsversion om automatisk skalning av appgateway.
Distribuera det här scenariot
Förhandskrav och antaganden
- Du måste köpa ett anpassat domännamn.
- Du behöver ett TLS-certifikat (vi använde ett jokerteckencertifikat från Azure Certificates Service) för att använda ett för alla våra anpassade domäner. Du kan också skaffa ett självsignerat certifikat för Dev Test-scenarier.
- Den här specifika distributionen använder domännamnet contoso.org och ett jokertecken-TLS-certifikat för domänen.
- Distributionen använder resursnamn och adressutrymmen som nämns i avsnittet Distribution. Du kan konfigurera resursnamn och adressutrymmen.
Distribuera och sätta ihop delarna
Du måste ytterligare konfigurera de komponenter som distribueras med hjälp av föregående Resource Manager-mall på följande sätt:
Virtuellt nätverk med följande konfigurationer:
- Namn:
ase-internal-vnet
- Adressutrymme för virtuellt nätverk: 10.0.0.0/16
- Fyra undernät
backendSubnet
för DNS-tjänsten: 10.0.0.0/24apimsubnet
för intern API Management Service: 10.0.1.0/28asesubnet
för ILB-App Service-miljön: 10.0.2.0/24- VMSubnet for Test VMs and Internal DevOps Hosted Agent VM: 10.0.3.0/24
- Namn:
Privat DNS tjänst (offentlig förhandsversion) eftersom det virtuella nätverket måste vara tomt för att lägga till en DNS-tjänst.
App Service-miljön med alternativet Intern lastbalanserare (ILB):
aseinternal
(DNS:aseinternal.contoso.org
). När distributionen är klar laddar du upp wild card-certifikatet för ILBApp Service-plan med App Service-miljön som plats
En API-app (App Service för enkelhetens skull) –
srasprest
(URL:https://srasprest.contoso.org
) – ASP.NET MVC-baserat webb-API (Model-View-Controller). Efter distributionen konfigurerar du:- Webbapp för att använda TLS-certifikatet
- Application Insights till de föregående apparna:
api-insights
- Skapa en Azure Cosmos DB-tjänst för webb-API:er som finns internt i det virtuella nätverket:
noderestapidb
- Skapa DNS-poster i Azure Privat DNS-zonen som skapats
- Du kan använda Azure Pipelines för att konfigurera agenterna på virtuella datorer för att distribuera koden för webbappen i det interna nätverket
- Om du vill testa API-appen internt skapar du en virtuell testdator i det virtuella nätverkets undernät
Skapa API Management-tjänsten:
apim-internal
Konfigurera tjänsten för att ansluta till ett internt virtuellt nätverk i undernätet:
apimsubnet
. När distributionen är klar utför du följande ytterligare steg:- Konfigurera anpassade domäner för APIM-tjänster med hjälp av TLS
- API-portalen (
api.contoso.org
) - Dev-portalen (
portal.contoso.org
) - I avsnittet API:er konfigurerar du App Service-miljön Apps med hjälp av det App Service-miljön DNS-namn som lagts till Princip för VÄRDhuvud för webbappen
- Använd den tidigare skapade virtuella testdatorn för att testa API Management-tjänsten internt i det virtuella nätverket
- API-portalen (
Kommentar
Det går inte att testa APIM-API:erna från Azure Portal eftersom
api.contoso.org
det inte går att lösa offentligt.*- Konfigurera anpassade domäner för APIM-tjänster med hjälp av TLS
Konfigurera programgatewayen för åtkomst till API-tjänsten:
apim-gateway
på port 80. Lägg till TLS-certifikat till programgatewayen och motsvarande hälsoavsökningar och HTTP-inställningar. Konfigurera även regler och lyssnare för att använda TLS-certifikatet.
När föregående steg har slutförts konfigurerar du DNS-posterna i webbregistratorns CNAME-poster api.contoso.org
för och portal.contoso.org
med det offentliga DNS-namnet för Application Gateway: ase-appgtwy.westus.cloudapp.azure.com
. Kontrollera att du kan nå Dev-portalen från offentlig och att du kan testa APIM-tjänst-API:erna med hjälp av Azure Portal.
Kommentar
Det är inte bra att använda samma URL för interna och externa slutpunkter för APIM-tjänsterna.
Deltagare
Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.
Huvudförfattare:
- Srikant Sarwa | Senior kundtekniker
Övriga medarbetare:
- Shawn Kupfer | Teknisk författare
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Självstudie: Importera och publicera ditt första API
- Självstudier: Skapa och publicera en produkt
- Självstudier: Publicera flera versioner av ditt API