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.
Mikrotjänstarkitekturer paketar och distribuerar vanligtvis varje mikrotjänstinstans i en enda container. Många instanser av mikrotjänsterna kan köras, var och en i en separat container. Containrar är lätta och kortlivade, vilket gör dem enkla att skapa och förstöra, men svåra att samordna och kommunicera mellan.
I den här artikeln beskrivs utmaningarna med att köra en containerbaserad mikrotjänstarkitektur i produktionsskala och hur containerorkestrering kan hjälpa. I artikeln beskrivs flera alternativ för Azure-containerorkestrering.
Arkitektur för containerbaserade mikrotjänster
I det här enkla AKS-klustret (Containerized Azure Kubernetes Service):
- En Microservice A-instans körs i Nod 1, en annan instans i Nod 2 och en tredje instans i Nod 3.
- En instans av Microservice B körs i Nod 1 och en annan instans i Nod 3.
- Containerbaserade omvända proxyservrar körs i noderna 1 och 2 för att distribuera trafik.
För att hantera klustret måste ett DevOps-team:
- Kör flera containerinstanser i varje nod.
- Belastningsutjämning av trafik mellan instanserna.
- Hantera kommunikation mellan beroende instanser i separata noder.
- Behåll önskat AKS-klustertillstånd.
Med containerorkestrering kan DevOps-teamet representera klustrets önskade tillstånd som en konfiguration. En containerorkestreringsmotor framtvingar önskad konfiguration och automatiserar alla hanteringsuppgifter.
Överväg att containeranpassa ett enkelt webbprogram med tre nivåer:
- En container är värd för klientdelskomponenten.
- En annan container är värd för mellannivån eller REST API-lagret.
- Mellannivåskiktet kommunicerar med en globalt distribuerad databas.
Det kanske inte är för svårt att köra dessa containrar på en enda utvecklingsdator. Det blir dock snabbt svårt att köra programmet i hög tillgänglighetsläge i stor skala i ett produktionskluster. Containerorkestrering är avgörande för stora och dynamiska produktionsmiljöer.
Fördelar med containerorkestrering
I följande exempel visas hur containerorkestrering kan hjälpa till att hantera klusterdistribution, nätverk och skalning.
Containerorkestreraren:
Skalar automatiskt antalet mikrotjänstinstanser baserat på trafik eller resursanvändning. I exemplet lägger orchestrator automatiskt till en annan Microservice A-instans som svar på ökad trafik.
Hanterar containrarna för att återspegla det konfigurerade önskade tillståndet. I exemplet är Microservice B konfigurerat för att ha två instanser. En instans har blivit felaktig, så orkestratorn behåller önskat tillstånd genom att skapa en annan instans.
Omsluter containrarna för varje mikrotjänst i ett enkelt tjänstlager. Tjänstlagret:
- Sammanfattar komplexitet som IP-adress, port och antal instanser.
- Belastningen balanserar trafiken mellan mikrotjänstinstanser.
- Stöder enkel kommunikation mellan beroende mikrotjänstinstanser.
Containerorkestrerare ger också flexibilitet och trafikkontroll för att:
- Släpp nya versioner eller återställ till gamla versioner av mikrotjänster eller uppsättningar av mikrotjänster, utan driftstopp.
- Aktivera sida vid sida-testning av olika mikrotjänstversioner.
Välj en Azure-containerorkestrerare
Här följer några alternativ för att implementera containerorkestrering för mikrotjänster i Azure:
Azure Kubernetes Service (AKS) är en fullständigt hanterad Kubernetes containerorkestreringstjänst i Azure som förenklar distribution och hantering av containerbaserade program. AKS tillhandahåller elastisk etablering, snabb distribution från slutpunkt till slutpunkt samt avancerad identitets- och åtkomsthantering.
Azure Service Fabric är en containerorkestrerare för att distribuera och hantera mikrotjänster över ett kluster med datorer. Den lätta Service Fabric-körningen har stöd för att skapa tillståndslösa och tillståndskänsliga mikrotjänster.
En viktig Service Fabric-differentierare är dess robusta stöd för att skapa tillståndskänsliga tjänster. Du kan använda den inbyggda programmeringsmodellen för tillståndskänsliga tjänster eller köra containerbaserade tillståndskänsliga tjänster skrivna på valfritt språk eller kod.
Azure Container Instances (ACI) är det snabbaste och enklaste sättet att köra en container i Azure. Med ACI behöver du inte hantera virtuella datorer eller anpassa tjänster på högre nivå.
För enkla orkestreringsscenarier kan du använda Docker Compose för att definiera och köra ett program med flera containrar lokalt. Distribuera sedan Docker-containrarna som en ACI-containergrupp i en hanterad, serverlös Azure-miljö. För fullständiga scenarier för containerorkestrering kan ACI integrera med AKS för att skapa virtuella noder för AKS-orkestrering.
Azure Spring Apps är en företagsklar, fullständigt hanterad tjänst för Spring Boot-appar. Med Spring Apps kan du fokusera på att skapa och köra appar utan att behöva hantera infrastrukturen. Spring Apps levereras med inbyggd livscykel- och orkestreringshantering, enkel övervakning och fullständig integrering med Azure.
Azure Red Hat OpenShift (ARO) stöder distribution av fullständigt hanterade OpenShift kluster i Azure. Att köra Kubernetes-produktionscontainrar kräver integrering med ramverk och verktyg som avbildningsregister, lagringshantering, övervakning och DevOps. ARO utökar Kubernetes genom att kombinera dessa komponenter till en enda containerplattform som en tjänst (PaaS).
Bidragsgivare
Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.
Huvudförfattare:
- Veerash Ayyagari | Huvudprogramtekniker
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Microservices-arkitektur i Azure Kubernetes Service (AKS)
- AKS-mikrotjänstarkitekturen (Advanced Azure Kubernetes Service)
- CI/CD för AKS-appar med Azure Pipelines
- Använda API-gatewayer i mikrotjänster
- Referensarkitektur för Azure Spring Apps