Service Fabric och containrar

Introduktion

Azure Service Fabric är en distribuerad systemplattform som gör det enkelt att paketera, distribuera och hantera skalbara och tillförlitliga mikrotjänster och containrar.

Service Fabric är Microsofts containerorkestrerare för distribution av mikrotjänster över ett kluster med datorer. Service Fabric drar nytta av lärdomarna under sina år med att köra tjänster på Microsoft i massiv skala.

Mikrotjänster kan utvecklas på många sätt, t.ex. genom att använda programmeringsmodeller för Service Fabric, ASP.NET Core eller distribuera valfri kod. Om du bara vill distribuera och hantera containrar är Service Fabric också ett bra alternativ.

Som standard distribuerar och aktiverar Service Fabric dessa tjänster som processer. Processer ger den snabbaste aktiveringen och högsta densitetsanvändningen av resurserna i ett kluster. Service Fabric kan också distribuera tjänster i containeravbildningar. Du kan också blanda tjänster i processer och tjänster i containrar i samma program.

Om du vill hoppa in och prova containrar i Service Fabric kan du prova en snabbstart, självstudie eller ett exempel:

Snabbstart: Distribuera ett Linux-containerprogram till Service Fabric
Snabbstart: Distribuera ett Windows-containerprogram till Service Fabric
Använd en befintlig .NET-app i container
Exempel på container för Service Fabric

Vad är containrar?

Containrar löser problemet med att köra program på ett tillförlitligt sätt i olika datormiljöer genom att tillhandahålla en oföränderlig miljö som programmet kan köras i. Containrar omsluter ett program och alla dess beroenden, till exempel bibliotek och konfigurationsfiler, i en egen isolerad "ruta" som innehåller allt som behövs för att köra programvaran i containern. Oavsett var containern körs har programmet i den alltid allt som behövs för att köras, till exempel rätt versioner av dess beroende bibliotek, eventuella konfigurationsfiler och allt annat som behövs för att köras.

Containrar körs direkt ovanpå kerneln och har en isolerad vy över filsystemet och andra resurser. Ett program i en container har ingen kunskap om andra program eller processer utanför containern. Varje program och dess körnings-, beroenden och systembibliotek körs i en container med fullständig, privat åtkomst till containerns egen isolerade vy av operativsystemet. Förutom att göra det enkelt att tillhandahålla alla programberoenden som krävs för att köras i olika datormiljöer, är säkerhet och resursisolering viktiga fördelar med att använda containrar med Service Fabric – som annars kör tjänster i en process.

Jämfört med virtuella datorer har containrar följande fördelar:

  • Liten: Containrar använder ett enda lagringsutrymme och lagerversioner och uppdateringar för att öka effektiviteten.
  • Snabb: Containrar behöver inte starta ett helt operativsystem, så de kan starta mycket snabbare – vanligtvis på några sekunder.
  • Portabilitet: En containerbaserad programavbildning kan porteras för att köras i molnet, lokalt, på virtuella datorer eller direkt på fysiska datorer.
  • Resursstyrning: En container kan begränsa de fysiska resurser som den kan använda på värden.

Service Fabric-stöd för containrar

Service Fabric stöder distribution av Docker-containrar i Linux och Windows Server-containrar på Windows Server 2016 och senare, tillsammans med stöd för Hyper-V-isoleringsläge.

Containerkörningar som är kompatibla med ServiceFabric:

  • Linux: Docker
  • Windows:
    • Windows Server 2022: Mirantis Container Runtime
    • Windows Server 2019/2016: DockerEE

Docker-containrar i Linux

Docker tillhandahåller API:er för att skapa och hantera containrar ovanpå Linux-kernelcontainrar. Docker Hub tillhandahåller en central lagringsplats för att lagra och hämta containeravbildningar. En Linux-baserad självstudiekurs finns i Skapa ditt första Service Fabric-containerprogram i Linux.

Windows Server-containrar

Windows Server 2016 och senare tillhandahåller två olika typer av containrar som skiljer sig åt beroende på isoleringsnivå. Windows Server-containrar och Docker-containrar liknar varandra eftersom både har namnrymd och filsystemisolering, samtidigt som kerneln delas med värden som de körs på. I Linux har den här isoleringen traditionellt tillhandahållits av cgroups och namnrymder, och Windows Server-containrar beter sig på liknande sätt.

Windows-containrar med Hyper-V-stöd ger mer isolering och säkerhet eftersom ingen container delar operativsystemets kernel med någon annan container eller med värden. Med den här högre nivån av säkerhetsisolering är Hyper-V-aktiverade containrar inriktade på potentiellt fientliga scenarier med flera klientorganisationer. En Windows-baserad självstudiekurs finns i Skapa ditt första Service Fabric-containerprogram i Windows.

Följande bild visar de olika typerna av tillgängliga virtualiserings- och isoleringsnivåer. Service Fabric-plattform

Scenarier för att använda containrar

Här är några exempel där en container är ett bra val:

  • IIS Lift and Shift: Du kan placera en befintlig ASP.NET MVC-app i en container i stället för att migrera den till ASP.NET Core. Dessa ASP.NET MVC-appar är beroende av Internet Information Services (IIS). Du kan paketera dessa program i containeravbildningar från den förskapade IIS-avbildningen och distribuera dem med Service Fabric. Mer information om Windows-containrar finns i Containeravbildningar på Windows Server .

  • Blanda containrar och Service Fabric-mikrotjänster: Använd en befintlig containeravbildning för en del av ditt program. Du kan till exempel använda NGINX-containern för webbklientdelen för ditt program och tillståndskänsliga tjänster för den mer intensiva serverdelsberäkningen.

  • Minska effekten av "bullriga grannar"-tjänster: Du kan använda resursstyrningsförmågan för containrar för att begränsa de resurser som en tjänst använder på en värd. Om tjänster kan förbruka många resurser och påverka andras prestanda (till exempel en tidskrävande, frågeliknande åtgärd) bör du överväga att placera dessa tjänster i containrar som har resursstyrning.

Anteckning

Ett Service Fabric-kluster är en enskild klientorganisation och värdbaserade program anses vara betrodda. Om du överväger att vara värd för ej betrodda program kan du läsa Värd för ej betrodda program i ett Service Fabric-kluster.

Service Fabric tillhandahåller en programmodell där en container representerar en programvärd där flera tjänstrepliker placeras. Service Fabric stöder också ett körbart gästscenario där du inte använder de inbyggda Service Fabric-programmeringsmodellerna, utan i stället paketera ett befintligt program som skrivits med valfritt språk eller ramverk i en container. Det här scenariot är det vanliga användningsfallet för containrar.

Du kan också köra Service Fabric-tjänster i en container. Stöd för att köra Service Fabric-tjänster i containrar är för närvarande begränsat.

Service Fabric innehåller flera containerfunktioner som hjälper dig att skapa program som består av containerbaserade mikrotjänster, till exempel:

  • Distribution och aktivering av containeravbildningar.
  • Resursstyrning inklusive inställning av resursvärden som standard i Azure-kluster.
  • Autentisering av lagringsplats.
  • Containerport som värd för portmappning.
  • Identifiering och kommunikation mellan containrar.
  • Möjlighet att konfigurera och ange miljövariabler.
  • Möjlighet att ange säkerhetsautentiseringsuppgifter för containern.
  • Ett val av olika nätverkslägen för containrar.

En omfattande översikt över containerstöd i Azure, till exempel hur du skapar ett Kubernetes-kluster med Azure Kubernetes Service, hur du skapar ett privat Docker-register i Azure Container Registry med mera finns i Azure for Containers.

Nästa steg

I den här artikeln har du lärt dig mer om stödet som Service Fabric tillhandahåller för att köra containrar. Därefter går vi igenom exempel på var och en av funktionerna för att visa hur du använder dem.

Skapa din första Service Fabric-containerapp i Linux
Skapa din första Service Fabric-containerapp i Windows
Läs mer om Windows-containrar